public ActionResult Index() { var userId = User.Identity.GetUserId(); var queryEntreDatas = db.SaldoUtilizadores.Where(d => d.ApplicationUserId == userId) .GroupBy(x => x.ApplicationUserId) .Select(x => new { biggestValor = x.Where(y => y.valor > 0).Max(y => (decimal?)y.valor) ?? null, lowestValor = x.Where(y => y.valor < 0).Min(y => (decimal?)y.valor) ?? null, expenses = x.Where(y => y.valor < 0).Sum(y => (decimal?)y.valor) ?? 0, earnings = x.Where(y => y.valor > 0).Sum(y => (decimal?)y.valor) ?? 0, lowestDate = x.Where(y => y.valor == x.Min(z => z.valor)).Where(y => y.valor < 0).Select(y => y.data).FirstOrDefault(), biggestDate = x.Where(y => y.valor == x.Max(z => z.valor)).Where(y => y.valor > 0).Select(y => y.data).FirstOrDefault() }).SingleOrDefault(); if (userId != null && queryEntreDatas != null) { DadosEstatisticos modelo = new DadosEstatisticos() { utilizador = User.Identity.GetUserName(), gastos = queryEntreDatas.expenses, rendimentos = queryEntreDatas.earnings, maiorValorDespesa = queryEntreDatas.lowestValor, dataMaiorDespesa = queryEntreDatas.lowestDate, dataMaiorRendimento = queryEntreDatas.biggestDate, maiorValorRendimento = queryEntreDatas.biggestValor }; return(View(modelo)); } else { return(View()); } }
public ActionResult Index(string dataInicial, string dataFinal) { var userId = User.Identity.GetUserId(); var queryDefault = db.SaldoUtilizadores.Where(d => d.ApplicationUserId == userId) .GroupBy(x => x.ApplicationUserId) .Select(x => new { biggestValor = x.Where(y => y.valor > 0).Max(y => (decimal?)y.valor) ?? null, lowestValor = x.Where(y => y.valor < 0).Min(y => (decimal?)y.valor) ?? null, expenses = x.Where(y => y.valor < 0).Sum(y => (decimal?)y.valor) ?? 0, earnings = x.Where(y => y.valor > 0).Sum(y => (decimal?)y.valor) ?? 0, lowestDate = x.Where(y => y.valor == x.Min(z => z.valor)).Where(y => y.valor < 0).Select(y => y.data).FirstOrDefault(), biggestDate = x.Where(y => y.valor == x.Max(z => z.valor)).Where(y => y.valor > 0).Select(y => y.data).FirstOrDefault() }).FirstOrDefault(); if (queryDefault != null) { DadosEstatisticos modeloDefault = new DadosEstatisticos() { utilizador = User.Identity.GetUserName(), gastos = queryDefault.expenses, rendimentos = queryDefault.earnings, maiorValorDespesa = queryDefault.lowestValor, dataMaiorDespesa = queryDefault.lowestDate, dataMaiorRendimento = queryDefault.biggestDate, maiorValorRendimento = queryDefault.biggestValor }; System.Diagnostics.Debug.WriteLine(dataInicial); if (dataInicial != "" && dataFinal != "") { DateTime data1 = DateTime.Parse(dataInicial); DateTime data2 = DateTime.Parse(dataFinal); var queryEntreDatas = db.SaldoUtilizadores.Where(d => d.ApplicationUserId == userId && d.data >= data1 && d.data <= data2) .GroupBy(x => x.ApplicationUserId) .Select(x => new { biggestValor = x.Where(y => y.valor > 0).Max(y => (decimal?)y.valor) ?? null, lowestValor = x.Where(y => y.valor < 0).Min(y => (decimal?)y.valor) ?? null, expenses = x.Where(y => y.valor < 0).Sum(y => (decimal?)y.valor) ?? 0, earnings = x.Where(y => y.valor > 0).Sum(y => (decimal?)y.valor) ?? 0, lowestDate = x.Where(y => y.valor == x.Min(z => z.valor)).Where(y => y.valor < 0).Select(y => y.data).FirstOrDefault(), biggestDate = x.Where(y => y.valor == x.Max(z => z.valor)).Where(y => y.valor > 0).Select(y => y.data).FirstOrDefault() }).FirstOrDefault(); if (queryEntreDatas != null) { DadosEstatisticos modelo = new DadosEstatisticos() { utilizador = User.Identity.GetUserName(), gastos = queryEntreDatas.expenses, rendimentos = queryEntreDatas.earnings, maiorValorDespesa = queryEntreDatas.lowestValor, dataMaiorDespesa = queryEntreDatas.lowestDate, dataMaiorRendimento = queryEntreDatas.biggestDate, maiorValorRendimento = queryEntreDatas.biggestValor }; return(View(modelo)); } else { return(View(modeloDefault)); } } else { return(View(modeloDefault)); } } else { return(View()); } }