<?php

namespace App\Http\Resources;

use App\District;
use Illuminate\Http\Resources\Json\ResourceCollection;

class CityDistrictCollection extends ResourceCollection
{
    /**
     * @var array
     */
    private $parameters;

    /**
     * Create a new resource instance.
     *
     * @param  mixed $resource
     * @param array $parameters
     */
    public function __construct($resource, $parameters = null)
    {
        parent::__construct($resource);
        $this->resource = $resource;
        $this->parameters = is_array($parameters) ? $parameters : [];
    }

    /**
     * Transform the resource collection into an array.
     *
     * @param  \Illuminate\Http\Request $request
     * @return array
     */
    public function toArray($request)
    {
        $result = [];
        /** @var \App\City $city */
        foreach ($this->collection as $key => $city) {
            $result[$key] = [
                'id' => $city->id ? $city->id : '',
                'name' => $city->name ? $city->name : "",
                'code' => $city->code ? $city->code : '',
            ];

            $districts = District::query()
                ->whereNull('deleted_at')
                ->where('city_id', $city->id)
                ->get();

            $result[$key]['districts'] =
                new DistrictCollection($districts);
        }

        return $result;
    }
}
