private bool FuValidaAgenda(Horario model) { if (model.PerInicio.Date < DateTime.Now.Date) { ModelState.AddModelError("", "A data inicial não pode ser menor que hoje"); return false; } if (model.PerFim.Date < model.PerInicio.Date) { ModelState.AddModelError("", "A data final não pode ser menor que a data inicial"); return false; } if (model.TempoDescansoFinal < model.TempoDescansoInicial) { ModelState.AddModelError("", "O tempo de descanso final não pode ser menor que o tempo de descanso inicial"); return false; } if (model.TempoDescansoFinal <= model.TempoDescansoInicial) { ModelState.AddModelError("", "O tempo de descanso final não pode ser menor que o tempo de descanso inicial"); return false; } if (model.TempoDescansoInicial < model.HorarioIni) { ModelState.AddModelError("", "O tempo de descanso inicial não pode ser menor que o horário inicial"); return false; } var minCons = new TimeSpan(0, 0, 10, 0); if (model.TempoConsulta < minCons) { ModelState.AddModelError("", "O tempo da consulta deve ser igual ou superior a 10 minutos"); return false; } if (model.HorarioFim <= model.HorarioIni) { ModelState.AddModelError("", "O horário inicial não pode ser maior ou igual ao horário final"); return false; } if ( _unitOfWork.HorarioRepositorio.Get( m => m.MedicoUserId == model.MedicoUserId && model.PerInicio <= m.PerFim).Any()) { ModelState.AddModelError("", "Já existe uma agenda para o período informado"); return false; } return true; }
public ActionResult NovaAgenda(Horario model) { if (!FuValidaAgenda(model)) { return View(model); } model.MedicoUserId = _unitOfWork.UsuarioRepositorio.GetIdByUserName(User.Identity.Name); if (ModelState.IsValid) { try { _unitOfWork.HorarioRepositorio.Insert(model); _unitOfWork.Save(); Session.Add("Mensagem", "Agenda adiciondada com sucesso"); return RedirectToAction("NovaAgenda"); } catch (Exception) { ModelState.AddModelError("", "Não foi possível adicionar a nova agenda"); } finally { _unitOfWork.Dispose(); } } return View(model); }