<?php

namespace App\Http\Controllers;

use App\Http\Resources\SliderResource;
use Illuminate\Support\Facades\Cache;
use App\Indexer\SliderIndex;
use App\Slider;
use Illuminate\Http\Request;

class SliderController extends Controller
{
    const ITEM_PER_PAGE = 25;

    public function position($position = '')
    {
        $slider = Slider::isPublished()->where('position', $position)->orderBy('id', 'DESC')->first();
        if (!isset($slider)) return response()->json(['data' => null], 200);

        return new SliderResource($slider);
    }

    public function showPosition($position = '')
    {
        $slider = Cache::remember('slider_position_' . $position, (7*24*60*60), function() use ($position) {
            $list = SliderIndex::with('details')
                ->where('is_activated', true)
                ->where('position', $position)
                ->orderBy('id', 'DESC')
                ->first();
            return ['items' => $list, 'lastModify' => (gmdate('D, d M Y H:i:s') . ' GMT')];
        });

        return response()->json(['data' => $slider['items']], 200)->header('Last-Modified', $slider['lastModify']);
    }

    public function topPage(Request $request)
    {
        $slider = Slider::with('details')
            ->where('is_deleted', false)
            ->where('is_activated', true)
            ->where('position', 'top_page')
            ->orderBy('id', 'DESC')
            ->first();

        return response()->json(['data' => $slider], 200);
    }

}