public async Task <ActionResult <VoucherListDTO> > LookupVoucher( [FromQuery] int?fiscalYearId, [FromQuery] int?accountId, [FromQuery] int?ledgerNo) { try { var voucherQuery = _voucherRepo.GetVouchers(); if (fiscalYearId.HasValue) { voucherQuery = voucherQuery.Where(v => v.FiscalYearId == fiscalYearId.Value); } if (accountId.HasValue) { voucherQuery = voucherQuery.Where(v => v.AccountId == accountId.Value); } if (ledgerNo.HasValue) { voucherQuery = voucherQuery.Where(v => v.LedgerNo == ledgerNo.Value); } var vouchers = await voucherQuery .OrderBy(v => v.VoucherId) .ToListAsync(); var voucherList = _mapper.Map <List <Voucher>, List <VoucherDTO> >(vouchers); var voucherListCount = voucherList.Count; var dto = new VoucherListDTO { Vouchers = voucherList, TotalItems = voucherListCount, TotalPages = 1, CurrentPage = 1, ItemsPerPage = voucherListCount }; return(dto); } catch (Exception e) { _logger.LogError("Exception occurred during a Voucher lookup.\nError: " + e.Message); return(BadRequest()); } }
public async Task <ActionResult <VoucherListDTO> > GetVouchers([FromQuery] int page = 1, [FromQuery] int itemsPerPage = 20) { try { if (page < 1 || itemsPerPage < 1) { return(BadRequest("Request contained one or more invalid paging values.")); } var vouchers = await _voucherRepo.GetVouchers() .Skip((page - 1) * itemsPerPage) .Take(itemsPerPage) .OrderBy(f => f.VoucherId) .ToListAsync(); var voucherCount = await _voucherRepo.GetVouchers().CountAsync(); var voucherList = _mapper.Map <List <Voucher>, List <VoucherDTO> >(vouchers); var dto = new VoucherListDTO { Vouchers = voucherList, TotalItems = voucherCount, TotalPages = decimal.ToInt32(Math.Ceiling((decimal)voucherCount / (decimal)itemsPerPage)), CurrentPage = page, ItemsPerPage = itemsPerPage }; return(dto); } catch (Exception e) { _logger.LogError("Exception occurred while attempting to retrieve Vouchers.\nError: " + e.Message); return(BadRequest()); } }