public List <ExtratoCategoriaView> ExtratoCategoria(DateTime dataBase, bool efetivados = true) { var DataInicial = new DateTime(dataBase.Year, dataBase.Month, 1); var DataFinal = DataInicial.AddMonths(1).AddDays(-1); var registros = DBCore.InstanciaDoBanco().Movimentos .Where ( w => (w.Data >= DataInicial && w.Data <= DataFinal) && (w.Efetivado.Equals("S") || !efetivados) ) .GroupBy ( g => g.Categoria ) .Select ( s => new { Categoria = s.Key, Credito = s.Sum(i => (i.TipoMovimento.CreditoDebito.Equals("C") ? i.Valor : 0)), Debito = s.Sum(i => (i.TipoMovimento.CreditoDebito.Equals("D") ? i.Valor : 0)), } ) .ToList(); var categorianegocio = new CategoriaNegocio(); var resposta = new List <ExtratoCategoriaView>(); foreach (var extrato in registros) { resposta.Add(new ExtratoCategoriaView { Categoria = categorianegocio.ConverteParaView(extrato.Categoria), Debito = extrato.Debito, Credito = extrato.Credito }); } return(resposta); }
public DashBoardResumoView ObtemResumoDashBoard(int Mes, int Ano) { var DataInicial = new DateTime(Ano, Mes, 1); var DataFinal = DataInicial.AddMonths(1).AddDays(-1); #region Resumo por Categoria var registros = DBCore.InstanciaDoBanco().Movimentos .Where ( w => (w.Data <= DataFinal) && (w.Efetivado.Equals("S")) && w.TipoMovimento.CreditoDebito.Equals("D") ) .GroupBy ( g => g.Categoria ) .Select ( s => new { Categoria = s.Key, Debito = s.Sum(i => i.Valor), Credito = decimal.Zero } ) .ToList(); var categorianegocio = new CategoriaNegocio(); var resposta = new List <ExtratoCategoriaView>(); var indice = 1; foreach (var extrato in registros) { resposta.Add(new ExtratoCategoriaView { Ordem = indice++, Categoria = categorianegocio.ConverteParaView(extrato.Categoria), Debito = extrato.Debito, Credito = extrato.Credito }); } #endregion #region Saldo Anterior decimal?SaldoAnterior = DBCore.InstanciaDoBanco().Movimentos .Where ( w => (w.Data <= DateTime.Today) && w.Efetivado.Equals("S") ) .GroupBy(g => 1) .Select( s => new { Valor = s.Sum(su => su.TipoMovimento.CreditoDebito.Equals("C") ? su.Valor : -su.Valor) } ).SingleOrDefault()?.Valor; #endregion #region Resumo Tiles var dash = DBCore.InstanciaDoBanco().Movimentos .Where ( w => (w.Data <= DataFinal) && !w.Efetivado.Equals("S") ) .GroupBy(g => 1) .Select ( s => new { Credito = s.Sum(i => (i.TipoMovimento.CreditoDebito.Equals("C") ? i.Valor : 0)), Debito = s.Sum(i => (i.TipoMovimento.CreditoDebito.Equals("D") ? i.Valor : 0)), } ) .SingleOrDefault(); #endregion var retorno = new DashBoardResumoView { Categorias = resposta, DashBoardResumo = new DashBoardResumo { DespesasAberto = dash?.Debito ?? 0, ReceitasAberto = dash?.Credito ?? 0, SaldoContas = ((SaldoAnterior ?? 0) + (dash?.Credito ?? 0) - (dash?.Debito ?? 0)) } }; return(retorno); }