Пример #1
0
        public async Task <bool> Handle(DividirDistribuicaoPorProdutoCommand request, CancellationToken cancellationToken)
        {
            List <DistribuicaoPorProduto> distribuicoes = ObterDistribuicoesProdutosCadastrados(request.UsuarioId);

            if (request.SomenteItensEmCarteira)
            {
                await AlterarDistribuicoesProdutosEmCarteira(request, distribuicoes);
            }
            else
            {
                await AlterarDistribuicoesProdutosCadastrados(distribuicoes);
            }

            return(await _distribuicaoRepositorio.UnitOfWork.Commit());
        }
Пример #2
0
        private async Task AlterarDistribuicoesProdutosEmCarteira(DividirDistribuicaoPorProdutoCommand request, List <DistribuicaoPorProduto> distribuicoes)
        {
            List <DistribuicaoPorProduto> distribuicoesCarteira = ObterDistribuicoesProdutosEmCarteira(request.UsuarioId);
            decimal percentualDivisao = distribuicoesCarteira.Count > 0 ? (PERCENTUAL_MAXIMO / distribuicoesCarteira.Count()) : 0;


            foreach (var distribuicao in distribuicoes)
            {
                if (distribuicoesCarteira.Where(x => x.ProdutoId == distribuicao.ProdutoId).Any())
                {
                    distribuicao.Valores.AtualizarPercentualObjetivo(percentualDivisao);
                }
                else
                {
                    distribuicao.Valores.AtualizarPercentualObjetivo(0);
                }
                await Update(distribuicao);
            }
        }
Пример #3
0
        public async Task <ActionResult> Dividir(DividirDistribuicaoPorProdutoCommand command)
        {
            await _mediator.Send(command);

            return(ResponseBase("Percentuais divididos igualmente entre produtos" + (command.SomenteItensEmCarteira ? " em carteira" : " cadastrados")));
        }