예제 #1
0
        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
                }));
            }
        }
예제 #2
0
        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()));
        }
예제 #3
0
        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));
            }
        }