Beispiel #1
0
        // GET: Home
        public ActionResult Index()
        {
            //Obter lista com lançamentos mensais
            #region Lançamentos
            var lista    = new List <ItemExtrato>();
            var despesas = db.Despesas.ToList();
            foreach (var obj in despesas)
            {
                for (int i = 1; i <= obj.NumeroParcelas; i++)
                {
                    ItemExtrato item = new ItemExtrato();
                    item.Valor          = obj.Valor / obj.NumeroParcelas * -1;
                    item.DataVencimento = obj.VencimentoPrimeiraParcela.AddMonths(i - 1);
                    lista.Add(item);
                }
            }
            var receitas = db.Receitas.ToList();
            foreach (var obj in receitas)
            {
                for (int i = 1; i <= obj.NumeroParcelas; i++)
                {
                    ItemExtrato item = new ItemExtrato();
                    item.Valor          = obj.Valor / obj.NumeroParcelas;
                    item.DataVencimento = obj.PrimeiraDataVencimento.AddMonths(i - 1);
                    lista.Add(item);
                }
            }
            lista.Sort();
            #endregion

            //Obter Total de lançamentos (receitas - despesas)
            #region Total por mês
            var query = from item in lista
                        group item by new { item.DataVencimento.Year, item.DataVencimento.Month }
            into grp
                select new
            {
                ano   = grp.Key.Year,
                mes   = grp.Key.Month,
                valor = grp.Sum(x => x.Valor)
            };
            #endregion

            //Cálculo do saldo parcial por mês
            List <DataPoint> dataPoints = new List <DataPoint>();
            double           parcial    = 0;
            int count = 0;
            foreach (var item in query)
            {
                DateTime pastDate = new DateTime(DateTime.Today.AddMonths(-6).Year, DateTime.Today.AddMonths(-6).Month, 01);
                DateTime itemDate = new DateTime(item.ano, item.mes, DateTime.DaysInMonth(item.ano, item.mes));
                //Será exibido somente os saldos dos últimos 6 meses até os próximos 6 meses
                if (itemDate.CompareTo(pastDate) >= 0 && itemDate.CompareTo(DateTime.Today.AddMonths(6)) <= 0)
                {
                    dataPoints.Add(new DataPoint(itemDate.ToString("MMM-yyyy").ToUpper(), item.valor + parcial));
                }
                parcial += item.valor;
                count++;
            }

            ViewBag.DataPoints = JsonConvert.SerializeObject(dataPoints);

            float totalDespesas    = despesas.Sum(x => x.Valor);
            var   porTiposDespesas = from item in despesas
                                     join tipos in db.TipoDespesas on item.IdTipoDespesa equals tipos.Id
                                     group item by new { tipos.Nome }
            into grp
                  select new
            {
                tipo  = grp.Key.Nome,
                valor = grp.Sum(x => x.Valor)
            };
            float totalReceitas    = receitas.Sum(x => x.Valor);
            var   porTiposReceitas = from item in receitas
                                     group item by new { item.TipoReceita }
            into grp
                  select new
            {
                tipo  = grp.Key.TipoReceita,
                valor = grp.Sum(x => x.Valor)
            };
            dataPoints = new List <DataPoint>();
            foreach (var item in porTiposDespesas)
            {
                dataPoints.Add(new DataPoint(item.tipo, Math.Round(item.valor / totalDespesas * 100, 2)));
            }
            ViewBag.DataPointsDespesas = JsonConvert.SerializeObject(dataPoints);

            dataPoints = new List <DataPoint>();
            foreach (var item in porTiposReceitas)
            {
                dataPoints.Add(new DataPoint(item.tipo.ToString(), Math.Round(item.valor / totalReceitas * 100, 2)));
            }
            ViewBag.DataPointsReceitas = JsonConvert.SerializeObject(dataPoints);
            return(View());
        }
        // GET: Extrato
        public ActionResult Index(String buscarIni, String buscarFim, String Tipo, String banco)
        {
            if (buscarIni != null)
            {
                TempData["buscarIni"] = buscarIni;
            }
            if (buscarFim != null)
            {
                TempData["buscarFim"] = buscarFim;
            }
            if (Tipo != null)
            {
                TempData["Tipo"] = Tipo;
            }
            if (banco != null)
            {
                TempData["Banco"] = banco;
            }

            this.buscarIni = (string)TempData.Peek("buscarIni");
            this.buscarFim = (string)TempData.Peek("buscarFim");
            this.Tipo      = (string)TempData.Peek("Tipo");
            this.banco     = (string)TempData.Peek("Banco");

            ItemExtrato item;
            var         lista    = new List <ItemExtrato>();
            var         despesas = db.Despesas.Include(desp => desp.conta).Include(conta => conta.conta.banco).ToList();

            foreach (var obj in despesas)
            {
                for (int i = 1; i <= obj.NumeroParcelas; i++)
                {
                    item                = new ItemExtrato();
                    item.Valor          = obj.Valor / obj.NumeroParcelas;
                    item.Tipo           = 1;
                    item.Definicao      = obj.CaractDespesa + "/" + obj.NomeDespesa;
                    item.DataRealizacao = obj.DataRealizacao;
                    item.DataVencimento = obj.VencimentoPrimeiraParcela.AddMonths(i - 1);
                    item.Pagamento      = i + "/" + obj.NumeroParcelas;
                    item.NomeBanco      = obj.conta.banco.Nome;

                    lista.Add(item);
                }
            }
            var receitas = db.Receitas.Include(desp => desp.conta).Include(conta => conta.conta.banco).ToList();

            foreach (var obj in receitas)
            {
                for (int i = 1; i <= obj.NumeroParcelas; i++)
                {
                    item                = new ItemExtrato();
                    item.Valor          = obj.Valor / obj.NumeroParcelas;
                    item.Tipo           = 2;
                    item.DataRealizacao = obj.DataRecebimento;
                    item.DataVencimento = obj.PrimeiraDataVencimento.AddMonths(i - 1);
                    item.Definicao      = obj.TipoReceita.ToString() + "/" + obj.Descricao;
                    item.Pagamento      = i + "/" + obj.NumeroParcelas;
                    item.NomeBanco      = obj.conta.banco.Nome;

                    lista.Add(item);
                }
            }

            lista.Sort();
            item = lista.First();
            float saldoParcial = 0;

            foreach (var obj in lista)
            {
                if (obj.Tipo == 1)
                {
                    saldoParcial -= obj.Valor;
                    obj.Saldo     = saldoParcial;
                }
                else
                {
                    saldoParcial += obj.Valor;
                    obj.Saldo     = saldoParcial;
                }
            }

            if (!String.IsNullOrEmpty(this.buscarIni) && !String.IsNullOrEmpty(this.buscarFim))
            {
                DateTime date1 = DateTime.Parse(this.buscarIni);
                DateTime date2 = DateTime.Parse(this.buscarFim);
                if (Tipo.Equals("credito"))
                {
                    lista = lista.Where(x => x.DataVencimento.CompareTo(date1) >= 0 && x.DataVencimento.CompareTo(date2) <= 0 && x.Tipo == 2).ToList();
                }
                else if (Tipo.Equals("debito"))
                {
                    lista = lista.Where(x => x.DataVencimento.CompareTo(date1) >= 0 && x.DataVencimento.CompareTo(date2) <= 0 && x.Tipo == 1).ToList();
                }
                else
                {
                    lista = lista.Where(x => x.DataVencimento.CompareTo(date1) >= 0 && x.DataVencimento.CompareTo(date2) <= 0).ToList();
                }
            }
            else if (!String.IsNullOrEmpty(this.Tipo) && this.Tipo.Equals("debito"))
            {
                lista = lista.Where(x => x.Tipo == 1 && x.DataVencimento.Month == DateTime.Today.Month).ToList();
            }
            else if (!String.IsNullOrEmpty(this.Tipo) && this.Tipo.Equals("credito"))
            {
                lista = (from obj in lista
                         where obj.Tipo == 2 && obj.DataVencimento.Month == DateTime.Today.Month
                         select obj).ToList();
                //ViewBag.Lista = lista.Where(x => x.Tipo == 2 && x.DataVencimento.Month == DateTime.Today.Month);
            }
            else
            {
                lista = (from obj in lista
                         where obj.DataVencimento.Month == DateTime.Today.Month
                         select obj).ToList();
                //ViewBag.Lista = lista.Where(x => x.DataVencimento.Month == DateTime.Today.Month);
            }
            if (!String.IsNullOrEmpty(this.banco))
            {
                lista = lista.Where(x => x.NomeBanco.ToUpper().Equals(this.banco.ToUpper())).ToList();
            }
            TempData["lista"] = lista;
            return(View("Index", lista));
        }