Exemplo n.º 1
0
        public ActionResult RegistrarAgendamento([Bind(Include = "IdAgendamento,DataAgendamento,HorarioAgendamento, IdUsuario, IdHemobanco")] Agendamento agendamento, int?hemobancos)
        {
            ViewBag.Hemobancos = new MultiSelectList(HemobancoDAO.ListarTodosHemobancos(), "IdHemobanco", "NomeFantasiaHemobanco");
            agendamento.HemobancoAgendamento = HemobancoDAO.BuscarHemobancoPorID(hemobancos);

            agendamento.UsuarioAgendamento = UsuarioDAO.BuscarUsuarioPorId(Sessao.retornarUsuario());

            int idade = DateTime.Today.Year - agendamento.UsuarioAgendamento.DataNascimentoUsuario.Year;

            if (agendamento.UsuarioAgendamento.PesoUsuario < 50)
            {
                ModelState.AddModelError("", "Seu peso é incompatível!");
            }
            else if (idade < 16 || idade > 69)
            {
                ModelState.AddModelError("", "Sua idade é incompatível!");
            }
            else if (agendamento.DataAgendamento < DateTime.Today)
            {
                ModelState.AddModelError("", "A data informada é inválida!");
            }

            Agendamento agendamentoPesq = new Agendamento();

            // Buscar último agendamento realizado
            agendamentoPesq = AgendamentoDAO.UltimoAgendamento(Sessao.retornarUsuario());

            if (agendamentoPesq != null)
            {
                // Data agendamento - última doação
                int dias = UsuarioDAO.CalculoDiasDoacao(agendamentoPesq.DataAgendamento, agendamento.DataAgendamento);

                if (dias > 0 && dias != 3)
                {
                    if (agendamento.UsuarioAgendamento.SexoUsuario.Equals("Feminino") && dias < 90)
                    {
                        ModelState.AddModelError("", "Sua última doação é inferior a 90 dias!");
                    }
                    else if (agendamento.UsuarioAgendamento.SexoUsuario.Equals("Masculino") && dias < 60)
                    {
                        ModelState.AddModelError("", "Sua última doação é inferior a 60 dias!");
                    }
                }
            }

            if (ModelState.IsValid)
            {
                if (AgendamentoDAO.BuscarAgendamentoIgual(agendamento) == false)
                {
                    if (AgendamentoDAO.CadastrarAgendamento(agendamento))
                    {
                        return(RedirectToAction("Agendamentos", "Usuario"));
                    }
                    ModelState.AddModelError("", "Erro ao registrar agendamento!");
                    return(View(agendamento));
                }
                ModelState.AddModelError("", "Esse horário não está disponível!");
                return(View(agendamento));
            }
            return(View(agendamento));
        }