Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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());
        }
Esempio n. 4
0
        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());
        }
Esempio n. 5
0
        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();
            }
        }