<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Http\Requests\Api\PromotionIndexRequest;
use App\Http\Requests\Api\PromotionRequest;
use App\Http\Resources\PromotionCollection;
use App\Http\Resources\ResidentialComplexCollection;
use App\Promotion;
use App\Repository\DistrictRepository;
use App\Repository\PromotionRepository;
use App\Repository\ResidentialComplexRepository;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class PromotionController extends Controller
{
    /**
     * @var PromotionRepository
     */
    public $promotionRepository;

    public function __construct(
        PromotionRepository $promotionRepository
    ) {
        $this->promotionRepository = $promotionRepository;
    }

    public function promotions(PromotionRequest $request)
    {
        $parameters = $request->all();
        $count = $request->input('count') ?  $request->input('count') : 3;
        $promotions = $this->promotionRepository->listOfPromotion($count, $parameters);

        return [
            'data' => new PromotionCollection($promotions),
            'count' => Promotion::all()->count()
        ];
    }

    public function index(PromotionIndexRequest $request)
    {
        $page = $request->input('page');
        $regionCode = $request->input('code');
        $parameters = [
          'district_page' => $page,
          'district_code' => $regionCode
        ];

        $promotions = $this->promotionRepository->find($parameters);
        unset($parameters['district_page']);
        $promotionCount = $this->promotionRepository->find($parameters)->count();

        return [
            'data' => new PromotionCollection($promotions),
            'count' => $promotionCount
        ];
    }
}
