public ActionResult Create(HorarioViewModel Omodelo)
        {
            var OMensaje = new Mensaje();

            try
            {
                using (RELOJBIOEntities wdb = new RELOJBIOEntities())
                {
                    var OUltimoHorario = wdb.Shift.OrderByDescending(a => a.ShiftID).FirstOrDefault();
                    int wId            = OUltimoHorario.ShiftID + 1;

                    var OHorario = new Shift
                    {
                        ShiftID       = wId,
                        Code          = Omodelo.Code,
                        Name          = Omodelo.Name,
                        ShiftTypeID   = Omodelo.ShiftTypeID,
                        Color         = Omodelo.Color,
                        Flexible      = Omodelo.Flexible,
                        Start         = Omodelo.Start,
                        End           = Omodelo.End,
                        RangeStartIni = Omodelo.RangeStartIni,
                        RangeStartFin = Omodelo.RangeStartFin,
                        RangeEndIni   = Omodelo.RangeEndIni,
                        RangeEndFin   = Omodelo.RangeEndFin,
                        AllowBefore   = Omodelo.AllowBefore,
                        BeforeStart   = Omodelo.BeforeStart,
                        AfterEnd      = Omodelo.AfterEnd,
                        AllowAfter    = Omodelo.AllowAfter,
                        Late          = Omodelo.Late,
                        LateCome      = Omodelo.LateCome,
                        Early         = Omodelo.Early,
                        EarlyOut      = Omodelo.EarlyOut,
                        EarlyCome     = Omodelo.EarlyCome,
                    };
                    wdb.Shift.Add(OHorario);
                    wdb.SaveChanges();

                    foreach (var item in Omodelo.ListDescansoCodigoSeleccionados)
                    {
                        var OExiste = wdb.BreakShift.Where(a => a.ShiftID == OHorario.ShiftID && a.BreakID == item).FirstOrDefault();
                        if (OExiste == null)
                        {
                            var OUltimoHorarioDescanso = wdb.BreakShift.OrderByDescending(a => a.BreakShiftID).FirstOrDefault();
                            int wID = OUltimoHorarioDescanso.BreakShiftID + 1;

                            var OHorarioDescanso = new BreakShift
                            {
                                BreakShiftID = wID,
                                ShiftID      = wId,
                                BreakID      = item
                            };
                            wdb.BreakShift.Add(OHorarioDescanso);
                            wdb.SaveChanges();
                        }
                    }


                    OMensaje.Tipo      = "Exito";
                    OMensaje.Msg       = "Horario Creado con exito";
                    Session["Mensaje"] = OMensaje;

                    return(RedirectToAction("Index", "Horario"));
                }
            }
            catch (DbEntityValidationException e)
            {
                var errorMessages    = e.EntityValidationErrors.SelectMany(x => x.ValidationErrors).Select(x => x.ErrorMessage);
                var fullErrorMessage = string.Join("; ", errorMessages);

                var exceptionMessage = string.Concat(e.Message, " El error de validacion es: ", fullErrorMessage);

                OMensaje.Tipo      = "Error";
                OMensaje.Msg       = exceptionMessage;
                Session["Mensaje"] = OMensaje;

                return(View(Omodelo));
            }
        }
        public ActionResult Edit(HorarioViewModel Omodelo)
        {
            var OMensaje = new Mensaje();

            try
            {
                using (RELOJBIOEntities wdb = new RELOJBIOEntities())
                {
                    var OHorario = wdb.Shift.Where(a => a.ShiftID == Omodelo.ShiftID).FirstOrDefault();

                    OHorario.Code          = Omodelo.Code;
                    OHorario.Name          = Omodelo.Name;
                    OHorario.ShiftTypeID   = Omodelo.ShiftTypeID;
                    OHorario.Color         = Omodelo.Color;
                    OHorario.Flexible      = Omodelo.Flexible;
                    OHorario.Start         = Omodelo.Start;
                    OHorario.End           = Omodelo.End;
                    OHorario.RangeStartIni = Omodelo.RangeStartIni;
                    OHorario.RangeStartFin = Omodelo.RangeStartFin;
                    OHorario.RangeEndIni   = Omodelo.RangeEndIni;
                    OHorario.RangeEndFin   = Omodelo.RangeEndFin;
                    OHorario.AllowBefore   = Omodelo.AllowBefore;
                    OHorario.BeforeStart   = Omodelo.BeforeStart;
                    OHorario.AfterEnd      = Omodelo.AfterEnd;
                    OHorario.AllowAfter    = Omodelo.AllowAfter;
                    OHorario.Late          = Omodelo.Late;
                    OHorario.LateCome      = Omodelo.LateCome;
                    OHorario.Early         = Omodelo.Early;
                    OHorario.EarlyOut      = Omodelo.EarlyOut;
                    OHorario.EarlyCome     = Omodelo.EarlyCome;


                    wdb.Entry(OHorario).State = EntityState.Modified;
                    wdb.SaveChanges();

                    foreach (var item in Omodelo.ListDescansoCodigoSeleccionados)
                    {
                        var OExiste = wdb.BreakShift.Where(a => a.ShiftID == OHorario.ShiftID && a.BreakID == item).FirstOrDefault();
                        if (OExiste == null)
                        {
                            var OUltimoHorarioDescanso = wdb.BreakShift.OrderByDescending(a => a.BreakShiftID).FirstOrDefault();
                            int wID = OUltimoHorarioDescanso.BreakShiftID + 1;

                            var OHorarioDescanso = new BreakShift
                            {
                                BreakShiftID = wID,
                                ShiftID      = OHorario.ShiftID,
                                BreakID      = item
                            };
                            wdb.BreakShift.Add(OHorarioDescanso);
                            wdb.SaveChanges();
                        }
                    }

                    var ListEliminarDescansosHorarios = wdb.BreakShift.Where(a => a.ShiftID == Omodelo.ShiftID && !Omodelo.ListDescansoCodigoSeleccionados.Any(w => a.BreakID == w)).ToList();

                    foreach (var item in ListEliminarDescansosHorarios)
                    {
                        wdb.BreakShift.Remove(item);
                        wdb.SaveChanges();
                    }



                    OMensaje.Tipo      = "Exito";
                    OMensaje.Msg       = "El Horario Fue Modificado con exito";
                    Session["Mensaje"] = OMensaje;

                    return(RedirectToAction("Index", "Horario"));
                }
            }
            catch (DbEntityValidationException e)
            {
                var errorMessages    = e.EntityValidationErrors.SelectMany(x => x.ValidationErrors).Select(x => x.ErrorMessage);
                var fullErrorMessage = string.Join("; ", errorMessages);

                var exceptionMessage = string.Concat(e.Message, " El error de validacion es: ", fullErrorMessage);

                OMensaje.Tipo      = "Error";
                OMensaje.Msg       = exceptionMessage;
                Session["Mensaje"] = OMensaje;

                return(View(Omodelo));
            }
        }