private void ValidarComissao(ComissaoDao comissaoDao)
        {
            if (comissaoDao == null)
            {
                throw new BusinessException("ComissaoDao é obrigatório");
            }

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

            if (comissaoDao.DataFim == DateTime.MinValue)
            {
                throw new BusinessException("Data fim é obrigatório");
            }
        }
        public List <ComissaoDao> Comissao(ComissaoDao comissaoDao)
        {
            try
            {
                ValidarComissao(comissaoDao);

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

                throw ex;
            }
        }
        public List <ComissaoDao> Comissao(ComissaoDao comissaoDao)
        {
            var query = (from p in chicoDoColchaoEntities.Pedido
                         join ptp in chicoDoColchaoEntities.PedidoTipoPagamento on p.PedidoID equals ptp.PedidoID
                         join f in chicoDoColchaoEntities.Funcionario on p.FuncionarioID equals f.FuncionarioID
                         where p.DataPedido >= comissaoDao.DataInicio && p.DataPedido <= comissaoDao.DataFim &&
                         (comissaoDao.FuncionarioID > 0 ? p.FuncionarioID == comissaoDao.FuncionarioID : 1 == 1) &&
                         f.Ativo == true &&
                         p.PedidoStatusID != (int)PedidoStatusDao.EPedidoStatus.Cancelado
                         group ptp by new { f.FuncionarioID, f.Nome } into g1
                         select new ComissaoDao()
            {
                FuncionarioID = g1.Key.FuncionarioID,
                Nome = g1.Key.Nome,
                LojaID = g1.Select(x => x.Pedido.LojaOrigem.LojaID).FirstOrDefault(),
                NomeFantasia = g1.Select(x => x.Pedido.LojaOrigem.NomeFantasia).FirstOrDefault(),
                Venda = g1.Sum(x => x.ValorPago),
                QtdPedido = g1.Select(x => x.PedidoID).Distinct().Count(),
                Comissao = g1.Sum(x => x.ValorPago) * 0.05
            }).OrderBy(x => x.Venda).ToList();

            return(query);
        }