public static IQueryable <Transportista> GetTransportistas(ISession session, IEnumerable <int> empresas, IEnumerable <int> lineas, IEnumerable <int> transportistas, Usuario user) { if (empresas == null && lineas == null && (user == null || !user.PorTransportista) && IncludesAll(transportistas)) { return(null); } var transportistaDao = new TransportistaDAO(); var transportistasU = user != null && user.PorTransportista ? user.Transportistas.AsQueryable() : transportistaDao.FindAll(); transportistasU = transportistasU .FilterEmpresa(session, empresas, user) .FilterLinea(session, empresas, lineas, user) .Where(t => !t.Baja); if (!IncludesAll(transportistas)) { transportistasU = transportistasU.Where(l => transportistas.Contains(l.Id)); } return(transportistasU); }
public IList FindList(int transportista, int linea, int vehiculo, DateTime desde, DateTime hasta, int estado, int equipo, Usuario usuario) { var script = @"select d from Documento d where d.Fecha >= :ini and d.Fecha <= :fin and d.Estado != -1 and d.Id in (select v0.Documento.Id from DocumentoValor v0 where v0.Parametro.TipoDato like 'Aseguradora' and v0.Valor = :ase) "; if (linea > 0) { script += @" and d.Linea.Id = :linea "; } if (estado > -1) { script += @" and ((:est = '0' and d.Id not in (select v.Documento.Id from DocumentoValor v where v.Parametro.Nombre like 'Estado Control' and v.Valor <> :est) ) or (:est <> '0' and d.Id in (select v.Documento.Id from DocumentoValor v where v.Parametro.Nombre like 'Estado Control' and v.Valor = :est))) "; } if (linea > 0 && vehiculo > 0) { script += @" and d.Id in (select v1.Documento.Id from DocumentoValor v1 where v1.Parametro.TipoDato like 'Coche' and v1.Valor = :vehiculo) "; } if (equipo > 0) { script += @" and d.Id in (select v3.Documento.Id from DocumentoValor v3 where v3.Parametro.Nombre like 'Equipo' and v3.Valor = :equ) "; } var q = Session.CreateQuery(script); q.SetParameter("ini", desde); q.SetParameter("fin", hasta); q.SetParameter("ase", transportista.ToString("#0")); if (linea > 0) { q.SetParameter("linea", linea); } if (estado > -1) { q.SetParameter("est", estado.ToString("#0")); } if (linea > 0 && vehiculo > 0) { q.SetParameter("vehiculo", vehiculo.ToString("#0")); } if (equipo > 0) { q.SetParameter("equ", equipo.ToString("#0")); } if (usuario == null) { return(q.List()); } var transportistaDao = new TransportistaDAO(); var lineaDao = new LineaDAO(); var userTransp = transportistaDao.GetList(new [] { -1 }, new [] { linea }); var userLines = lineaDao.GetList(new[] { -1 }); return((from Documento d in q.List() where (transportista != -1 || userTransp.Contains(d.Transportista)) && (linea != -1 || userLines.Contains(d.Linea)) select d).ToList()); }