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>()); }
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>()); }
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>()); }
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); }