private void UcHorarioOnOnAceptarModal() { try { Session["HorariosSubRoles"] = Session["HorariosSubRoles"] ?? new List <HorarioSubGrupo>(); foreach (RepeaterItem item in ucHorario.HorariosSubRol) { Label lblIdSubRol = (Label)item.FindControl("lblIdSubRol"); ((List <HorarioSubGrupo>)Session["HorariosSubRoles"]).RemoveAll(w => w.IdSubGrupoUsuario == Convert.ToInt32(lblIdSubRol.Text)); } foreach (RepeaterItem item in ucHorario.HorariosSubRol) { Label lblIdSubRol = (Label)item.FindControl("lblIdSubRol"); Label lblDia = (Label)item.FindControl("lblDia"); Label lblHoraInicio = (Label)item.FindControl("lblHoraInicio"); Label lblHorafin = (Label)item.FindControl("lblHoraFin"); HorarioSubGrupo dia = new HorarioSubGrupo { IdSubGrupoUsuario = Convert.ToInt32(lblIdSubRol.Text), Dia = Convert.ToInt32(lblDia.Text), HoraInicio = lblHoraInicio.Text, HoraFin = lblHorafin.Text }; ((List <HorarioSubGrupo>)Session["HorariosSubRoles"]).Add(dia); } ScriptManager.RegisterClientScriptBlock(Page, typeof(Page), "Script", "CierraPopup(\"#modalHorarios\");", true); } catch (Exception ex) { if (_lstError == null) { _lstError = new List <string>(); } _lstError.Add(ex.Message); Alerta = _lstError; } }
public void ActualizarGrupo(GrupoUsuario gpo, Dictionary <int, int> horarios, Dictionary <int, List <DiaFestivoSubGrupo> > diasDescanso) { DataBaseModelContext db = new DataBaseModelContext(); try { db.ContextOptions.LazyLoadingEnabled = true; gpo.Descripcion = gpo.Descripcion.Trim(); if (db.GrupoUsuario.Any(a => a.Descripcion == gpo.Descripcion && a.IdTipoGrupo == gpo.IdTipoGrupo && a.Id != gpo.Id && a.IdTipoUsuario == gpo.IdTipoUsuario)) { throw new Exception("Ya existe un Grupo con esta descripción"); } GrupoUsuario grupo = db.GrupoUsuario.SingleOrDefault(w => w.Id == gpo.Id); List <SubGrupoUsuario> sb = new List <SubGrupoUsuario>(); if (grupo != null) { grupo.Descripcion = gpo.Descripcion.Trim(); #region Manejo de Horarios if (horarios != null && horarios.Count > 0) { foreach (KeyValuePair <int, int> horario in horarios) { var horariosGrupo = from hsg in db.HorarioSubGrupo join sbgu in db.SubGrupoUsuario on hsg.IdSubGrupoUsuario equals sbgu.Id where sbgu.IdGrupoUsuario == grupo.Id select hsg; List <HorarioSubGrupo> lstHorarioSgpoEliminar = horariosGrupo.ToList(); foreach (HorarioSubGrupo horarioDbDelete in lstHorarioSgpoEliminar) { db.HorarioSubGrupo.DeleteObject(horarioDbDelete); } List <HorarioSubGrupo> lstHorarioGpo = new List <HorarioSubGrupo>(); List <HorarioDetalle> detalle = db.HorarioDetalle.Where(w => w.IdHorario == horario.Value).ToList(); foreach (HorarioDetalle horarioDetalle in detalle) { HorarioSubGrupo horarioGpo = new HorarioSubGrupo { IdHorario = horario.Value, IdSubGrupoUsuario = horario.Key, Dia = horarioDetalle.Dia, HoraInicio = horarioDetalle.HoraInicio, HoraFin = horarioDetalle.HoraFin }; lstHorarioGpo.Add(horarioGpo); } SubGrupoUsuario subGrupo = new SubGrupoUsuario { Id = grupo.SubGrupoUsuario.FirstOrDefault(f => f.IdSubRol == horario.Key) != null?grupo.SubGrupoUsuario.First(f => f.IdSubRol == horario.Key).Id : 0, IdGrupoUsuario = grupo.Id, IdSubRol = horario.Key, Habilitado = true }; subGrupo.HorarioSubGrupo = subGrupo.HorarioSubGrupo ?? new List <HorarioSubGrupo>(); subGrupo.DiaFestivoSubGrupo = subGrupo.DiaFestivoSubGrupo ?? new List <DiaFestivoSubGrupo>(); subGrupo.HorarioSubGrupo.AddRange(lstHorarioGpo); List <DiaFestivoSubGrupo> diasDb = db.DiaFestivoSubGrupo.Where(w => w.IdSubGrupoUsuario == subGrupo.Id).ToList(); foreach (DiaFestivoSubGrupo festivoSubGrupo in diasDb) { db.DiaFestivoSubGrupo.DeleteObject(festivoSubGrupo); } List <DiaFestivoSubGrupo> lstDiasDescanso = diasDescanso.SingleOrDefault(w => w.Key == horario.Key).Value; if (lstDiasDescanso != null) { foreach (DiaFestivoSubGrupo dia in lstDiasDescanso) { dia.IdSubGrupoUsuario = horario.Key; } subGrupo.DiaFestivoSubGrupo.AddRange(lstDiasDescanso); } if (grupo.SubGrupoUsuario == null) { grupo.SubGrupoUsuario = new List <SubGrupoUsuario>(); } if (grupo.SubGrupoUsuario.SingleOrDefault(s => s.IdGrupoUsuario == subGrupo.IdGrupoUsuario && s.IdSubRol == subGrupo.IdSubRol) == null) { grupo.SubGrupoUsuario.Add(subGrupo); } else { grupo.SubGrupoUsuario.SingleOrDefault(s => s.IdGrupoUsuario == subGrupo.IdGrupoUsuario && s.IdSubRol == subGrupo.IdSubRol).HorarioSubGrupo = subGrupo.HorarioSubGrupo; } if (grupo.SubGrupoUsuario.SingleOrDefault(s => s.IdGrupoUsuario == subGrupo.IdGrupoUsuario && s.IdSubRol == subGrupo.IdSubRol) == null) { grupo.SubGrupoUsuario.Add(subGrupo); } else { grupo.SubGrupoUsuario.SingleOrDefault(s => s.IdGrupoUsuario == subGrupo.IdGrupoUsuario && s.IdSubRol == subGrupo.IdSubRol).DiaFestivoSubGrupo = subGrupo.DiaFestivoSubGrupo; } //sb.Add(subGrupo); } } #endregion Manejo de Horarios grupo.TieneSupervisor = grupo.SubGrupoUsuario.Any(a => a.IdSubRol == (int)BusinessVariables.EnumSubRoles.Supervisor); #region Manejo de politicas List <EstatusTicketSubRolGeneral> lstEliminarPoliticaEstatus = db.EstatusTicketSubRolGeneral.Where(w => w.IdGrupoUsuario == grupo.Id).ToList(); List <EstatusAsignacionSubRolGeneral> lstEliminarPoliticaEstatusAsignacion = db.EstatusAsignacionSubRolGeneral.Where(w => w.IdGrupoUsuario == grupo.Id).ToList(); foreach (EstatusTicketSubRolGeneral politicaEstatus in lstEliminarPoliticaEstatus) { db.EstatusTicketSubRolGeneral.DeleteObject(politicaEstatus); } foreach (EstatusAsignacionSubRolGeneral politicaAsignacion in lstEliminarPoliticaEstatusAsignacion) { db.EstatusAsignacionSubRolGeneral.DeleteObject(politicaAsignacion); } grupo.EstatusTicketSubRolGeneral = GeneraEstatusGrupoDefault(grupo); grupo.EstatusAsignacionSubRolGeneral = GeneraEstatusAsignacionGrupoDefault(grupo); #endregion Manejo de politicas if (grupo.IdTipoGrupo == (int)BusinessVariables.EnumTiposGrupos.AgenteUniversal) { grupo.LevantaTicket = gpo.LevantaTicket; grupo.RecadoTicket = gpo.RecadoTicket; } } db.SaveChanges(); } catch (Exception ex) { throw new Exception(ex.Message); } finally { db.Dispose(); } }
public void GuardarGrupoUsuario(GrupoUsuario grupoUsuario, Dictionary <int, int> horarios, Dictionary <int, List <DiaFestivoSubGrupo> > diasDescanso) { DataBaseModelContext db = new DataBaseModelContext(); try { grupoUsuario.Descripcion = grupoUsuario.Descripcion.Trim(); if (db.GrupoUsuario.Any(a => a.Descripcion == grupoUsuario.Descripcion && a.IdTipoGrupo == grupoUsuario.IdTipoGrupo && a.IdTipoUsuario == grupoUsuario.IdTipoUsuario)) { throw new Exception("Ya existe un Grupo con esta descripcion"); } grupoUsuario.SubGrupoUsuario = new List <SubGrupoUsuario>(); foreach (KeyValuePair <int, int> horario in horarios) { List <HorarioSubGrupo> lstHorarioGpo = new List <HorarioSubGrupo>(); List <HorarioDetalle> detalle = db.HorarioDetalle.Where(w => w.IdHorario == horario.Value).ToList(); foreach (HorarioDetalle horarioDetalle in detalle) { HorarioSubGrupo horarioGpo = new HorarioSubGrupo { IdHorario = horario.Value, IdSubGrupoUsuario = horario.Key, Dia = horarioDetalle.Dia, HoraInicio = horarioDetalle.HoraInicio, HoraFin = horarioDetalle.HoraFin }; lstHorarioGpo.Add(horarioGpo); } SubGrupoUsuario subGrupo = new SubGrupoUsuario(); subGrupo.IdSubRol = horario.Key; subGrupo.Habilitado = true; subGrupo.HorarioSubGrupo = subGrupo.HorarioSubGrupo ?? new List <HorarioSubGrupo>(); subGrupo.DiaFestivoSubGrupo = subGrupo.DiaFestivoSubGrupo ?? new List <DiaFestivoSubGrupo>(); subGrupo.HorarioSubGrupo.AddRange(lstHorarioGpo); List <DiaFestivoSubGrupo> lstDiasDescanso = diasDescanso.SingleOrDefault(w => w.Key == horario.Key).Value; if (lstDiasDescanso != null) { foreach (DiaFestivoSubGrupo dia in lstDiasDescanso) { dia.IdSubGrupoUsuario = horario.Key; } subGrupo.DiaFestivoSubGrupo.AddRange(lstDiasDescanso); } grupoUsuario.SubGrupoUsuario.Add(subGrupo); } db.ContextOptions.ProxyCreationEnabled = _proxy; //TODO: Cambiar habilitado por el que viene embebido grupoUsuario.Habilitado = true; grupoUsuario.TieneSupervisor = grupoUsuario.SubGrupoUsuario.Any(a => a.IdSubRol == (int)BusinessVariables.EnumSubRoles.Supervisor); if (grupoUsuario.Id == 0) { grupoUsuario.EstatusTicketSubRolGeneral = GeneraEstatusGrupoDefault(grupoUsuario); grupoUsuario.EstatusAsignacionSubRolGeneral = GeneraEstatusAsignacionGrupoDefault(grupoUsuario); db.GrupoUsuario.AddObject(grupoUsuario); } db.SaveChanges(); } catch (Exception ex) { throw new Exception(ex.Message); } finally { db.Dispose(); } }