Exemplo n.º 1
0
        public ActionResult RendaFixa()
        {
            RendaFixaModel model = new RendaFixaModel();

            model.Investimentos = new List <RendaFixaModel.InvestimentosModel>();

            using (MyInvestsDataContext context = new MyInvestsDataContext())
            {
                foreach (var investEntDB in context.InvestimentoRendaFixa.ToList())
                {
                    RendaFixaModel.InvestimentosModel novoModelInvestimento = new RendaFixaModel.InvestimentosModel();

                    novoModelInvestimento.Nome           = investEntDB.Nome;
                    novoModelInvestimento.DataCompra     = investEntDB.DataCompra;
                    novoModelInvestimento.DataVencimento = investEntDB.DataVencimento.Value;
                    novoModelInvestimento.ValorCompra    = investEntDB.ValorCompra;

                    novoModelInvestimento.PosicaoInvestimento =
                        context.InvestimentoRendaFixaPosicao.Where(x => x.IdInvestimento == investEntDB.Id)
                        .Select(x => new RendaFixaModel.PosicaoInvestimentoModel()
                    {
                        DataReferencia    = x.DataReferencia,
                        TaxaIR            = x.TaxaIR,
                        ValorBrutoAtual   = x.ValorAtual,
                        ValorIR           = x.ValorIR,
                        ValorLiquidoAtual = x.ValorAtual - x.ValorIR,
                        LucroLiquido      = x.ValorAtual - investEntDB.ValorCompra
                    })
                        .OrderByDescending(x => x.DataReferencia)
                        .ToList();

                    for (int i = 0; i < novoModelInvestimento.PosicaoInvestimento.Count(); i++)
                    {
                        RendaFixaModel.VariacaoDataAnterior variacao = new RendaFixaModel.VariacaoDataAnterior();

                        var posicaoAtual    = novoModelInvestimento.PosicaoInvestimento.ElementAtOrDefault(i);
                        var posicaoAnterior = novoModelInvestimento.PosicaoInvestimento.ElementAtOrDefault(i + 1);

                        if (posicaoAnterior != null)
                        {
                            variacao.VariacaoValorBruto = posicaoAtual.ValorBrutoAtual -
                                                          posicaoAnterior.ValorBrutoAtual;

                            variacao.VariacaoValorLiquido = posicaoAtual.ValorBrutoAtual -
                                                            posicaoAnterior.ValorBrutoAtual;

                            variacao.PercentualVariacaoBruta = variacao.VariacaoValorBruto / posicaoAnterior.ValorBrutoAtual;

                            variacao.PercentualVariacaoLiquida = variacao.VariacaoValorLiquido / posicaoAnterior.ValorLiquidoAtual;
                        }

                        novoModelInvestimento.PosicaoInvestimento[i].Variacao = variacao;
                    }

                    model.Investimentos.Add(novoModelInvestimento);
                }
            }

            return(PartialView(model));
        }
Exemplo n.º 2
0
 public InvestimentoModel Map(RendaFixaModel model)
 {
     try
     {
         if (model is null)
         {
             _logger.LogInformation("Parametro do tipo {type} nulo. Method: {method}", nameof(RendaFixaModel), nameof(Map));
             return(default);
Exemplo n.º 3
0
        private async Task ValidateMapObject(RendaFixaModel rendaFixa, InvestimentoModel investimento)
        {
            if (rendaFixa is null)
            {
                investimento.Should().BeNull();
            }

            else if (investimento is null)
            {
                investimento.Should().BeNull();
            }

            else
            {
                investimento.Nome.Should().Be(rendaFixa.Nome);
                investimento.ValorInvestido.Should().Be(rendaFixa.CapitalInvestido);
                investimento.ValorTotal.Should().Be(rendaFixa.CapitalAtual);
                investimento.Vencimento.Should().Be(rendaFixa.Vencimento);
                investimento.Ir.Should().Be(rendaFixa.Ir);
                investimento.ValorResgate.Should().Be(rendaFixa.ValorResgate);
            }
        }