예제 #1
0
        public IActionResult SelecionarData(int animalId, int vetId)
        {
            var veterinario = _veterinarioRepository.GetVetById(vetId).Result;
            var animal      = _animalRepository.GetAnimalById(animalId).Result;

            if (!AnimalChecado(animal))
            {
                return(RedirectToAction("Adicionar"));
            }
            else if (!VeterinarioChecado(veterinario))
            {
                return(RedirectToAction("SelecionarVeterinario", new { animalId = animalId }));
            }

            var           horariosPorVeterinario = _veterinarioHorarioRepository.VeterinarioHorariosById(vetId);
            List <string> diasDisponiveis        = new List <string>();

            /*
             * Funcionamento desse 'for'
             * O valor definido para esse 'for' é o dia atual, ele seguirá o loop até ter 14 dias depois do dia atual,
             * cada loop tera acréscimo de 1 dia.
             *
             * No primeiro 'if' ele verifica se o dia em questão não é um domingo
             *
             * No 'foreach' ele irá percorrer todos os horários do veterinário, para cada horário ele ira fazer uma requisição
             * no banco de dados, caso retorne nenhum valor, ele marca aquele dia como válido e quebra o foreach, caso retorne '1',
             * ele irá ir para o próximo loop do 'foreach'.
             */
            for (DateTime i = DateTime.Today; i < DateTime.Today.AddDays(14); i = i.AddDays(1))
            {
                if (i.DayOfWeek != DayOfWeek.Sunday)
                {
                    foreach (VeterinarioHorario horario in horariosPorVeterinario)
                    {
                        if (_consultaRepository.GetConsultaByDateAndVetAndTime(i.ToShortDateString(), vetId, horario.Horario.Hora).LongCount() == 0)
                        {
                            diasDisponiveis.Add(i.ToShortDateString());
                            break;
                        }
                    }
                }
            }

            if (diasDisponiveis.Count() == 0)
            {
                TempData["error"] = "Não foi encontrado nenhuma data disponível nos próximos 14 dias.";
                return(RedirectToAction("SelecionarVeterinario", new { animalId = animalId }));
            }

            var adminConsultaVM = new AdminConsultaVM
            {
                Veterinario     = veterinario,
                Animal          = animal,
                DiasDisponiveis = diasDisponiveis
            };

            return(View(adminConsultaVM));
        }
        private FormularioViewModel InstantiateFVM(string dataEscolhida, int veterinarioEscolhido)
        {
            var consultas           = _consultaRepository.GetConsultaByDateAndVet(dataEscolhida, veterinarioEscolhido);
            var veterinarioHorarios = _veterinarioHorarioRepository.VeterinarioHorariosById(veterinarioEscolhido);

            var user = GetUser().Result;

            var animais = user.Animais;

            var veterinario       = GetVeterinario(veterinarioEscolhido).Result;
            var horariosFiltrados = GetHorariosFiltrados(consultas, veterinarioHorarios);

            var formularioViewModel = new FormularioViewModel()
            {
                HorariosFiltrados = horariosFiltrados,
                Animais           = animais,
                Veterinario       = veterinario,
                VeterinarioId     = veterinario.VeterinarioId,
                DataConsulta      = dataEscolhida
            };

            return(formularioViewModel);
        }