public async Task <bool> Handle(DividirDistribuicaoPorAtivoCommand request, CancellationToken cancellationToken) { List <DistribuicaoPorAtivo> distribuicoes = ObterDistribuicoesAtivosCadastrados(request.UsuarioId); if (request.SomenteItensEmCarteira) { await AlterarDistribuicoesAtivosEmCarteira(request, distribuicoes); } else { await AlterarDistribuicoesAtivosCadastrados(distribuicoes); } return(await _distribuicaoRepositorio.UnitOfWork.Commit()); }
private async Task AlterarDistribuicoesAtivosEmCarteira(DividirDistribuicaoPorAtivoCommand request, List <DistribuicaoPorAtivo> distribuicoes) { List <DistribuicaoPorAtivo> distribuicoesCarteira = ObterDistribuicoesAtivosEmCarteira(request.UsuarioId); decimal percentualDivisao = distribuicoesCarteira.Count() > 0 ? (PERCENTUAL_MAXIMO / distribuicoesCarteira.Count()) : 0; foreach (var distribuicao in distribuicoes) { if (distribuicoesCarteira.Where(x => x.AtivoId == distribuicao.AtivoId).Any()) { distribuicao.Valores.AtualizarPercentualObjetivo(percentualDivisao); } else { distribuicao.Valores.AtualizarPercentualObjetivo(0); } await Update(distribuicao); } }
public async Task <ActionResult> Dividir(DividirDistribuicaoPorAtivoCommand command) { await _mediator.Send(command); return(ResponseBase("Percentuais divididos igualmente entre ativos" + (command.SomenteItensEmCarteira ? " em carteira" : " cadastrados"))); }