<?php

namespace App\Http\Controllers;

use App\Http\Resources\ProductListResource;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;
use App\Product;

class ProductController extends Controller
{
    const ITEM_PER_PAGE = 25;

    public function index(Request $request)
    {
        $searchParams = $request->all();
        $limit = Arr::get($searchParams, 'limit', static::ITEM_PER_PAGE);
        $list = Product::select('id', 'name', 'slug', 'thumbnail', 'price', 'discount_amount', 'discount_price')
            ->isPublished()
            ->orderBy('id', 'DESC');

        return ProductListResource::collection($list->paginate($limit));
    }

    public function top(Request $request)
    {
        $searchParams = $request->all();
        $limit = Arr::get($searchParams, 'limit', static::ITEM_PER_PAGE);
        $list = Product::select('id', 'name', 'slug', 'thumbnail', 'price', 'discount_amount', 'discount_price')
            ->isPublished()
            ->orderBy('rating_avg', 'DESC')
            ->orderBy('id', 'DESC');

        return ProductListResource::collection($list->paginate($limit));
    }

    public function slug($slug = '')
    {
        $product = Product::select('id', 'name', 'slug', 'thumbnail', 'price', 'discount_amount', 'discount_price')
            ->isPublished()
            ->where('slug', $slug)
            ->first();

        return new ProductListResource($product);
    }


}
