<?php
namespace App\Http\Transformers;
use Illuminate\Pagination\LengthAwarePaginator;

/**
 * Class SelectlistTransformer
 *
 * This handles the standardized formatting of the API response we need to provide for
 * the rich (text and images) Select2 javascript.
 *
 * @package App\Http\Transformers
 * @author [A. Gianotto] [<snipe@snipe.net>]
 * @since [v4.0.16]
 * @return \Illuminate\Http\Response
 */

class SelectlistTransformer
{

    public function transformSelectlist (LengthAwarePaginator $select_items)
    {
        $items_array=[];

        // Loop through the paginated collection to set the array values
        foreach ($select_items as $select_item) {
            $items_array[]= [
                'id' => (int) $select_item->id,
                'text' => ($select_item->use_text) ? e($select_item->use_text) : e($select_item->name),
                'image' => ($select_item->use_image) ?  e($select_item->use_image) : null,

            ];

        }

        // This is weird and awful, but the only way I can find to allow the user to
        // clear the selection - @snipe
        if (count($items_array) > 0) {
            array_unshift($items_array, ['id' =>'', 'text'=> trans('general.clear_selection')]);
        }

        $results = [
            'items' => $items_array,
            'pagination' =>
                [
                    'more' => ($select_items->currentPage() >= $select_items->lastPage()) ? false : true,
                    'per_page' => $select_items->perPage()
                ],
            'total_count' => $select_items->total(),
            'page' => $select_items->currentPage(),
            'page_count' => $select_items->lastPage()
        ];

        return $results;

    }

}
