Esempio n. 1
0
        public IActionResult RefundTransaction(Models.API.Requests.Transaction request)
        {
            try
            {
                if (request == null || string.IsNullOrEmpty(request.TransactionId))
                {
                    throw new ArgumentException("Missing Parameter");
                }

                var AccessToken = Request.Headers["Access-token"].ToString();

                var UserID = _db.LoginTokens.Where(s => s.Token == AccessToken).Select(p => p.UserId).SingleOrDefault();
                if (UserID != null)
                {
                    var user = _db.Users.Where(s => s.Id == UserID && s.UserTypeId != 1 && s.AdminApproval).SingleOrDefault();
                    if (user != null)
                    {
                        var transaction = _db.Transaction.Where(s => s.UserId == user.Id && s.TransactionId == request.TransactionId &&
                                                                s.TransactionTypeId == 1).SingleOrDefault();
                        if (userTransaction.isUserExceedTheMaximumAllowance(user.Id, transaction.TransactionAmount))
                        {
                            return(Ok(maximumAllowance));
                        }

                        if (userTransaction.refundTransaction(user, transaction))
                        {
                            response = new Response
                            {
                                ResponseCode    = 0,
                                ResponseMessage = "Refund Process Completed",
                                ResponseResults = true
                            };
                            return(Ok(response));
                        }
                        return(BadRequest(badRequest));
                    }
                }
                return(Unauthorized(notAuthorized));
            }
            catch (ArgumentException e)
            {
                badRequest.ResponseMessage = e.Message;
                return(BadRequest(badRequest));
            }
            catch
            {
                return(BadRequest(badRequest));
            }
        }
Esempio n. 2
0
        public IActionResult AddTransaction(Models.API.Requests.Transaction request)
        {
            try
            {
                if (request == null || !decimal.TryParse(request.TransactionAmount, out _) || (decimal.Parse(request.TransactionAmount) < 0) ||
                    string.IsNullOrEmpty(request.TransactionName))
                {
                    throw new ArgumentException("Missing Parameter");
                }

                var AccessToken = Request.Headers["Access-token"].ToString();

                var UserID = _db.LoginTokens.Where(s => s.Token == AccessToken).Select(p => p.UserId).SingleOrDefault();
                if (UserID != null)
                {
                    var user = _db.Users.Where(s => s.Id == UserID && s.UserTypeId != 1 && s.AdminApproval).SingleOrDefault();
                    if (user != null)
                    {
                        if (userTransaction.addTransaction(user, request))
                        {
                            response = new Response
                            {
                                ResponseCode    = 0,
                                ResponseMessage = "Transaction added successfully",
                                ResponseResults = true
                            };
                            return(Ok(response));
                        }
                        return(Ok(NotEnoughBalance));
                    }
                }
                return(Unauthorized(notAuthorized));
            }
            catch (ArgumentException e)
            {
                badRequest.ResponseMessage = e.Message;
                return(BadRequest(badRequest));
            }
            catch
            {
                return(BadRequest(badRequest));
            }
        }
        public bool addTransaction(Users user, Models.API.Requests.Transaction request)
        {
            if (user.CreditBalance < decimal.Parse(request.TransactionAmount))
            {
                return(false);
            }

            var TransactionId = "Trans-" + Guid.NewGuid().ToString().Substring(6);
            var transaction   = new Transaction
            {
                TransactionId     = TransactionId,
                TransactionAmount = decimal.Parse(request.TransactionAmount),
                TransactionName   = request.TransactionName,
                TransactionTypeId = 1,
                UserId            = user.Id
            };

            _db.Transaction.Add(transaction);
            user.CreditBalance -= decimal.Parse(request.TransactionAmount);
            _db.SaveChanges();
            return(true);
        }