public ActionResult ListHorarioDisponibles(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            HorarioDisponible horarioDisponible = db.HorariosDisponibles.Find(id);

            if (horarioDisponible == null)
            {
                return(HttpNotFound());
            }
            return(PartialView("_ListHorarioDisponibles", horarioDisponible));
        }
        public ActionResult Create([Bind(Include = "Id,Duracion,HoraInicio,CantidadTurnos,Mes,Dia, Precio")] HorarioViewModel horarioModels)
        {
            if (ModelState.IsValid)
            {
                //db.Horarios.Add(horarioModels);
                //db.SaveChanges();
                horarioModels.EspecialistaID = User.Identity.GetUserId();
                horarioModels.Estado         = EstadoHorario.Disponible;
                //Especialista usuario = db.Especialistas.Where(x => x.Id.Contains(horarioModels.EspecialistaID)).FirstOrDefault();
                List <DateTime> lstSundays = new List <DateTime>();

                int      intYear              = DateTime.Now.Year;
                int      intDaysThisMonth     = DateTime.DaysInMonth(intYear, (int)horarioModels.Mes /*intMonth*/);
                DateTime oBeginnngOfThisMonth = new DateTime(intYear, (int)horarioModels.Mes /*intMonth*/, 1);
                for (int i = 1; i < intDaysThisMonth + 1; i++)
                {
                    if (oBeginnngOfThisMonth.AddDays(i - 1).DayOfWeek == (DayOfWeek)Convert.ToInt32(horarioModels.Dia))
                    {
                        lstSundays.Add(new DateTime(intYear, (int)horarioModels.Mes /*intMonth*/, i));
                    }
                }

                foreach (DateTime dia in lstSundays)
                {
                    int      totalTurnos = horarioModels.CantidadTurnos;
                    DateTime ultimaHora  = DateTime.Now;
                    while (totalTurnos != 0)
                    {
                        HorarioDisponible horarioDisponible = new HorarioDisponible();
                        horarioDisponible.Dia       = dia;
                        horarioDisponible.HorarioId = horarioModels.IDHorario;
                        horarioDisponible.Precio    = horarioModels.Precio;
                        if (horarioModels.CantidadTurnos == totalTurnos)
                        {
                            horarioDisponible.HoraInicio = horarioModels.HoraInicio;
                            horarioDisponible.HoraFin    = horarioDisponible.HoraInicio.AddMinutes(horarioModels.Duracion);
                            totalTurnos -= 1;
                            ultimaHora   = horarioDisponible.HoraFin;
                        }
                        else
                        {
                            horarioDisponible.HoraInicio = ultimaHora;
                            horarioDisponible.HoraFin    = horarioDisponible.HoraInicio.AddMinutes(horarioModels.Duracion);
                            totalTurnos -= 1;
                            ultimaHora   = horarioDisponible.HoraFin;
                        }
                        horarioModels.HorariosDisponibles.Add(horarioDisponible);
                    }
                }

                var horario = new Horario
                {
                    Dia                 = horarioModels.Dia,
                    Duracion            = horarioModels.Duracion,
                    HoraInicio          = horarioModels.HoraInicio,
                    Estado              = horarioModels.Estado,
                    Mes                 = horarioModels.Mes,
                    HorariosDisponibles = horarioModels.HorariosDisponibles,
                    CantidadTurnos      = horarioModels.CantidadTurnos,
                    EspecialistaId      = horarioModels.EspecialistaID
                };

                db.Horarios.Add(horario);
                db.SaveChanges();
                return(RedirectToAction("MisHorarios", "Horario"));
            }
            return(RedirectToAction("MisHorarios", "Horario"));
        }