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);
        }
Пример #2
0
        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());
        }