public async Task <IActionResult> PostUser_Client_Card_Info(string appid, [FromBody] User_Client_Card_Info user_Client_Card_Info, [FromServices]
                                                                    BankContext BankDb)
        {
            try
            {
                //Authentication of API
                if (appid == null)
                {
                    return(BadRequest());
                }
                var user = _context.Users.Where(e => e.AppId.ToString().CompareTo(appid) == 1).Select(e => e);
                if (user == null)
                {
                    return(BadRequest("You are not authorised to use the API, Please register or Contact Administrator"));
                }
                // Verify Model
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
                //Check if user has valid card details
                if (_context.User_Clients_Card_Info.Where(e => e.CardNumber == user_Client_Card_Info.CardNumber) == null)
                {
                    return(BadRequest("Card Number is not valid"));
                }

                var bank_User_Client_Card_Info = BankDb.Bank_User_Client_Card_Info.Where(e => e.CardNumber == user_Client_Card_Info.CardNumber).Select(e => e).FirstOrDefault();
                if (bank_User_Client_Card_Info == null)
                {
                    return(BadRequest("Card Number is not valid"));
                }
                decimal availableAmount = 0;
                var     account         = BankDb.Bank_User_Client_Account.Where(e => e.AccountNumber == bank_User_Client_Card_Info.AccountNumber).FirstOrDefault();
                if (account == null)
                {
                    return(BadRequest("Account Number is not valid"));
                }
                availableAmount = account.AvailableAmount - user_Client_Card_Info.TransactionAmount;

                account.AvailableAmount     = availableAmount;
                BankDb.Entry(account).State = EntityState.Modified;

                try
                {
                    await BankDb.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    return(NotFound());
                }
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
            return(CreatedAtAction("GetUser_Client_Card_Info", new { id = user_Client_Card_Info.CardNumber }, user_Client_Card_Info));
        }
        public async Task <JsonResult> PostResult(User_Client_Card_Info User_Client_Card_Info)
        {
            using (HttpClient client = new HttpClient())
            {
                var content = new StringContent(JsonConvert.SerializeObject(User_Client_Card_Info), Encoding.UTF8, "application/json");

                var response = await client.PostAsync("https://localhost:44311/api/PaymentGateway?appid=0c56f2c2-5457-4a32-ba2b-971afdb9f99e&CardNumber=2407199449917042", content);

                var responseString = await response.Content.ReadAsStringAsync();

                return(Json(responseString, JsonRequestBehavior.AllowGet));
            };
        }
        public ActionResult About(decimal price, string desc)
        {
            User_Client_Card_Info a = new User_Client_Card_Info
            {
                TransactionAmount   = price,
                PurchaseDescription = desc,
                CardNumber          = "2407199449917042",
                IdentityNumber      = "K2407944608215",
                CardType            = "Credit",
                ExpirationDate      = DateTime.Parse("2030-12-30")
            };

            return(View(a));
        }
        public async Task <ActionResult> About(User_Client_Card_Info User_Client_Card_Info)
        {
            var s = await PostResult(User_Client_Card_Info);

            return(RedirectToAction("Index"));
        }
示例#5
0
        public async Task <IActionResult> PostPaymentGateway(string appid, [FromBody] User_Client_Card_Info user_Client_Card_Info, [FromServices]
                                                             BankContext BankDb)
        {
            var TransactionHist = new Models.Transaction_History();

            try
            {
                //Authentication of API
                if (appid == null)
                {
                    return(BadRequest());
                }
                var user = _context.Users.Where(e => e.AppId.ToString().CompareTo(appid) == 1).Select(e => e);
                if (user == null)
                {
                    return(BadRequest("You are not authorised to use the API, Please register or Contact Administrator"));
                }
                // Verify Model
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
                //Check if user has valid card details
                if (_context.User_Clients_Card_Info.Where(e => e.CardNumber == user_Client_Card_Info.CardNumber) == null)
                {
                    return(BadRequest("Card Number is not valid"));
                }
                //linked the card with his account
                var bank_User_Client_Card_Info = BankDb.Bank_User_Client_Card_Info.Where(e => e.CardNumber == user_Client_Card_Info.CardNumber).Select(e => e).FirstOrDefault();
                if (bank_User_Client_Card_Info == null)
                {
                    return(BadRequest("Card Number is not valid"));
                }
                //declare new amount
                decimal availableAmount = 0;
                var     account         = BankDb.Bank_User_Client_Account.Where(e => e.AccountNumber == bank_User_Client_Card_Info.AccountNumber).FirstOrDefault();
                if (account == null)
                {
                    return(BadRequest("Account Number is not valid"));
                }
                //Deduce the purchase price in the account
                availableAmount = account.AvailableAmount - user_Client_Card_Info.TransactionAmount;
                //update the db available amount
                account.AvailableAmount     = availableAmount;
                BankDb.Entry(account).State = EntityState.Modified;

                try
                {
                    await BankDb.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    return(NotFound());
                }
                //write transaction into hist
                BankDb.Bank_Transaction_History.Add(new Models.BankModel.Bank_Transaction_History
                {
                    TransactionId     = Guid.NewGuid().ToString(),
                    CardNumber        = user_Client_Card_Info.CardNumber,
                    TransactionDate   = DateTime.Now,
                    TransactionAmount = user_Client_Card_Info.TransactionAmount,
                    TransactionType   = "Debit",
                    TransactionStatus = "Success"
                });
                try
                {
                    await BankDb.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    return(NotFound());
                }

                TransactionHist = new Models.Transaction_History
                {
                    TransactionDate     = DateTime.Now,
                    CardNumber          = user_Client_Card_Info.CardNumber,
                    PurchaseAmount      = user_Client_Card_Info.TransactionAmount,
                    PurchaseDescription = user_Client_Card_Info.PurchaseDescription,
                    TransactionStatus   = "Success"
                };
                _context.Transaction_History.Add(TransactionHist);
                try
                {
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    return(NotFound());
                }
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
            return(Ok(TransactionHist));
        }