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)); } }
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); }