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()); }
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); } }
public async Task <ActionResult> Dividir(DividirDistribuicaoPorProdutoCommand command) { await _mediator.Send(command); return(ResponseBase("Percentuais divididos igualmente entre produtos" + (command.SomenteItensEmCarteira ? " em carteira" : " cadastrados"))); }