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);
        }