<?php

namespace Utils;

use Utils\Entity\EspecialidadeEntity;
use Utils\Entity\MedicoEntity;
use Utils\Model\ConsultaModel;

/**
 * @author Gabriel <anhaia.gabriel@email.com>
 */
class ConsultaRepository extends Repository
{

    public function __construct($model = null)
    {
        if (!empty($model)) {
            $this->model = $model;
        } else {
            $this->model = new ConsultaModel();
        }
    }

    /**
     * @param null|MedicoEntity $medico
     * @param null|EspecialidadeEntity $especialidade
     * @param \DateTime $data
     *
     * @return bool
     *
     * @throws \Exception
     */
    public function buscarConsulta(
        MedicoEntity $medico = null,
        EspecialidadeEntity $especialidade = null,
        \DateTime $data
    ) {
        if (empty($medico) && empty($especialidade)) {
            throw new \Exception('Nao informado médico nem especialidade');
        }

        return $this->model->buscarConsulta($medico = null, $especialidade = null, $data);
    }

    public function marcarConsulta(
        MedicoEntity $medico = null,
        EspecialidadeEntity $especialidade = null,
        \DateTime $data
    ) {
        if (empty($medico) && empty($especialidade)) {
            throw new \Exception('Nao informado médico nem especialidade');
        }

        return $this->model->marcarConsulta($medico = null, $especialidade = null, $data);
    }

}