Esempio n. 1
0
        public Tuple <DateTime, Guid> ObterHorarioAtendimentoDoDia(EnumDia dia, Guid idEspecialidade)
        {
            var dataReferencia = DateTime.Now;

            dataReferencia = dataReferencia.AddDays(CalcularProximoDia((int)dataReferencia.DayOfWeek + 1, (int)dia));

            var horariosAtendimento = _horarioAtendimentoRepository.ListarComConsulta(dia, idEspecialidade);

            bool dataEncontrada       = false;
            Guid idHorarioAtendimento = new Guid();

            while (!dataEncontrada)
            {
                foreach (var horarioAtendimento in horariosAtendimento)
                {
                    var consultas = horarioAtendimento.Consultas.Where(x => x.DataConsulta == dataReferencia);
                    if (consultas.Count() < DomainStaticValues.MAXIMO_CONSULTAS_HORARIO)
                    {
                        dataEncontrada       = true;
                        idHorarioAtendimento = horarioAtendimento.Id.Value;
                        break;
                    }

                    dataReferencia = dataReferencia.AddDays(7);
                }
            }

            var resultado = new Tuple <DateTime, Guid>(dataReferencia, idHorarioAtendimento);

            return(resultado);
        }