<?php namespace Eae\Transformation\Transformer;

use League\Fractal;
use Lang;
use ListItem;
use Eae\Support\WaveGenerator;

class ListItemTransformer extends Fractal\TransformerAbstract
{
    protected $stripListItemsHtml;

    public function __construct($stripListItemsHtml = FALSE)
    {
        $this->stripListItemsHtml = $stripListItemsHtml;
    }

    public function transform(ListItem $listItem)
    {
        $description = $this->stripListItemsHtml ? strip_tags($listItem->list_item_description) : $listItem->list_item_description;

        $out = [
            'id'          => (int)$listItem->id,
            'title'       => $listItem->list_item_title,
            'subtitle'    => $listItem->list_item_subtitle,
            'description' => $description
        ];

        if ($listItem->list_item_audio) {
            $out['audio'] = $listItem->list_item_audio;
            $out['peaks'] = $this->_getPeaks($listItem->list_item_audio);
        }

        return $out;
    }

    private function _getPeaks($audioFile)
    {
        $waveGenerator = new WaveGenerator($audioFile);
        $peaks = $waveGenerator->getPeaksData();

        return $peaks;
    }
}
