<?php

namespace App\Controllers;


use App\DAO\Filter\QueryFilterTranslator;
use App\DAO\Order\QueryOrder;
use App\Services\AgendamentoService;
use App\Services\AgendaService;
use App\Services\ConsultaService;
use App\Services\DashboardService;
use App\Services\ServiceResponse\ServiceResponseInterface;
use App\Utils\Collections\QueryFilterCollection;
use App\Utils\Collections\QueryOrderCollection;
use App\Validations\ImportacaoValidation;
use CodeIgniter\HTTP\Response;
use CodeIgniter\HTTP\ResponseInterface;

class ImportacaoController extends BaseController
{
    public function registerImportacao () {

        $data_post = $this->getDataPost();

        // cria agenda
        $agenda = $data_post["agenda"];
        $agenda_service_response = (new AgendaService())->registerAgenda($agenda);
        $agenda_service_response_data = $agenda_service_response->getData();
        $agenda_id = $agenda_service_response_data["id_agenda"];

        if (!$agenda_id) {
            return $this->response->setJSON([
                'message' => 'Informe os dados corretamente.',
//                'errors' => $this->validation->getErrors()
            ]);
        }


        // cria agendamento
        $agendamento = $data_post["agendamento"];
        $agendamento["id_agenda"] = $agenda_id;
        $agendamento["id_procedimento"] = 1;
        $agendamento_service_response = (new AgendamentoService())->registerAgendamento($agendamento);
        $agendamento_service_response_data = $agendamento_service_response->getData();
        $agendamento_id = $agendamento_service_response_data["id_agendamento"];
        if (!$agendamento_id) {
            return $this->response->setJSON([
                'message' => 'Informe os dados corretamente.',
//                'errors' => $this->validation->getErrors()
            ]);
        }

        // cria consulta
        $consulta = $data_post["consulta"];
        $consulta["id_formulario"] = 1;
        $consulta["id_agendamento"] = $agendamento_id;
        $consulta["titulo"] = "Consulta importada";
        $consulta["descricao"] = "Consulta importada";

        $consulta_service_response = (new ConsultaService())->registerConsulta($consulta);
        $consulta_id = $consulta_service_response->getData()["consulta_id"];
        if (!$consulta_id) {
            return $this->response->setJSON([
                'message' => 'Informe os dados corretamente.',
//                'errors' => $this->validation->getErrors()
            ]);
        }

        $response_messages = [
            ServiceResponseInterface::DATABASE_CONNECTION_ERROR => [
                'code' => ResponseInterface::HTTP_INTERNAL_SERVER_ERROR,
                'message' => 'Erro de conexão com o banco de dados.'
            ],
            ServiceResponseInterface::SUCESS => [
                'code' => ResponseInterface::HTTP_OK,
                'message' => 'O paciente foi agendado com sucesso.'
            ],
            ServiceResponseInterface::VALIDATION_PARAMS_ERROR => [
                'code' => ResponseInterface::HTTP_BAD_REQUEST,
                'message' => 'Informe os dados corretamente.'
            ],
        ];
        return $this->getResponse($consulta_service_response, $response_messages);
    }

}