Example #1
0
        /// <summary>
        /// Contrata um nutricionista
        /// </summary>
        /// <param name="pContrato">Contrato a ser incluido</param>
        public void ContratarNutricionista(Entidades.Contrato.Contrato pContrato)
        {
            if (pContrato == null)
            {
                throw new ArgumentException("Os dados do contrato são obrigatórios.");
            }
            if (pContrato.DataInicio < Constantes.DateTimeNow())
            {
                throw new ArgumentException("Data/hora de início não pode ser menor que o dia/hora atual");
            }
            if (pContrato.DataTermino < Constantes.DateTimeNow())
            {
                throw new ArgumentException("Data/hora de término não pode ser menor que o dia atual");
            }
            if (pContrato.DataInicio > pContrato.DataTermino)
            {
                throw new ArgumentException("A data de início não pode ser maior que a data de término");
            }
            if (pContrato.DataInicio == pContrato.DataTermino && pContrato.DataInicio.TimeOfDay > pContrato.DataTermino.TimeOfDay)
            {
                throw new ArgumentException("O horário de início não pode ser maior que o horário de término");
            }
            if (pContrato.DataInicio == pContrato.DataTermino && pContrato.DataTermino.TimeOfDay == pContrato.DataTermino.TimeOfDay)
            {
                throw new ArgumentException("O horário de início e término não podem ser iguais");
            }

            if (pContrato.IdNutricionista <= 0)
            {
                throw new ArgumentException("O nutricionista é obrigatório");
            }
            if (pContrato.IdUsuario <= 0)
            {
                throw new ArgumentException("O paciente é obrigatório");
            }
            if (pContrato.Status != Enumerados.Contrato.StatusContratoEnum.PendenteAceitacaoNutricionista)
            {
                throw new ArgumentException($"O status do cadastrado do contrato deve ser {Enumerados.Contrato.StatusContratoEnum.PendenteAceitacaoNutricionista.GetDescription()}");
            }

            if (_ContratoRepository.VerificarContratoExistenteNaData(pContrato.DataInicio, pContrato.DataTermino, pContrato.IdUsuario))
            {
                throw new Exception($"Você já possui uma consulta entre o dia/horário {pContrato.DataInicio.ToString(Constantes.MascaraDataHora)} até {pContrato.DataTermino.ToString(Constantes.MascaraDataHora)}. Não foi possível realizar o agendamento.");
            }

            pContrato.DataCadastro = Constantes.DateTimeNow();

            _ContratoRepository.ContratarNutricionista(pContrato);
        }
        /// <summary>
        /// Contrata um nutricionista
        /// </summary>
        /// <param name="pContrato">Contrato a ser cadastrado</param>
        public void ContratarNutricionista(Entidades.Contrato.Contrato pContrato)
        {
            if (pContrato == null)
            {
                throw new ArgumentException("O contrato é obrigatório.");
            }
            if (pContrato.UF == UnidadeFederacaoEnum.NaoDefinido)
            {
                throw new ArgumentException("Unidade de federação é obrigatório.");
            }
            new Entidades.Nutricionista.Endereco(pContrato.IdUsuario,
                                                 pContrato.Logradouro,
                                                 pContrato.Bairro,
                                                 pContrato.Cidade,
                                                 pContrato.CEP,
                                                 pContrato.UF);

            _UnitOfWork.Executar(_UnitOfWork.MontaInsertPorAttributo(pContrato).ToString());
        }