public List <EnderecoArmazenagemTotalPorAlasLinhaTabela> BuscarDadosFormatadoParaRelatorioTotalAla(RelatorioTotalizacaoAlasListaFiltro model)
        {
            IQueryable <EnderecoArmazenagemTotalPorAlasLinhaTabela> query;

            if (model.ImprimirVazia)
            {
                query = BuscarTodosDadosTotalAla(model);
            }
            else
            {
                query = BuscarDadosComProdutoInstalado(model);
            }

            return(query.ToList());
        }
        private IQueryable <EnderecoArmazenagemTotalPorAlasLinhaTabela> BuscarTodosDadosTotalAla(RelatorioTotalizacaoAlasListaFiltro model)
        {
            var query = (from end in Entities.EnderecoArmazenagem
                         join lpe in Entities.LoteProdutoEndereco on end.IdEnderecoArmazenagem equals lpe.IdEnderecoArmazenagem into a
                         from lpe in a.DefaultIfEmpty()
                         where model.IdEmpresa == end.IdEmpresa &&
                         model.IdNivelArmazenagem == end.IdNivelArmazenagem &&
                         model.IdPontoArmazenagem == end.IdPontoArmazenagem
                         select new EnderecoArmazenagemTotalPorAlasLinhaTabela
            {
                IdEnderecoArmazenagem = end.IdEnderecoArmazenagem,
                CodigoEndereco = end.Codigo,
                Corredor = end.Corredor,
                DataInstalacao = lpe.DataHoraInstalacao,
                IdLote = lpe.IdLote,
                IdUsuarioInstalacao = lpe.IdUsuarioInstalacao,
                PesoProduto = lpe.Produto.PesoBruto,
                PesoTotalDeProduto = lpe.PesoTotal,
                QuantidadeProdutoPorEndereco = lpe.Quantidade,
                ReferenciaProduto = lpe.Produto.Referencia
            });

            if (model.CorredorInicial.HasValue && model.CorredorFinal.HasValue)
            {
                var count = model.CorredorInicial.Value == model.CorredorFinal.Value ? 1 : (model.CorredorFinal.Value - model.CorredorInicial.Value) + 1;

                var range = Enumerable.Range(model.CorredorInicial.Value, count);

                query = query.Where(y => range.Contains(y.Corredor));
            }

            return(query);
        }
        private IQueryable <EnderecoArmazenagemTotalPorAlasLinhaTabela> BuscarDadosComProdutoInstalado(RelatorioTotalizacaoAlasListaFiltro model)
        {
            var query = Entities.LoteProdutoEndereco.AsNoTracking().Where(
                lpe => lpe.IdEmpresa == model.IdEmpresa &&
                model.IdNivelArmazenagem == lpe.EnderecoArmazenagem.IdNivelArmazenagem &&
                model.IdPontoArmazenagem == lpe.EnderecoArmazenagem.IdPontoArmazenagem)
                        .Select(s => new EnderecoArmazenagemTotalPorAlasLinhaTabela
            {
                IdEnderecoArmazenagem = s.IdEnderecoArmazenagem,
                CodigoEndereco        = s.EnderecoArmazenagem.Codigo,
                DataInstalacao        = s.DataHoraInstalacao,
                IdUsuarioInstalacao   = s.IdUsuarioInstalacao,
                PesoProduto           = s.Produto.PesoBruto,
                IdLote                       = s.Lote.IdLote,
                PesoTotalDeProduto           = s.PesoTotal,
                QuantidadeProdutoPorEndereco = s.Quantidade,
                ReferenciaProduto            = s.Produto.Referencia,
                Corredor                     = s.EnderecoArmazenagem.Corredor
            });

            if (model.CorredorInicial.HasValue && model.CorredorFinal.HasValue)
            {
                var count = model.CorredorInicial.Value == model.CorredorFinal.Value ? 1 : (model.CorredorFinal.Value - model.CorredorInicial.Value) + 1;

                var range = Enumerable.Range(model.CorredorInicial.Value, count);

                query = query.Where(y => range.Contains(y.Corredor));
            }

            return(query);
        }