Example #1
0
        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());
        }
Example #2
0
        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);
            }
        }
Example #3
0
        public async Task <ActionResult> Dividir(DividirDistribuicaoPorAtivoCommand command)
        {
            await _mediator.Send(command);

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