예제 #1
0
        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());
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        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")));
        }