public List <HelperNotasOpcion> ObtenerNotasOpcion(int idUsuario, bool insertarSeleccion) { List <HelperNotasOpcion> result = new List <HelperNotasOpcion>(); DataBaseModelContext db = new DataBaseModelContext(); try { List <int> grupos = new BusinessGrupoUsuario().ObtenerGruposByIdUsuario(idUsuario, false).Select(s => s.Id).Distinct().ToList(); List <int> lstArboles = new BusinessArbolAcceso().ObtenerArbolesAccesoByGrupos(grupos).Select(s => s.Id).Distinct().ToList(); List <NotaOpcionGrupo> lstGeneral = db.NotaOpcionGrupo.Where(w => w.IdUsuario == idUsuario && lstArboles.Contains(w.IdArbolAcceso)).ToList(); foreach (NotaOpcionGrupo nota in lstGeneral) { db.LoadProperty(nota, "TipoNota"); result.Add(new HelperNotasOpcion { Id = nota.Id, IdTipoNota = nota.IdTipoNota, TipoNota = nota.TipoNota.Descripcion, IdArbol = nota.IdArbolAcceso, Nombre = nota.Nombre, Contenido = nota.Contenido }); } lstArboles = new BusinessArbolAcceso().ObtenerArbolesAccesoByIdUsuario(idUsuario).Select(s => s.Id).Distinct().ToList(); List <NotaOpcionUsuario> lstOpcion = db.NotaOpcionUsuario.Where(w => w.IdUsuario == idUsuario && lstArboles.Contains(w.IdArbolAcceso)).ToList(); foreach (NotaOpcionUsuario nota in lstOpcion) { db.LoadProperty(nota, "TipoNota"); result.Add(new HelperNotasOpcion { Id = nota.Id, IdTipoNota = nota.IdTipoNota, TipoNota = nota.TipoNota.Descripcion, IdArbol = nota.IdArbolAcceso, Nombre = nota.Nombre, Contenido = nota.Contenido }); } if (insertarSeleccion) { result.Insert(BusinessVariables.ComboBoxCatalogo.IndexSeleccione, new HelperNotasOpcion { Id = BusinessVariables.ComboBoxCatalogo.ValueSeleccione, Nombre = BusinessVariables.ComboBoxCatalogo.DescripcionSeleccione }); } } catch (Exception ex) { throw new Exception(ex.Message); } finally { db.Dispose(); } return(result); }
public Ticket CrearTicket(int idUsuario, int idArbol, List <HelperCampoMascaraCaptura> lstCaptura, bool campoRandom) { DataBaseModelContext db = new DataBaseModelContext(); Ticket result; try { Usuario usuario = new BusinessUsuarios().ObtenerUsuario(idUsuario); ArbolAcceso arbol = new BusinessArbolAcceso().ObtenerArbolAcceso(idArbol); Mascara mascara = new BusinessMascaras().ObtenerMascaraCaptura(arbol.InventarioArbolAcceso.First().IdMascara ?? 0); Encuesta encuesta = new BusinessEncuesta().ObtenerEncuestaById(arbol.InventarioArbolAcceso.First().IdEncuesta ?? 0); Sla sla = new BusinessSla().ObtenerSla(arbol.InventarioArbolAcceso.First().IdSla ?? 0); Ticket ticket = new Ticket { IdTipoUsuario = usuario.IdTipoUsuario, IdTipoArbolAcceso = arbol.IdTipoArbolAcceso, IdArbolAcceso = arbol.Id, IdImpacto = (int)arbol.IdImpacto, IdUsuario = usuario.Id, IdOrganizacion = usuario.IdOrganizacion, IdUbicacion = usuario.IdUbicacion, IdMascara = mascara.Id, IdEncuesta = encuesta.Id, //RespuestaEncuesta = new List<RespuestaEncuesta>(), IdEstatusTicket = (int)BusinessVariables.EnumeradoresKiiniNet.EnumEstatusTicket.Abierto, FechaHoraAlta = DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"), "yyyy-MM-dd HH:mm:ss:fff", CultureInfo.InvariantCulture), IdEstatusAsignacion = (int)BusinessVariables.EnumeradoresKiiniNet.EnumEstatusAsignacion.PorAsignar, Random = campoRandom, ClaveRegistro = GeneraCampoRandom() }; //ENCUESTA //ticket.RespuestaEncuesta.AddRange(encuesta.EncuestaPregunta.Select(pregunta => new RespuestaEncuesta { IdEncuesta = encuesta.Id, IdPregunta = pregunta.Id })); //GrupoUsuario USUARIO ticket.TicketGrupoUsuario = new List <TicketGrupoUsuario>(); foreach (GrupoUsuarioInventarioArbol grupoArbol in arbol.InventarioArbolAcceso.First().GrupoUsuarioInventarioArbol) { TicketGrupoUsuario grupo = new TicketGrupoUsuario { IdGrupoUsuario = grupoArbol.IdGrupoUsuario }; if (grupoArbol.IdSubGrupoUsuario != null) { grupo.IdSubGrupoUsuario = grupoArbol.IdSubGrupoUsuario; } ticket.TicketGrupoUsuario.Add(grupo); } //SLA ticket.SlaEstimadoTicket = new SlaEstimadoTicket { FechaInicio = DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"), "yyyy-MM-dd HH:mm:ss:fff", CultureInfo.InvariantCulture), Dias = sla.Dias, Horas = sla.Horas, Minutos = sla.Minutos, Segundos = sla.Segundos, FechaInicioProceso = DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"), "yyyy-MM-dd HH:mm:ss:fff", CultureInfo.InvariantCulture), TiempoHoraProceso = sla.TiempoHoraProceso, Terminado = false, SlaEstimadoTicketDetalle = new List <SlaEstimadoTicketDetalle>() }; List <HorarioSubGrupo> lstHorarioGrupo = new List <HorarioSubGrupo>(); List <DiaFestivoSubGrupo> lstDiasFestivosGrupo = new List <DiaFestivoSubGrupo>(); foreach (SubGrupoUsuario sGpoUsuario in ticket.TicketGrupoUsuario.SelectMany(tgrupoUsuario => db.GrupoUsuario.Where(w => w.Id == tgrupoUsuario.IdGrupoUsuario && w.IdTipoGrupo == (int)BusinessVariables.EnumTiposGrupos.ResponsableDeAtención).SelectMany(gpoUsuario => gpoUsuario.SubGrupoUsuario))) { lstHorarioGrupo.AddRange(db.HorarioSubGrupo.Where(w => w.IdSubGrupoUsuario == sGpoUsuario.Id).ToList()); lstDiasFestivosGrupo.AddRange(db.DiaFestivoSubGrupo.Where(w => w.IdSubGrupoUsuario == sGpoUsuario.Id)); } DateTime fechaTermino = TiempoGeneral(lstHorarioGrupo, ticket.SlaEstimadoTicket.TiempoHoraProceso); ticket.FechaHoraFinProceso = fechaTermino; ticket.SlaEstimadoTicket.FechaFinProceso = fechaTermino; ticket.SlaEstimadoTicket.FechaFin = fechaTermino; //SLA DETALLE ticket.SlaEstimadoTicket.SlaEstimadoTicketDetalle.AddRange( sla.SlaDetalle.Select( detalle => new SlaEstimadoTicketDetalle { IdSubRol = detalle.IdSubRol, Dias = sla.Dias, Horas = sla.Horas, Minutos = sla.Minutos, Segundos = sla.Segundos, TiempoProceso = detalle.TiempoProceso })); ticket.IdEstatusTicket = (int)BusinessVariables.EnumeradoresKiiniNet.EnumEstatusTicket.Abierto; ticket.TicketEstatus = new List <TicketEstatus> { new TicketEstatus { IdEstatus = ticket.IdEstatusTicket, IdUsuarioMovimiento = idUsuario, FechaMovimiento = DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"), "yyyy-MM-dd HH:mm:ss:fff", CultureInfo.InvariantCulture), } }; ticket.TicketAsignacion = new List <TicketAsignacion> { new TicketAsignacion { IdEstatusAsignacion = (int)BusinessVariables.EnumeradoresKiiniNet.EnumEstatusAsignacion.PorAsignar, FechaAsignacion = DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"), "yyyy-MM-dd HH:mm:ss:fff", CultureInfo.InvariantCulture), } }; db.Ticket.AddObject(ticket); db.SaveChanges(); string store = string.Format("{0} '{1}',", mascara.ComandoInsertar, ticket.Id); store = lstCaptura.Aggregate(store, (current, captura) => current + string.Format("'{0}',", captura.Valor)); store = store.Trim().TrimEnd(','); if (ticket.Random) { store = store + ", '" + ticket.ClaveRegistro + "'"; } db.ExecuteStoreCommand(store); db.ContextOptions.ProxyCreationEnabled = _proxy; result = new Ticket { Id = ticket.Id, Random = campoRandom, ClaveRegistro = ticket.ClaveRegistro }; } catch (Exception ex) { throw new Exception(ex.Message); } finally { db.Dispose(); } return(result); }
private List <HelperFrecuencia> GeneraTopGeneralPrivado(int idTipoUsuario, int idUsuario) { List <HelperFrecuencia> result; DataBaseModelContext db = new DataBaseModelContext(); try { db.ContextOptions.ProxyCreationEnabled = _proxy; BusinessArbolAcceso bArbol = new BusinessArbolAcceso(); List <int> gpos = db.UsuarioGrupo.Where(w => w.IdUsuario == idUsuario && w.IdRol == (int)BusinessVariables.EnumRoles.AccesoCentroSoporte).Select(s => s.IdGrupoUsuario).ToList(); var frecuencias = ( from f in db.Frecuencia join aa in db.ArbolAcceso on new { idarbol = f.IdArbolAcceso, idtu = f.IdTipoUsuario } equals new { idarbol = aa.Id, idtu = aa.IdTipoUsuario } join iaa in db.InventarioArbolAcceso on aa.Id equals iaa.IdArbolAcceso join guia in db.GrupoUsuarioInventarioArbol on iaa.Id equals guia.IdInventarioArbolAcceso join ug in db.UsuarioGrupo on new { idgpo = guia.IdGrupoUsuario, idsbgpo = guia.IdSubGrupoUsuario } equals new { idgpo = ug.IdGrupoUsuario, idsbgpo = ug.IdSubGrupoUsuario } //join ug in db.UsuarioGrupo on new { idgpo = guia.IdGrupoUsuario, idsbgpo = guia.IdSubGrupoUsuario } equals new { idgpo = ug.IdGrupoUsuario, idsbgpo = ug.IdSubGrupoUsuario } where gpos.Contains(guia.IdGrupoUsuario) && //ug.IdUsuario == idUsuario aa.IdTipoUsuario == idTipoUsuario && !aa.Sistema && aa.Habilitado && aa.EsTerminal select f).Distinct().GroupBy(g => new { g.IdArbolAcceso, g.NumeroVisitas }) .Select(s => new { s.Key.IdArbolAcceso, NumeroVisitas = s.Sum(sa => sa.NumeroVisitas) }) .OrderByDescending(o => o.NumeroVisitas).Take(10).ToList(); result = new List <HelperFrecuencia>(); foreach (var type in frecuencias.Distinct()) { ArbolAcceso arbol = bArbol.ObtenerArbolAcceso(type.IdArbolAcceso); if (!result.Any(a => a.IdArbol == arbol.Id)) { result.Add(new HelperFrecuencia { IdArbol = type.IdArbolAcceso, IdArea = bArbol.ObtenerArbolAcceso(type.IdArbolAcceso).IdArea, IdTipoArbol = arbol.IdTipoArbolAcceso, DescripcionOpcion = bArbol.ObtenerTipificacion(type.IdArbolAcceso), DescripcionOpcionLarga = arbol.Descripcion }); } } List <int> arbolesAgregados = new List <int>(); arbolesAgregados.AddRange(result.Select(s => s.IdArbol)); int take = 10 - result.Count; if (result.Count < 10) { List <ArbolAcceso> opciones = (from aa in db.ArbolAcceso join iaa in db.InventarioArbolAcceso on aa.Id equals iaa.IdArbolAcceso join guia in db.GrupoUsuarioInventarioArbol on iaa.Id equals guia.IdInventarioArbolAcceso join ug in db.UsuarioGrupo on new { idgpo = guia.IdGrupoUsuario } equals new { idgpo = ug.IdGrupoUsuario } where aa.EsTerminal && !aa.Sistema && aa.Habilitado && ug.IdUsuario == idUsuario && aa.IdTipoUsuario == idTipoUsuario && !arbolesAgregados.Contains(aa.Id) && ug.GrupoUsuario.IdTipoGrupo == (int)BusinessVariables.EnumTiposGrupos.AccesoCentroSoporte select aa).Distinct().ToList(); List <int> opcionesListadas = opciones.Select(s => s.Id).Distinct().ToList(); opciones.AddRange(db.ArbolAcceso.Where( w => w.EsTerminal && !w.Sistema && w.Habilitado && w.Publico && w.IdTipoUsuario == idTipoUsuario && !arbolesAgregados.Contains(w.Id) && !opcionesListadas.Contains(w.Id)) .OrderByDescending(d => d.FechaAlta) .Take(take) .ToList()); foreach (ArbolAcceso opcion in opciones) { ArbolAcceso arbol = bArbol.ObtenerArbolAcceso(opcion.Id); result.Add(new HelperFrecuencia { IdArbol = arbol.Id, IdArea = arbol.IdArea, IdTipoArbol = arbol.IdTipoArbolAcceso, DescripcionOpcion = bArbol.ObtenerTipificacion(arbol.Id), DescripcionOpcionLarga = arbol.Descripcion }); } } } catch (Exception ex) { throw new Exception(ex.Message); } finally { db.Dispose(); } return(result.Take(10).ToList()); }
public List <HelperFrecuencia> GeneraTopIncidentePublico(int idTipoUsuario) { List <HelperFrecuencia> result; DataBaseModelContext db = new DataBaseModelContext(); try { db.ContextOptions.ProxyCreationEnabled = _proxy; BusinessArbolAcceso bArbol = new BusinessArbolAcceso(); var frecuencias = (from f in db.Frecuencia where f.ArbolAcceso.IdTipoUsuario == idTipoUsuario && !f.ArbolAcceso.Sistema && f.ArbolAcceso.Habilitado && f.ArbolAcceso.Publico && f.IdTipoArbolAcceso == (int)BusinessVariables.EnumTipoArbol.ReportarProblemas group f by f.IdArbolAcceso into frec orderby frec.Key select new { IdArbolAcceso = frec.Key, NumeroVisitas = frec.Sum(s => s.NumeroVisitas) }).Take(10); result = new List <HelperFrecuencia>(); foreach (var type in frecuencias.Distinct()) { ArbolAcceso arbol = bArbol.ObtenerArbolAcceso(type.IdArbolAcceso); result.Add(new HelperFrecuencia { IdArbol = type.IdArbolAcceso, IdArea = bArbol.ObtenerArbolAcceso(type.IdArbolAcceso).IdArea, IdTipoArbol = arbol.IdTipoArbolAcceso, DescripcionOpcion = bArbol.ObtenerTipificacion(type.IdArbolAcceso), DescripcionOpcionLarga = arbol.Descripcion }); } List <int> arbolesAgregados = new List <int>(); arbolesAgregados.AddRange(result.Select(s => s.IdArbol)); int take = 10 - result.Count; if (result.Count < 10) { List <ArbolAcceso> opciones = db.ArbolAcceso.Where(w => w.IdTipoArbolAcceso == (int)BusinessVariables.EnumTipoArbol.ReportarProblemas && w.EsTerminal && w.Publico && !w.Sistema && w.Habilitado && w.IdTipoUsuario == idTipoUsuario && !arbolesAgregados.Contains(w.Id)).OrderByDescending(d => d.FechaAlta).Take(take).ToList(); foreach (ArbolAcceso opcion in opciones) { ArbolAcceso arbol = bArbol.ObtenerArbolAcceso(opcion.Id); result.Add(new HelperFrecuencia { IdArbol = arbol.Id, IdArea = arbol.IdArea, IdTipoArbol = arbol.IdTipoArbolAcceso, DescripcionOpcion = bArbol.ObtenerTipificacion(arbol.Id), DescripcionOpcionLarga = arbol.Descripcion }); } } } catch (Exception ex) { throw new Exception(ex.Message); } finally { db.Dispose(); } return(result.Take(10).ToList()); }
public void GuardarHit(int idArbol, int idTipoUsuario, int?idUsuario) { DataBaseModelContext db = new DataBaseModelContext(); try { db.ContextOptions.ProxyCreationEnabled = _proxy; new BusinessArbolAcceso().HitArbolAcceso(idArbol); ArbolAcceso arbol = new BusinessArbolAcceso().ObtenerArbolAcceso(idArbol); HitConsulta hit = new HitConsulta { IdTipoArbolAcceso = arbol.IdTipoArbolAcceso, IdArbolAcceso = idArbol, IdTipoUsuario = idTipoUsuario, IdUsuario = idUsuario.HasValue ? idUsuario : null, IdUbicacion = idUsuario.HasValue ? new BusinessUbicacion().ObtenerUbicacionUsuario(new BusinessUsuarios().ObtenerUsuario(int.Parse(idUsuario.ToString())).IdUbicacion).Id : (int?)null, IdOrganizacion = idUsuario.HasValue ? new BusinessOrganizacion().ObtenerOrganizacionUsuario(new BusinessUsuarios().ObtenerUsuario(int.Parse(idUsuario.ToString())).IdOrganizacion).Id : (int?)null, HitGrupoUsuario = new List <HitGrupoUsuario>(), FechaHoraAlta = DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"), "yyyy-MM-dd HH:mm:ss:fff", CultureInfo.InvariantCulture) }; foreach (GrupoUsuarioInventarioArbol guia in new BusinessArbolAcceso().ObtenerGruposUsuarioArbol(idArbol)) { hit.HitGrupoUsuario.Add(new HitGrupoUsuario { IdRol = guia.IdRol, IdGrupoUsuario = guia.IdGrupoUsuario, IdSubGrupoUsuario = guia.IdSubGrupoUsuario }); } DateTime fechaTicket = DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-dd"), "yyyy-MM-dd", CultureInfo.InvariantCulture); Frecuencia frecuencia = db.Frecuencia.SingleOrDefault(s => s.IdTipoUsuario == arbol.IdTipoUsuario && s.IdTipoArbolAcceso == arbol.IdTipoArbolAcceso && s.IdArbolAcceso == arbol.Id && s.Fecha == fechaTicket); if (frecuencia == null) { frecuencia = new Frecuencia { IdTipoUsuario = arbol.IdTipoUsuario, IdTipoArbolAcceso = arbol.IdTipoArbolAcceso, IdArbolAcceso = arbol.Id, NumeroVisitas = 1, Fecha = fechaTicket, UltimaVisita = DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"), "yyyy-MM-dd HH:mm:ss:fff", CultureInfo.InvariantCulture) }; db.Frecuencia.AddObject(frecuencia); } else { frecuencia.NumeroVisitas++; frecuencia.UltimaVisita = DateTime.ParseExact(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"), "yyyy-MM-dd HH:mm:ss:fff", CultureInfo.InvariantCulture); } if (hit.Id == 0) { db.HitConsulta.AddObject(hit); } db.SaveChanges(); } catch (Exception ex) { throw new Exception(ex.Message); } finally { db.Dispose(); } }