<?php


namespace App\ViewModels\Agenda\AgendaMultipleRegistrationViewModel;


use App\Utils\Collections\GeneralCollection;
use App\Utils\Entity;
use DateInterval;
use DateTime;

class AgendaMultipleRegistrationViewModel extends Entity
{
    protected $id_medico;
    protected $id_unidade;
    protected $data_inicial;
    protected $data_final;
    protected $hora_inicio;
    protected $hora_fim;
    protected $id_tipo_procedimento;
    protected $tempo_atendimento;
    protected $dias_semana;
    protected $adicionado_por;

    public static function builder()
    {
        return new AgendaMultipleRegistrationViewModelBuilder;
    }

    /**
     * @return mixed
     */
    public function getIdUnidade()
    {
        return $this->id_unidade;
    }

    /**
     * @param mixed $id_unidade
     */
    public function setIdUnidade($id_unidade): void
    {
        $this->id_unidade = $id_unidade;
    }

    public function getIdMedico(): int
    {
        return $this->id_medico;
    }

    public function getDataInicial(): DateTime
    {
        return $this->data_inicial;
    }

    public function getDataFinal(): DateTime
    {
        return $this->data_final;
    }

    public function getHoraInicio(): DateTime
    {
        return $this->hora_inicio;
    }

    public function getHoraFim(): DateTime
    {
        return $this->hora_fim;
    }

    public function getTempoAtendimento(): DateInterval
    {
        return $this->tempo_atendimento;
    }

    public function getDiasSemana(): GeneralCollection
    {
        return $this->dias_semana;
    }

    public function getAdicionadoPor(): int
    {
        return $this->adicionado_por;
    }

    public function getIdTipoProcedimento(): int
    {
        return $this->id_tipo_procedimento;
    }

    public function setIdMedico(int $id_medico): void
    {
        $this->id_medico = $id_medico;
    }

    public function setDataInicial(DateTime $data_inicial): void
    {
        $this->data_inicial = $data_inicial;
    }

    public function setDataFinal(DateTime $data_final): void
    {
        $this->data_final = $data_final;
    }

    public function setHoraInicio(DateTime $hora_inicio): void
    {
        $this->hora_inicio = $hora_inicio;
    }

    public function setHoraFim(DateTime $hora_fim): void
    {
        $this->hora_fim = $hora_fim;
    }

    public function setTempoAtendimento(DateInterval $tempo_atendimento): void
    {
        $this->tempo_atendimento = $tempo_atendimento;
    }

    public function setDiasSemana(GeneralCollection $dias_semana): void
    {
        $this->dias_semana = $dias_semana;
    }

    public function setAdicionadoPor(int $adicionado_por): void
    {
        $this->adicionado_por = $adicionado_por;
    }

    public function setIdTipoProcedimento(int $id_tipo_procedimento): void
    {
        $this->id_tipo_procedimento = $id_tipo_procedimento;
    }
}