<?php
namespace Incoviba\Controller;

use Incoviba\Common\Implement\Exception\EmptyResult;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Incoviba\Repository;
use Incoviba\Model;

class Provincias
{
    public function comunas(ServerRequestInterface $request, ResponseInterface $response, Repository\Comuna $comunaRepository, int $provincia_id): ResponseInterface
    {
        $output = [
            'provincia_id' => $provincia_id,
            'comunas' => []
        ];
        try {
            $comunas = $comunaRepository->fetchByProvincia($provincia_id);
            usort($comunas, function(Model\Comuna $a, Model\Comuna $b) {
                return strcmp($a->descripcion, $b->descripcion);
            });
            $output['comunas'] = $comunas;
        } catch (EmptyResult) {}
        $response->getBody()->write(json_encode($output));
        return $response->withHeader('Content-Type', 'application/json');
    }
}
