public List <VendaLojaDao> VendaLoja(VendaLojaDao vendaLojaDao)
        {
            var query = (from l in chicoDoColchaoEntities.Loja
                         join p in chicoDoColchaoEntities.Pedido on l.LojaID equals p.LojaID
                         join ptp in chicoDoColchaoEntities.PedidoTipoPagamento on p.PedidoID equals ptp.PedidoID
                         where p.DataPedido >= vendaLojaDao.DataInicio &&
                         p.DataPedido <= vendaLojaDao.DataFim &&
                         (vendaLojaDao.LojaID > 0 ? p.LojaID == vendaLojaDao.LojaID : 1 == 1) &&
                         l.Ativo == true &&
                         p.PedidoStatusID != (int)PedidoStatusDao.EPedidoStatus.Cancelado
                         group ptp by new { l.LojaID, l.NomeFantasia, DataInicio = System.Data.Entity.DbFunctions.TruncateTime(p.DataPedido) } into g1
                         select new VendaLojaDao()
            {
                LojaID = g1.Key.LojaID,
                NomeFantasia = g1.Key.NomeFantasia,
                VendaDia = g1.Sum(x => x.ValorPago),
                VendaAcumulada = (from l2 in chicoDoColchaoEntities.Loja
                                  join p2 in chicoDoColchaoEntities.Pedido on l2.LojaID equals p2.LojaID
                                  join ptp2 in chicoDoColchaoEntities.PedidoTipoPagamento on p2.PedidoID equals ptp2.PedidoID
                                  where l2.LojaID == g1.Key.LojaID &&
                                  p2.DataPedido >= vendaLojaDao.DataInicio && p2.DataPedido <= vendaLojaDao.DataFim &&
                                  (vendaLojaDao.LojaID > 0 ? p2.LojaID == vendaLojaDao.LojaID : 1 == 1) &&
                                  l2.Ativo == true &&
                                  p2.PedidoStatusID != (int)PedidoStatusDao.EPedidoStatus.Cancelado &&
                                  System.Data.Entity.DbFunctions.TruncateTime(g1.Key.DataInicio) >= System.Data.Entity.DbFunctions.TruncateTime(p2.DataPedido)
                                  group ptp2 by l2.LojaID into g2
                                  select g2.Sum(x => x.ValorPago)
                                  ).FirstOrDefault(),
                DataInicio = g1.Key.DataInicio
            }).OrderBy(x => x.DataInicio).ThenBy(x => x.VendaDia).ToList();

            return(query);
        }
        private void ValidarVendaLoja(VendaLojaDao vendaLojaDao)
        {
            if (vendaLojaDao == null)
            {
                throw new BusinessException("VendaLojaDao é obrigatório");
            }

            if (vendaLojaDao.DataInicio == DateTime.MinValue)
            {
                throw new BusinessException("Data início é obrigatório");
            }

            if (vendaLojaDao.DataFim == DateTime.MinValue)
            {
                throw new BusinessException("Data fim é obrigatório");
            }
        }
        public List <VendaLojaDao> VendaLoja(VendaLojaDao vendaLojaDao)
        {
            try
            {
                ValidarVendaLoja(vendaLojaDao);

                return(relatorioRepository.VendaLoja(vendaLojaDao));
            }
            catch (BusinessException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                logRepository.Incluir(new Log()
                {
                    Descricao = ex.ToString(), DataHora = DateTime.Now
                });

                throw ex;
            }
        }