Exemple #1
0
        public ActionResult Repair(int orgid, int peopleid)
        {
            DbUtil.Db.RepairEnrollmentTransaction(orgid, peopleid);
            var m = new TransactionHistoryModel(peopleid, orgid);

            return(View("History", m.FetchHistory()));
        }
Exemple #2
0
        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);
        }
Exemple #5
0
        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()));
        }
Exemple #6
0
        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();
        }