public async Task <ActionResult> GetExpenses(ExpenseParams expenseParams) { if (!(expenseParams.Type == "sistema" || expenseParams.Type == "diario")) { ModelState.AddModelError("expenseType", "expense type must be iether sistema or diario"); } if (!await _repo.TallyExists(expenseParams.TallyId)) { ModelState.AddModelError("tallyId", "Tally Id doesn't exist"); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var expenses = await _repo.GetExpensesByType(expenseParams.TallyId, expenseParams.Type); var expensesToReturn = _mapper.Map <IEnumerable <ExpensesDto> >(expenses); return(Ok(expensesToReturn)); throw new Exception("failed on getting expenses"); }
public async Task <PaginatedList <Expense> > GetPagedExpenses(ExpenseParams @params) { var expenses = _context.Expenses .Include(x => x.Category) .AsQueryable(); if (@params.CategoryId != Guid.Empty) { expenses = expenses.Where(c => c.CategoryId == @params.CategoryId).AsQueryable(); } switch (@params.OrderBy) { case "date-ascending": expenses = expenses.OrderBy(d => d.Date); break; case "amount-ascending": expenses = expenses.OrderBy(a => a.Amount); break; case "amount-descending": expenses = expenses.OrderByDescending(a => a.Amount); break; case "date-descending": expenses = expenses.OrderByDescending(d => d.Date); break; default: expenses = expenses.OrderByDescending(d => d.Date); break; } return(await PaginatedList <Expense> .CreateAsync(expenses.AsNoTracking(), @params.PageNumber, @params.PageSize)); }
public async Task <IActionResult> Index(int?page, int?pageSize, string orderBy, Guid category) { ExpenseParams @params = new ExpenseParams { PageNumber = page ?? 1, PageSize = pageSize ?? 10, OrderBy = orderBy, CategoryId = category }; var expenses = await _repo.GetPagedExpenses(@params); ViewData["OrderBy"] = orderBy == null ? "" : orderBy; var viewModel = new ExpenseTableViewModel(); viewModel.Expenses = expenses; viewModel.Categories = await _repo.GetList <Category>(); viewModel.CategorySelected = category; viewModel.PageSize = @params.PageSize; return(View(viewModel)); }