public async Task <IActionResult> GetTransactions([FromQuery] GetTransactionsRequestModel request) { try { var response = await _mediator.Send(request); return(Ok(new PagedResponse <GetTransactionsResponseModel>(response, request.PageNo, request.PageSize, transactionCount) { Message = "Transactions detail retrieved successfully", Success = true })); } catch (ArgumentException ex) { return(BadRequest(new Response { Success = false, Message = ex.Message })); } catch (Exception ex) { return(StatusCode(500, new ErrorResponse { Errors = { ex }, Success = false, Message = ex.Message })); } }
public async Task <List <GetTransactionsResponseModel> > Handle(GetTransactionsRequestModel request, CancellationToken cancellationToken) { if (request.StartDate != null && request.EndDate == null) { throw new ArgumentException("End date is required"); } if (request.StartDate == null && request.EndDate != null) { throw new ArgumentException("Start date is required"); } if (request.StartDate != null && request.EndDate != null && request.EndDate < request.StartDate) { throw new ArgumentException("End date cannot be less than start date"); } if (request.PageNo < 1) { request.PageNo = 1; } if (request.PageSize < 1) { request.PageSize = 1; } int skip = (request.PageNo - 1) * request.PageSize; var trans = _walletTransRepo.QueryAll(t => t.CustomerId == WebHelper.CurrentCustomerId); trans = request.Type == null ? trans : trans.Where(t => t.Type == request.Type); trans = request.Status == null ? trans : trans.Where(t => t.Status == request.Status); trans = request.AccountNumber == null ? trans : trans.Where(t => t.AccountNumber == request.AccountNumber); trans = request.StartDate == null ? trans : trans.Where(t => t.TransDate >= request.StartDate && t.TransDate <= request.EndDate); WalletController.transactionCount = trans.Count(); trans = trans.Skip(skip).Take(request.PageSize); trans = request.Sort.ToLower() == "asc" ? trans.OrderBy(t => t.TransDate) : trans.OrderByDescending(t => t.TransDate); return(_mapper.Map <List <GetTransactionsResponseModel> >(trans.ToList())); }
public async Task <ApiResponse> GetTransactions(GetTransactionsRequestModel options) { ApiResponse response = new ApiResponse(); int _pageNo = (options.pageNo == 0) ? 1 : options.pageNo; int _pageLimit = (options.pageSize == 0) ? int.MaxValue : options.pageSize; var transactions = from trans in _context.Transactions join prod in _context.Products on trans.ProductId equals prod.ProductId join cat in _context.Categories on prod.CategoryId equals cat.CategoryId select new { TransactionDate = trans.TransactionDate, Quantity = trans.Quantity, Type = trans.Type, TransactionId = trans.TransactionId, ProductName = prod.Name, CategoryName = cat.Name, CategoryCode = cat.CatCode, ProductCode = prod.ProductCode, CategoryId = cat.CategoryId }; if (options.CategoryId > 0) { transactions = transactions.Where(x => x.CategoryId == options.CategoryId); } if (!string.IsNullOrEmpty(options.Type)) { transactions = transactions.Where(x => x.Type == options.Type.Trim()); } if (options.StartDate.HasValue) { transactions = transactions.Where(x => x.TransactionDate >= options.StartDate); } if (options.EndDate.HasValue) { transactions = transactions.Where(x => x.TransactionDate <= options.EndDate); } if (!string.IsNullOrEmpty(options.Search)) { transactions = transactions.Where(x => x.ProductName.Contains(options.Search) || x.ProductCode.Contains(options.Search) || x.CategoryCode.Contains(options.Search) || x.CategoryName.Contains(options.Search)); } response.Data = await transactions.Skip((_pageNo - 1) *_pageLimit).Take(_pageLimit).ToListAsync(); response.Message = "Transactions get successfully"; response.Status = 1; return(response); }
public async Task <IActionResult> GetTransactions([FromQuery] GetTransactionsRequestModel options) { var cat = await tansactionService.GetTransactions(options); if (cat.Status == 1) { return(Ok(cat)); } else { return(NotFound(cat)); } }