public ActionResult Repair(int orgid, int peopleid) { DbUtil.Db.RepairEnrollmentTransaction(orgid, peopleid); var m = new TransactionHistoryModel(peopleid, orgid); return(View("History", m.FetchHistory())); }
public bool DispenseMoney(int id_account, decimal amount, string description) { try { _context.Database.BeginTransaction(); SqlDecimal account = _context.AccountDetails.Where(a => a.Id_Account == id_account).FirstOrDefault().TotalAmount; account = account - amount; _context.SaveChanges(); if (account >= 0) { TransactionHistoryModel hist = new TransactionHistoryModel { }; hist.Description = description; hist.TransactionAmount = amount; hist.Id_Account = id_account; hist.TransactionDate = DateTime.Today; hist.TransactionType = "ATM transaction."; _context.TransactionHistory.Add(hist); _context.SaveChanges(); _context.Database.CommitTransaction(); return(true); } else { _context.Database.RollbackTransaction(); return(false); } } catch (Exception) { throw; } }
public async Task <TransactionHistoryModel> AddTransactionHistory(TransactionHistoryModel transactionHistoryModel) { var newTransactionHistory = _mapper.Map <TransactionHistory>(transactionHistoryModel); var addTransactionHistory = await _transactionHistoryManager.AddTransactionHistory(newTransactionHistory); return(_mapper.Map <TransactionHistoryModel>(addTransactionHistory)); }
public async Task <TransactionHistoryModel> GetTransactionHistory() { var transactionModel = new TransactionHistoryModel(); var client = new HttpClient(); var userId = ConsoleSession.Instance.Data["UserId"]; var sessionId = ConsoleSession.Instance.Data["SessionToken"]; var url = "http://localhost:54194/Transaction/ConsoleTransaction/" + $"?Type={TransactionType.GetHistory}&UserId={userId}&Amount={0}&SessionId={sessionId}"; try { var task = await client.GetAsync(url); task.EnsureSuccessStatusCode(); transactionModel.Content = await task.Content.ReadAsStringAsync(); transactionModel.Status = task.StatusCode; } catch (Exception ex) { transactionModel.Status = HttpStatusCode.BadRequest; transactionModel.Content = ex.Message; } client.Dispose(); return(transactionModel); }
public ActionResult Delete(int id) { var t = DbUtil.Db.EnrollmentTransactions.Single(tt => tt.TransactionId == id); DbUtil.Db.DeleteEnrollmentTransaction(id); var m = new TransactionHistoryModel(t.PeopleId, t.OrganizationId); return(View("History", m.FetchHistory())); }
public ActionResult TransHistory(int id, int oid) { var m = new TransactionHistoryModel(id, oid); ViewBag.orgid = oid; ViewBag.PeopleId = id; ViewBag.IsMember = DbUtil.Db.OrganizationMembers.Any(mm => mm.OrganizationId == oid && mm.PeopleId == id); return(View(m)); }
public ActionResult Index(int id, int oid) { var m = new TransactionHistoryModel(id, oid); ViewBag.orgid = oid; ViewBag.PeopleId = id; ViewBag.IsMember = CurrentDatabase.OrganizationMembers.Any(mm => mm.OrganizationId == oid && mm.PeopleId == id); return(View(m)); }
private void Log(string merchTxnRef, string merchantID, string amount, string orderInfo, string hashvalidateResult, string exception) { //Find user string email = ""; string userId = ""; long reference = 0; long.TryParse(orderInfo, out reference); var transactionResponse = _transaction.FindByTransactionReference(reference); if (transactionResponse.Items != null && transactionResponse.Items.Count > 0) { FindItemReponse <UserModel> userResponse = _userService.FindUserByID(transactionResponse.Items.First().UserId); if (userResponse.Item != null) { email = userResponse.Item.Email; userId = userResponse.Item.UserID; } } // Log info StringBuilder builder = new StringBuilder(); builder.Append(string.Format("Transaction email {0}, ", email)); builder.Append(string.Format("Transaction vpc_MerchTxnRef {0}, ", merchTxnRef)); builder.Append(string.Format("Transaction vpc_Merchant {0}, ", merchantID)); builder.Append(string.Format("Transaction vpc_Amount {0}, ", amount)); builder.Append(string.Format("Transaction vpc_OrderInfo {0}, ", orderInfo)); builder.Append(string.Format("Transaction hashvalidateResult {0}, ", hashvalidateResult)); builder.Append(string.Format("Transaction error messate {0}, ", exception)); string body = string.Format("The transaction error info: <b>{0}</b></br> Please contact administrator.", builder.ToString()); Task.Run(() => DataHelper.GetInstance().SendEmail(email, "The transaction error", body)); TransactionHistoryModel trans = new TransactionHistoryModel { Action = "Payment return", CreatedDate = DateTime.Now, Log = builder.ToString(), Status = (int)TransactionStatus.Error, UserId = userId, Email = email, TransactionReference = reference }; _transaction.Create(trans); }
public ActionResult PaymentReturn() { string hashvalidateResult = ""; string vpc_TxnResponseCode = "Unknown"; string amount = "Unknown"; string localed = "Unknown"; string command = "Unknown"; string version = "Unknown"; string cardType = "Unknown"; string orderInfo = "Unknown"; string merchantID = "Unknown"; string authorizeID = "Unknown"; string merchTxnRef = "Unknown"; string transactionNo = "Unknown"; string acqResponseCode = "Unknown"; string txnResponseCode = "Unknown"; string message = "Unknown"; string msg = string.Empty; try { // Khoi tao lop thu vien VPCRequest conn = new VPCRequest("http://onepay.vn"); conn.SetSecureSecret(SECURE_SECRET); // Xu ly tham so tra ve va kiem tra chuoi du lieu ma hoa hashvalidateResult = conn.Process3PartyResponse(Request.QueryString); // Lay gia tri tham so tra ve tu cong thanh toan vpc_TxnResponseCode = conn.GetResultField("vpc_TxnResponseCode", "Unknown"); amount = conn.GetResultField("vpc_Amount", "Unknown"); localed = conn.GetResultField("vpc_Locale", "Unknown"); command = conn.GetResultField("vpc_Command", "Unknown"); version = conn.GetResultField("vpc_Version", "Unknown"); cardType = conn.GetResultField("vpc_Card", "Unknown"); orderInfo = conn.GetResultField("vpc_OrderInfo", "Unknown"); merchantID = conn.GetResultField("vpc_Merchant", "Unknown"); authorizeID = conn.GetResultField("vpc_AuthorizeId", "Unknown"); merchTxnRef = conn.GetResultField("vpc_MerchTxnRef", "Unknown"); transactionNo = conn.GetResultField("vpc_TransactionNo", "Unknown"); acqResponseCode = conn.GetResultField("vpc_AcqResponseCode", "Unknown"); txnResponseCode = vpc_TxnResponseCode; message = conn.GetResultField("vpc_Message", "Unknown"); } catch (Exception ex) { msg = "The payment is in-progress, please ask administrator for looking at this!"; Log(merchTxnRef, merchantID, amount, orderInfo, hashvalidateResult, ex.StackTrace); return(View(new InsertResponse { Message = "An error occurs at payment service, please contact administrator!", ErrorCode = (int)ErrorCode.Error })); } //Find user var participantType = ""; long reference = 0; long.TryParse(orderInfo, out reference); var transactionResponse = _transaction.FindByTransactionReference(reference); string userID = ""; string email = ""; if (transactionResponse.Items != null && transactionResponse.Items.Count > 0) { FindItemReponse <UserModel> userResponse = _userService.FindUserByID(transactionResponse.Items.First().UserId); if (userResponse.Item != null) { userID = userResponse.Item.UserID; email = userResponse.Item.Email; FindAllItemReponse <MailingAddressModel> mailingResponse = _mailingService.FindMailingAddressByUser(userResponse.Item.UserID); if (mailingResponse.Items != null) { var mailing = mailingResponse.Items.SingleOrDefault(); if (mailing != null) { participantType = mailing.ParticipantType; } } } } //Save payment PaymentModel payment = new PaymentModel(); payment.PaymentID = Guid.NewGuid().ToString(); payment.UserID = userID; payment.Amount = double.Parse(amount) / 100; payment.CreatedBy = userID; payment.CreatedDate = DateTime.Now; payment.MerchRef = merchTxnRef; payment.PaymentType = participantType; if (string.IsNullOrEmpty(payment.PaymentType)) { payment.PaymentType = "Unknown"; } try { //Validate transaction if (hashvalidateResult == "CORRECTED" && txnResponseCode.Trim() == "0") { //vpc_Result.Text = "Transaction was paid successful"; payment.Status = (int)PaymentStatus.Completed; msg = "Your payment was paid successful!"; //Sending email //USD decimal usd = 0; decimal usdrate = 0; try { usdrate = DataHelper.GetInstance().GetCurrencyRate(FROM_CURRENCY, 22265); usd = decimal.Parse(amount) / usdrate; } catch (Exception) { } string messageBody = DataHelper.GetInstance().BuildInvoicePdfTemplate(payment.PaymentType, merchTxnRef, transactionNo, usd.ToString(), amount, DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss.fff", CultureInfo.InvariantCulture)); string title = string.Format(PAYMENT_TITLE, transactionNo); Task.Run(() => DataHelper.GetInstance().SendEmail(email, title, messageBody)); } else if (hashvalidateResult == "INVALIDATED" && txnResponseCode.Trim() == "0") { //vpc_Result.Text = "Transaction is pending"; payment.Status = (int)PaymentStatus.Pending; msg = "Your payment was in pending status, please contact our administrator!"; } else { //vpc_Result.Text = "Transaction was not paid successful"; payment.Status = (int)PaymentStatus.Error; msg = "The payment was not paid successful, please try again!"; } } catch (Exception ex) { msg = "The payment is in-progress, please ask administrator for looking at this!"; Log(merchTxnRef, merchantID, amount, orderInfo, hashvalidateResult, ex.StackTrace); } InsertResponse _response = _paymentService.Create(payment); _response.Message = msg; // Log info StringBuilder strBuilder = new StringBuilder(); strBuilder.Append(string.Format("Transaction vpc_MerchTxnRef {0}, ", merchTxnRef)); strBuilder.Append(string.Format("Transaction vpc_Merchant {0}, ", merchantID)); strBuilder.Append(string.Format("Transaction vpc_Amount {0}, ", amount)); strBuilder.Append(string.Format("Transaction vpc_OrderInfo {0}, ", orderInfo)); strBuilder.Append(string.Format("Transaction hashvalidateResult {0}, ", hashvalidateResult)); strBuilder.Append(string.Format("Transaction userId {0}, ", userID)); strBuilder.Append(string.Format("Transaction email {0}, ", email)); TransactionHistoryModel transaction = new TransactionHistoryModel { Action = "Payment completed", CreatedDate = DateTime.Now, Log = strBuilder.ToString(), Status = (int)TransactionStatus.Completed, UserId = merchTxnRef, Email = email, TransactionReference = reference }; _transaction.Create(transaction); return(View(_response)); }
public ActionResult MakePayment() { FindItemReponse <UserModel> response = _userService.FindUserByID(Session["User-UserID"].ToString()); if (response.Item != null) { FindAllItemReponse <MailingAddressModel> mailingResponse = _mailingService.FindMailingAddressByUser(Session["User-UserID"].ToString()); if (mailingResponse.Items != null) { var mailing = mailingResponse.Items.SingleOrDefault(); if (mailing != null) { //Caculate payment //Get fee int fee = -1; DateTime earlyBird = new DateTime(2017, 6, 30); DateTime regular = new DateTime(2017, 11, 26); int age = DataHelper.GetInstance().CalculateAge(response.Item.DateOfBirth.Value); switch (mailing.ParticipantType) { case "International delegates": case "International youth": if (age < 25) { fee = 150; } else { if (DateTime.UtcNow <= earlyBird) { fee = 550; } else { fee = 600; } } break; case "Vietnamese delegate": case "Vietnamese youth": if (age < 25) { fee = 100; } else { if (DateTime.UtcNow <= earlyBird) { fee = 200; } else { fee = 250; } } break; default: fee = -1; break; } if (fee == -1) { return(RedirectToAction("RegistrationIncompleted")); } //Parse currency decimal amount = 0; decimal usdrate = 0; try { usdrate = DataHelper.GetInstance().GetCurrencyRate(FROM_CURRENCY, 22265); } catch (Exception) { //Try convert using google try { string _amount = DataHelper.GetInstance().CurrencyConvert(fee, FROM_CURRENCY, TO_CURRENCY); _amount = _amount.Substring(0, _amount.IndexOf(" ")); amount = decimal.Parse(_amount); } catch (Exception) { return(RedirectToAction("Index", "RequestError")); } } //Calculate amount if (usdrate != 0) { amount = fee * usdrate; } if (amount == 0) { return(RedirectToAction("Index", "RequestError")); } //amount X 100 before parse to OnePay amount = amount * 100; // Khoi tao lop thu vien va gan gia tri cac tham so gui sang cong thanh toan VPCRequest conn = new VPCRequest(VIRTUAL_PAYMENT_CLIENT); conn.SetSecureSecret(SECURE_SECRET); // Add the Digital Order Fields for the functionality you wish to use // Core Transaction Fields conn.AddDigitalOrderField("AgainLink", "http://onepay.vn"); conn.AddDigitalOrderField("Title", "onepay paygate"); //Chon ngon ngu hien thi tren cong thanh toan (vn/en) conn.AddDigitalOrderField("vpc_Locale", vpc_Locale); conn.AddDigitalOrderField("vpc_Version", vpc_Version); conn.AddDigitalOrderField("vpc_Command", vpc_Command); //Test account string subId = string.Format("{0}", DateTime.Now.Ticks); conn.AddDigitalOrderField("vpc_Merchant", vpc_Merchant); conn.AddDigitalOrderField("vpc_AccessCode", vpc_AccessCode); conn.AddDigitalOrderField("vpc_MerchTxnRef", subId); //Package order conn.AddDigitalOrderField("vpc_Amount", amount.ToString()); var transactionReference = DateTime.Now.Ticks; StringBuilder builder = new StringBuilder(); builder.Append(string.Format("Transaction vpc_MerchTxnRef {0}, ", subId)); builder.Append(string.Format("Transaction vpc_Merchant {0}, ", vpc_Merchant)); builder.Append(string.Format("Transaction vpc_Amount {0}, ", amount)); builder.Append(string.Format("Transaction fullname {0}, ", response.Item.FullName)); builder.Append(string.Format("Transaction email {0}", response.Item.Email)); builder.Append(string.Format("Transaction reference {0}", transactionReference)); TransactionHistoryModel trans = new TransactionHistoryModel { Action = "Create payment", CreatedDate = DateTime.Now, Log = builder.ToString(), Status = (int)TransactionStatus.Created, UserId = response.Item.UserID, Email = response.Item.Email, TransactionReference = transactionReference }; var insertResponse = _transaction.Create(trans); //Order info conn.AddDigitalOrderField("vpc_OrderInfo", transactionReference.ToString()); //Return url conn.AddDigitalOrderField("vpc_ReturnURL", vpc_ReturnURL); // Dia chi IP cua khach hang conn.AddDigitalOrderField("vpc_TicketNo", Request.UserHostAddress); // Chuyen huong trinh duyet sang cong thanh toan String url = conn.Create3PartyQueryString(); return(Redirect(url)); } } } return(RedirectToAction("RegistrationIncompleted")); }
public async Task UpdateTransactionHistory(TransactionHistoryModel transactionHistoryModel) { var transactionHistory = _mapper.Map <TransactionHistory>(transactionHistoryModel); await _transactionHistoryManager.UpdateTransactionHistory(transactionHistory); }
public void IntegrationTest() { var connection = TestSession.GetConnection(); connection.Open(); #region good insertion and select by id test TransactionHistoryModel inserted = new TransactionHistoryModel(); inserted.ProductID = TestSession.Random.Next(); inserted.ReferenceOrderID = TestSession.Random.Next(); inserted.ReferenceOrderLineID = TestSession.Random.Next(); inserted.TransactionDate = TestSession.Random.RandomDateTime(); inserted.TransactionType = TestSession.Random.RandomString(1); inserted.Quantity = TestSession.Random.Next(); inserted.ActualCost = TestSession.Random.RandomDecimal(); inserted.ModifiedDate = TestSession.Random.RandomDateTime(); _tested.Insert(connection, new[] { inserted }); var selectedAfterInsertion = _tested.GetByPrimaryKey(connection, new TransactionHistoryModelPrimaryKey() { TransactionID = inserted.TransactionID, }); CollectionAssert.IsNotEmpty(selectedAfterInsertion); var selectedAfterInsert = selectedAfterInsertion.Single(); Assert.AreEqual(inserted.TransactionID, selectedAfterInsert.TransactionID); Assert.AreEqual(inserted.ProductID, selectedAfterInsert.ProductID); Assert.AreEqual(inserted.ReferenceOrderID, selectedAfterInsert.ReferenceOrderID); Assert.AreEqual(inserted.ReferenceOrderLineID, selectedAfterInsert.ReferenceOrderLineID); Assert.AreEqual(inserted.TransactionDate, selectedAfterInsert.TransactionDate); Assert.AreEqual(inserted.TransactionType, selectedAfterInsert.TransactionType); Assert.AreEqual(inserted.Quantity, selectedAfterInsert.Quantity); Assert.AreEqual(inserted.ActualCost, selectedAfterInsert.ActualCost); Assert.AreEqual(inserted.ModifiedDate, selectedAfterInsert.ModifiedDate); #endregion #region update and select by id test inserted.ProductID = TestSession.Random.Next(); inserted.ReferenceOrderID = TestSession.Random.Next(); inserted.ReferenceOrderLineID = TestSession.Random.Next(); inserted.TransactionDate = TestSession.Random.RandomDateTime(); inserted.TransactionType = TestSession.Random.RandomString(1); inserted.Quantity = TestSession.Random.Next(); inserted.ActualCost = TestSession.Random.RandomDecimal(); inserted.ModifiedDate = TestSession.Random.RandomDateTime(); _tested.Update(connection, new[] { inserted }); var selectedAfterUpdateAddresss = _tested.GetByPrimaryKey(connection, new TransactionHistoryModelPrimaryKey() { TransactionID = inserted.TransactionID, }); CollectionAssert.IsNotEmpty(selectedAfterUpdateAddresss); var selectedAfterUpdate = selectedAfterUpdateAddresss.Single(); Assert.AreEqual(inserted.TransactionID, selectedAfterUpdate.TransactionID); Assert.AreEqual(inserted.ProductID, selectedAfterUpdate.ProductID); Assert.AreEqual(inserted.ReferenceOrderID, selectedAfterUpdate.ReferenceOrderID); Assert.AreEqual(inserted.ReferenceOrderLineID, selectedAfterUpdate.ReferenceOrderLineID); Assert.AreEqual(inserted.TransactionDate, selectedAfterUpdate.TransactionDate); Assert.AreEqual(inserted.TransactionType, selectedAfterUpdate.TransactionType); Assert.AreEqual(inserted.Quantity, selectedAfterUpdate.Quantity); Assert.AreEqual(inserted.ActualCost, selectedAfterUpdate.ActualCost); Assert.AreEqual(inserted.ModifiedDate, selectedAfterUpdate.ModifiedDate); #endregion #region delete test _tested.Delete(connection, new[] { inserted }); var selectedAfterDeleteAddresss = _tested.GetByPrimaryKey(connection, new TransactionHistoryModelPrimaryKey() { TransactionID = inserted.TransactionID, }); CollectionAssert.IsEmpty(selectedAfterDeleteAddresss); #endregion connection.Close(); }