<?php

namespace App\Http\Controllers\Frontend;

use App\Facades\LocalizationService;
use App\Http\Controllers\Controller;
use App\Http\Requests\Localization\CityRequest;
use App\Http\Requests\Localization\CountryRequest;
use App\Http\Requests\Localization\StateRequest;
use App\Http\Resources\CityResource;
use App\Http\Resources\CountryResource;
use App\Http\Resources\StateResource;

class LocalizationController extends Controller
{
    /**
     * Search countries
     *
     * @param CountryRequest $request
     * @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
     */
    public function searchCountries(CountryRequest $request)
    {
        $data = $request->validated();

        $filter = $data['filter'] ?? [];
        $showSpecialCountriesFirst = $data['showSpecialCountriesFirst'] ?? false;

        $countries = LocalizationService::getCountries($filter, $data['itemsPerPage'] ?? 20, $showSpecialCountriesFirst);

        return CountryResource::collection($countries);
    }

    /**
     * Search states
     *
     * @param StateRequest $request
     * @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
     */
    public function searchStates(StateRequest $request)
    {
        $data = $request->validated();

        $filter = $data['filter'] ?? [];

        $states = LocalizationService::getStates($filter, $data['itemsPerPage'] ?? 20);

        return StateResource::collection($states);
    }

    /**
     * Search cities
     *
     * @param CityRequest $request
     * @return \Illuminate\Http\Resources\Json\AnonymousResourceCollection
     */
    public function searchCities(CityRequest $request)
    {
        $data = $request->validated();

        $filter = $data['filter'] ?? [];

        $states = LocalizationService::getCities($filter, $data['itemsPerPage'] ?? 20);

        return CityResource::collection($states);
    }
}
