public async Task <bool> Handle(DividirDistribuicaoPorTipoInvestimentoCommand request, CancellationToken cancellationToken) { List <DistribuicaoPorTipoInvestimento> distribuicoes = ObterDistribuicoesTipoInvestimentosCadastrados(request.UsuarioId); if (request.SomenteItensEmCarteira) { await AlterarDistribuicoesTipoInvestimentosEmCarteira(request, distribuicoes); } else { await AlterarDistribuicoesTipoInvestimentosCadastrados(distribuicoes); } return(await _distribuicaoRepositorio.UnitOfWork.Commit()); }
private async Task AlterarDistribuicoesTipoInvestimentosEmCarteira(DividirDistribuicaoPorTipoInvestimentoCommand request, List <DistribuicaoPorTipoInvestimento> distribuicoes) { List <DistribuicaoPorTipoInvestimento> distribuicoesCarteira = ObterDistribuicoesTipoInvestimentosEmCarteira(request.UsuarioId); decimal percentualDivisao = distribuicoesCarteira.Count() > 0 ? PERCENTUAL_MAXIMO / distribuicoesCarteira.Count() : 0; foreach (var distribuicao in distribuicoes) { if (distribuicoesCarteira.Where(x => x.TipoInvestimentoId == distribuicao.TipoInvestimentoId).Any()) { distribuicao.Valores.AtualizarPercentualObjetivo(percentualDivisao); } else { distribuicao.Valores.AtualizarPercentualObjetivo(0); } await Update(distribuicao); } }
public async Task <ActionResult> Dividir(DividirDistribuicaoPorTipoInvestimentoCommand command) { await _mediator.Send(command); return(ResponseBase("Percentuais divididos igualmente entre tipos de investimentos" + (command.SomenteItensEmCarteira ? " em carteira" : " cadastrados"))); }