Exemple #1
0
        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");
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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));
        }