public List <VendaProdutoDao> VendaProduto(VendaProdutoDao vendaProdutoDao) { if (vendaProdutoDao.ProdutoDao != null && vendaProdutoDao.ProdutoDao.Count() > 0) { return((from pr in chicoDoColchaoEntities.Produto join me in chicoDoColchaoEntities.Medida on pr.MedidaID equals me.MedidaID join pp in chicoDoColchaoEntities.PedidoProduto on pr.ProdutoID equals pp.ProdutoID join ptp in chicoDoColchaoEntities.PedidoTipoPagamento on pp.PedidoID equals ptp.PedidoID join pe in chicoDoColchaoEntities.Pedido on ptp.PedidoID equals pe.PedidoID join l in chicoDoColchaoEntities.Loja on pe.LojaID equals l.LojaID where pe.DataPedido >= vendaProdutoDao.DataInicio && pe.DataPedido <= vendaProdutoDao.DataFim && pr.Ativo == true && me.Ativo == true && l.Ativo == true && vendaProdutoDao.ProdutoDao.Any(x => x == pr.ProdutoID) && pe.PedidoStatusID != (int)PedidoStatusDao.EPedidoStatus.Cancelado group new { pr.ProdutoID, pr.Numero, Produto = pr.Descricao, me.MedidaID, Medida = me.Descricao, pp.Quantidade, ptp.ValorPago } by new { pr.ProdutoID, pr.Numero, Produto = pr.Descricao, me.MedidaID, Medida = me.Descricao } into g1 select new VendaProdutoDao() { ProdutoID = g1.Key.ProdutoID, Numero = g1.Key.Numero, Produto = g1.Key.Produto, MedidaID = g1.Key.MedidaID, Medida = g1.Key.Medida, Venda = g1.Sum(x => x.ValorPago), Quantidade = g1.Sum(x => x.Quantidade) }).OrderByDescending(x => x.Venda).ToList()); } else { return((from pr in chicoDoColchaoEntities.Produto join me in chicoDoColchaoEntities.Medida on pr.MedidaID equals me.MedidaID join pp in chicoDoColchaoEntities.PedidoProduto on pr.ProdutoID equals pp.ProdutoID join ptp in chicoDoColchaoEntities.PedidoTipoPagamento on pp.PedidoID equals ptp.PedidoID join pe in chicoDoColchaoEntities.Pedido on ptp.PedidoID equals pe.PedidoID join l in chicoDoColchaoEntities.Loja on pe.LojaID equals l.LojaID where pe.DataPedido >= vendaProdutoDao.DataInicio && pe.DataPedido <= vendaProdutoDao.DataFim && pr.Ativo == true && me.Ativo == true && l.Ativo == true && pe.PedidoStatusID != (int)PedidoStatusDao.EPedidoStatus.Cancelado group new { pr.ProdutoID, pr.Numero, Produto = pr.Descricao, me.MedidaID, Medida = me.Descricao, pp.Quantidade, ptp.ValorPago } by new { pr.ProdutoID, pr.Numero, Produto = pr.Descricao, me.MedidaID, Medida = me.Descricao } into g1 select new VendaProdutoDao() { ProdutoID = g1.Key.ProdutoID, Numero = g1.Key.Numero, Produto = g1.Key.Produto, MedidaID = g1.Key.MedidaID, Medida = g1.Key.Medida, Venda = g1.Sum(x => x.ValorPago), Quantidade = g1.Sum(x => x.Quantidade) }).OrderByDescending(x => x.Venda).ToList()); } }
private void ValidarVendaProduto(VendaProdutoDao vendaProdutoDao) { if (vendaProdutoDao == null) { throw new BusinessException("VendaProdutoDao é obrigatório"); } if (vendaProdutoDao.DataInicio == DateTime.MinValue) { throw new BusinessException("Data início é obrigatório"); } if (vendaProdutoDao.DataFim == DateTime.MinValue) { throw new BusinessException("Data fim é obrigatório"); } }
public List <VendaProdutoDao> VendaProduto(VendaProdutoDao vendaProdutoDao) { try { ValidarVendaProduto(vendaProdutoDao); return(relatorioRepository.VendaProduto(vendaProdutoDao)); } catch (BusinessException ex) { throw ex; } catch (Exception ex) { logRepository.Incluir(new Log() { Descricao = ex.ToString(), DataHora = DateTime.Now }); throw ex; } }