<?php

namespace App\Http\Controllers\Api\V1\Crud;

use App\District;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\StoreDistrictsRequest;
use App\Http\Requests\Admin\UpdateDistrictsRequest;

class DiscrictsController extends Controller
{
    public function index()
    {
        return District::all();
    }

    public function districtOfLviv(Request $request)
    {
        return District::query()
            ->leftJoin('cities as c', 'districts.city_id', '=', 'c.id')
            ->where('c.code', 'lviv')
            ->whereNull('districts.deleted_at')
            ->select('districts.*')
            ->get();
    }

    public function districtsOfCity(Request $request)
    {
        $cityId = $request->request->get('city_id');
        if ($cityId) {
            return District::query()
                ->where('city_id', $cityId)
                ->whereNull('deleted_at')
                ->get();
        }

        return new JsonResponse([
            []
        ]);
    }

    public function show($id)
    {
        return District::findOrFail($id);
    }

    public function update(UpdateDistrictsRequest $request, $id)
    {
        $discrict = District::findOrFail($id);
        $discrict->update($request->all());


        return $discrict;
    }

    public function store(StoreDistrictsRequest $request)
    {
        $discrict = District::create($request->all());


        return $discrict;
    }

    public function destroy($id)
    {
        $discrict = District::findOrFail($id);
        $discrict->delete();
        return '';
    }
}
