示例#1
0
        public IEnumerable <RechazoPromedioRolModel> GetPromedioPorRol(int distritoId, int baseId)
        {
            RechazoMov    mov       = null;
            Empleado      empEgreso = null;
            TipoEmpleado  tEmpleado = null;
            TicketRechazo ticket    = null;

            var q = Session
                    .QueryOver(() => mov)
                    .Inner.JoinAlias(() => mov.EmpledoEgreso, () => empEgreso)
                    .Left.JoinAlias(() => empEgreso.TipoEmpleado, () => tEmpleado)
                    .Inner.JoinAlias(() => mov.Ticket, () => ticket)
                    .Select(Projections.ProjectionList()
                            .Add(Projections.Count(() => mov.Id).As("Cantidad"))
                            .Add(Projections.Avg(() => mov.Lapso).As("Promedio"))
                            .Add(Projections.Group(() => tEmpleado.Codigo).As("TipoEmpleado"))
                            );

            if (distritoId != -1)
            {
                q = q.Where(m => ticket.Empresa.Id == distritoId);
            }

            if (baseId != -1)
            {
                q = q.Where(m => ticket.Linea.Id == baseId);
            }

            q = q.TransformUsing(Transformers.AliasToBean <RechazoPromedioRolModel>());

            return(q.Future <RechazoPromedioRolModel>());
        }
示例#2
0
        public IEnumerable <PromedioPorEstadoModel> GetPromedioPorEstado(int distritoId, int baseId)
        {
            RechazoMov    mov    = null;
            TicketRechazo ticket = null;

            var q = Session
                    .QueryOver(() => mov)
                    .Inner.JoinAlias(() => mov.Ticket, () => ticket)
                    .Select(Projections.ProjectionList()
                            .Add(Projections.Count(() => mov.Id).As("Cantidad"))
                            .Add(Projections.Avg(() => mov.Lapso).As("Promedio"))
                            .Add(Projections.Group(() => mov.EstadoEgreso).As("EstadoEnum"))
                            .Add(Projections.Group(() => ticket.Empresa.Id).As("EmpresaId"))
                            .Add(Projections.Group(() => ticket.Linea.Id).As("BaseId"))
                            ).OrderBy(Projections.Avg(() => mov.Lapso).As("Promedio")).Desc;

            if (distritoId != -1)
            {
                q = q.Where(m => ticket.Empresa.Id == distritoId);
            }

            if (baseId != -1)
            {
                q = q.Where(m => ticket.Linea.Id == baseId);
            }

            q = q.TransformUsing(Transformers.AliasToBean <PromedioPorEstadoModel>());

            return(q.Future <PromedioPorEstadoModel>());
        }
示例#3
0
        public IEnumerable <PromedioPorVendedorModel> GetPromedioPorVendedor(int distritoId, int baseId)
        {
            RechazoMov    mov       = null;
            TicketRechazo ticket    = null;
            Empleado      empEgreso = null;
            TipoEmpleado  tEmpleado = null;
            Entidad       entidad   = null;

            var q = Session
                    .QueryOver(() => mov)
                    .Inner.JoinAlias(() => mov.EmpledoEgreso, () => empEgreso)
                    .Left.JoinAlias(() => empEgreso.TipoEmpleado, () => tEmpleado)
                    .Inner.JoinAlias(() => mov.Ticket, () => ticket)
                    .Inner.JoinAlias(() => empEgreso.Entidad, () => entidad)
                    .Where(() => tEmpleado.Codigo == "V")
                    .Select(Projections.ProjectionList()
                            .Add(Projections.Count(() => mov.Id).As("Cantidad"))
                            .Add(Projections.Avg(() => mov.Lapso).As("Promedio"))
                            .Add(Projections.Group(() => mov.EstadoEgreso).As("EstadoEnum"))
                            .Add(Projections.Group(() => ticket.Empresa.Id).As("EmpresaId"))
                            .Add(Projections.Group(() => ticket.Linea.Id).As("BaseId"))
                            .Add(Projections.Group(() => entidad.Nombre).As("EntidadNombre"))
                            .Add(Projections.Group(() => entidad.Apellido).As("EntidadApellido"))
                            ).OrderBy(Projections.Avg(() => mov.Lapso).As("Promedio")).Desc;

            if (distritoId != -1)
            {
                q = q.Where(m => ticket.Empresa.Id == distritoId);
            }

            if (baseId != -1)
            {
                q = q.Where(m => ticket.Linea.Id == baseId);
            }

            q = q.TransformUsing(Transformers.AliasToBean <PromedioPorVendedorModel>());

            return(q.Future <PromedioPorVendedorModel>());
        }
示例#4
0
        public IEnumerable <TicketPorHoraModel> GetCantidadTicketPorHora(int distritoId, int baseId)
        {
            RechazoMov                mov    = null;
            TicketRechazo             ticket = null;
            List <TicketPorHoraModel> result = new List <TicketPorHoraModel>();

            TicketPorHoraModel item = null;

            var hourNow = DateTime.UtcNow.Hour;

            for (int hour = 0; hour <= hourNow; hour++)
            {
                // Obtengo un subQuery con la lista de id de movimientos para una hora agrupados por idTicket
                var subQ = Session
                           .QueryOver <RechazoMov>(() => mov)
                           .Inner.JoinAlias(() => mov.Ticket, () => ticket)
                           .Where(() => mov.Egreso.Hour < hour)
                           .Select(Projections.ProjectionList()
                                   .Add(Projections.Max(() => mov.Id))
                                   .Add(Projections.Group(() => ticket.Id)));

                var l = subQ.List <object[]>().Select(i => i[0]).ToArray();

                var q = Session
                        .QueryOver(() => mov)
                        .Inner.JoinAlias(() => mov.Ticket, () => ticket)
                        .Where(() => mov.Id.IsIn(l))
                        .Select(Projections.ProjectionList()
                                .Add(Projections.Count(() => mov.Ticket.Id).As("Cantidad"))
                                .Add(Projections.Group(() => ticket.Final).As("Estado"))
                                );

                if (distritoId != -1)
                {
                    q = q.Where(m => ticket.Empresa.Id == distritoId);
                }

                if (baseId != -1)
                {
                    q = q.Where(m => ticket.Linea.Id == baseId);
                }

                q = q.TransformUsing(Transformers.AliasToBean <TicketEstadoPorHoraModel>());

                item      = new TicketPorHoraModel();
                item.Hora = hour;

                var ticketEstado = q.Future <TicketEstadoPorHoraModel>().ToList();
                ticketEstado.ForEach(t =>
                {
                    switch (t.Estado)
                    {
                    case TicketRechazo.EstadoFinal.Anulado:
                        item.CantidadAnulado = t.Cantidad;
                        break;

                    case TicketRechazo.EstadoFinal.RechazoDuplicado:
                        item.CantidadDuplicado = t.Cantidad;
                        break;

                    case TicketRechazo.EstadoFinal.RechazoErroneo:
                        item.CantidadErroneo = t.Cantidad;
                        break;

                    case TicketRechazo.EstadoFinal.ResueltoEntregado:
                        item.CantidadResueltoEntregado = t.Cantidad;
                        break;

                    case TicketRechazo.EstadoFinal.ResueltoSinEntrega:
                        item.CantidadSinEntrega = t.Cantidad;
                        break;

                    case TicketRechazo.EstadoFinal.SolucionPendiente:
                        item.CantidadPendiente = t.Cantidad;
                        break;
                    }
                });

                result.Add(item);
            }

            return(result);
        }