public int PayUpdate(MemberRegistrationDTO obj, int MemberID)
        {
            try
            {
                PaymentDetailsDTO PayPD = new PaymentDetailsDTO();
                PayPD.PaymentID     = 0;
                PayPD.PlanID        = Convert.ToInt32(obj.PlantypeID);
                PayPD.WorkouttypeID = Convert.ToInt32(obj.WorkouttypeID);

                string[] joing   = obj.JoiningDate.ToString().Split('-');
                int      year2   = Convert.ToInt32(obj.JoiningDate.Value.Year);
                int      month2  = Convert.ToInt32(obj.JoiningDate.Value.Month);
                int      day2    = Convert.ToInt32(obj.JoiningDate.Value.Day);
                DateTime joining = new DateTime(year2, month2, day2);
                PayPD.PaymentFromdt = joining;
                PayPD.PaymentAmount = Convert.ToDecimal(obj.Amount);
                PayPD.CreateUserID  = Convert.ToInt32(Session["UserID"]);
                PayPD.ModifyUserID  = 0;
                PayPD.MemberID      = MemberID;
                PayPD.PaymentID     = Convert.ToInt32(obj.PaymentID);
                int payresult = objpay.UpdatePaymentDetails(PayPD);

                return(payresult);
            }
            catch (Exception)
            {
                throw;
            }
        }
        public async Task SavePaymentDetails_ShouldSavePayment_WhenGivenValidDetails()
        {
            var expectedPaymentDetails = new PaymentDetailsDTO
            {
                CardNumber     = "1234123412341266",
                ExpiryMonth    = 5,
                ExpiryDate     = 23,
                CardHolderName = "Y LI",
                Amount         = 18.99M,
                Currency       = "GBP",
                CVV            = "111"
            };

            await _paymentRepository.SavePaymentDetails(expectedPaymentDetails);

            var getPaymentDetails = $@"SELECT 
	                                    CardNumber, 
	                                    ExpiryMonth, 
	                                    ExpiryDate, 
	                                    CardHolderName, 
	                                    Amount, 
	                                    Currency, 
	                                    CVV
                                     FROM {_databaseName}.payment_details;";

            await using var connection = new MySqlConnection(ConnectionString);
            await connection.OpenAsync();

            var dt = new DataTable("PaymentDetails");

            await using var command = new MySqlCommand(getPaymentDetails, connection);
            var da = new MySqlDataAdapter(command);

            da.Fill(dt);

            var actual = (from DataRow row in dt.Rows
                          select new PaymentDetailsDTO
            {
                CardNumber = Convert.ToString(row[dt.Columns["CardNumber"].Ordinal]),
                ExpiryMonth = Convert.ToInt32(row[dt.Columns["ExpiryMonth"].Ordinal]),
                ExpiryDate = Convert.ToInt32(row[dt.Columns["ExpiryDate"].Ordinal]),
                CardHolderName = Convert.ToString(row[dt.Columns["CardHolderName"].Ordinal]),
                Amount = Convert.ToDecimal(row[dt.Columns["Amount"].Ordinal]),
                Currency = Convert.ToString(row[dt.Columns["Currency"].Ordinal]),
                CVV = Convert.ToString(row[dt.Columns["CVV"].Ordinal])
            }).ToList().FirstOrDefault();

            Assert.Equal(expectedPaymentDetails.CardNumber, actual.CardNumber);
            Assert.Equal(expectedPaymentDetails.ExpiryMonth, actual.ExpiryMonth);
            Assert.Equal(expectedPaymentDetails.ExpiryDate, actual.ExpiryDate);
            Assert.Equal(expectedPaymentDetails.CardHolderName, actual.CardHolderName);
            Assert.Equal(expectedPaymentDetails.Amount, actual.Amount);
            Assert.Equal(expectedPaymentDetails.Currency, actual.Currency);
            Assert.Equal(expectedPaymentDetails.CVV, actual.CVV);
        }
Exemple #3
0
        public int Pay_Gap(RenewalDATA obj)
        {
            try
            {
                DateTime dt = new DateTime();
                dt = DateTime.Now;
                string[] date  = dt.ToString("yyyy/MM/dd").Split('/');
                int      month = Convert.ToInt32(date[1]);
                int      day   = Convert.ToInt32(date[2]);
                int      year  = Convert.ToInt32(date[0]);
                DateTime Newdt = new DateTime(year, month, day);

                DateTime          joiningDT = DateTime.Now;
                PaymentDetailsDTO PayPD     = new PaymentDetailsDTO();
                PayPD.PaymentID     = 0;
                PayPD.PlanID        = Convert.ToInt32(obj.PlantypeID);
                PayPD.WorkouttypeID = Convert.ToInt32(obj.WorkouttypeID);
                PayPD.Paymenttype   = "Cash";

                string[] PFFromdate = obj.NewDate.Split('-');
                int      yearPD     = Convert.ToInt32(PFFromdate[0]);
                int      monthPD    = Convert.ToInt32(PFFromdate[1]);
                int      dayPD      = Convert.ToInt32(PFFromdate[2]);
                joiningDT           = new DateTime(yearPD, monthPD, dayPD);
                PayPD.PaymentFromdt = joiningDT;
                int PDID = Convert.ToInt32(objRenewal.Get_PeriodID_byPlan(obj.PlantypeID));

                PayPD.PaymentTodt    = joiningDT.AddMonths(PDID).AddDays(-1);
                PayPD.PaymentAmount  = Convert.ToDecimal(obj.PaymentAmount);
                PayPD.NextRenwalDate = joiningDT.AddMonths(PDID).AddDays(-1);
                PayPD.CreateDate     = Newdt;
                PayPD.CreateUserID   = Convert.ToInt32(Session["UserID"]);
                PayPD.ModifyUserID   = 0;
                PayPD.ModifyDate     = Newdt;

                PayPD.RecStatus = "A";
                PayPD.MemberID  = Convert.ToInt32(obj.MemberID);
                PayPD.MemberNo  = obj.MemberNo;

                int payresult = objpay.InsertPaymentDetails(PayPD);


                TempData["Message"] = "Renewal Done Successfully";

                return(payresult);
            }
            catch (Exception)
            {
                throw;
            }
        }
        public async Task <int> SavePaymentDetails(PaymentDetailsDTO paymentDetails)
        {
            var insertPaymentDetailsQuery = $@"
                USE {_mySqlConfig.PaymentGatewayDB};
                INSERT INTO payment_details (
                    CardNumber, 
                    ExpiryMonth, 
                    ExpiryDate, 
                    CardHolderName, 
                    Amount, 
                    Currency, 
                    CVV) 
                VALUES (
                    @CardNumber, 
                    @ExpiryMonth, 
                    @ExpiryDate, 
                    @CardHolderName, 
                    @Amount, 
                    @Currency, 
                    @CVV);
                SELECT LAST_INSERT_ID()";

            try
            {
                await using var _connection = new MySqlConnection(_mySqlConfig.ConnectionString);
                var paymentDetailsID = await _connection.QuerySingleAsync <int>(insertPaymentDetailsQuery,
                                                                                new
                {
                    paymentDetails.CardNumber,
                    paymentDetails.ExpiryMonth,
                    paymentDetails.ExpiryDate,
                    paymentDetails.CardHolderName,
                    paymentDetails.Amount,
                    paymentDetails.Currency,
                    paymentDetails.CVV
                });

                return(paymentDetailsID);
            }
            catch (MySqlException e)
            {
                _logger.Error(e, "Error saving payment details");
                throw;
            }
            catch (Exception e)
            {
                _logger.Error(e, "Error saving payment details");
                throw;
            }
        }
        public void AddTokenDetails([FromBody] PaymentDetailsDTO paymentDetailsDTO)
        {
            if (Is <PaymentFeature> .Enabled)
            {
                var employee = db.Employees.Find(paymentDetailsDTO.EmployeeID);
                if (employee != null)
                {
                    if (ClaimsAuthorization.CheckAccess("Put", "BusinessLocationId", employee.BusinessLocation.Id.ToString()))
                    {
                        var paymentdetails = new PaymentDetails
                        {
                            Id = Guid.NewGuid()
                        };

                        if (employee.PaymentDetails != null)
                        {
                            paymentdetails = employee.PaymentDetails;
                        }

                        paymentdetails.TokenCustomerID  = paymentDetailsDTO.TokenCustomerID;
                        paymentdetails.BusinessLocation = employee.BusinessLocation;
                        paymentdetails.CreatedDate      = WebUI.Common.Common.DateTimeNowLocal();

                        //If there is another payment detail from a different employee then delete
                        if (employee.BusinessLocation.PaymentDetails != null &&
                            employee.BusinessLocation.PaymentDetails.Employee.Id != employee.Id)
                        {
                            //employee.BusinessLocation.PaymentDetails.
                            db.Entry(employee.BusinessLocation.PaymentDetails).State = EntityState.Deleted;
                        }

                        employee.PaymentDetails = paymentdetails;

                        db.SaveChanges();
                    }
                    else
                    {
                        throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.Unauthorized));
                    }
                }
                else
                {
                    throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
                }
            }
            else
            {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotImplemented));
            }
        }
        // GET: Payment
        public ActionResult Index(Guid businessLocationId)
        {
            PaymentDetailsDTO paymentDetailsDTO = new PaymentDetailsDTO();

            //Get a summary of the employes currently linked to the Employee
            using (HttpClientWrapper httpClient = new HttpClientWrapper(Session))
            {
                Task <String> response = httpClient.GetStringAsync("api/PaymentAPI/businesslocation/" + businessLocationId.ToString());
                paymentDetailsDTO = Task.Factory.StartNew(() => JsonConvert.DeserializeObject <PaymentDetailsDTO>(response.Result)).Result;
            }

            ViewBag.BusinessLocationId = businessLocationId;

            return(PartialView(paymentDetailsDTO));
        }
        public async Task <PaymentResult> MakePayment(PaymentDetailsDTO paymentDetails)
        {
            var newPayment = new PaymentDetail
            {
                CardNumber     = paymentDetails.CardNumber,
                CVV            = paymentDetails.CVV,
                CardOwnerName  = paymentDetails.CardOwnerName,
                ExpirationDate = paymentDetails.ExpirationDate
            };

            await _context.PaymentDetails.AddAsync(newPayment);

            await _context.SaveChangesAsync();

            return(new PaymentResult()
            {
                IsComplete = true
            });
        }
        // GET: TokenReturn
        public ActionResult TokenReturn(string employeeId, string businessLocationId, string accessCode)
        {
            var requestURL = Request.Url;
            PaymentDetailsDTO paymentDetailsDTO = new PaymentDetailsDTO();

            using (HttpClient httpClient = new HttpClient())
            {
                //To validate the user we need to pass the credentials to the api using Basic Authentication
                //if authenticated, a session token will be returned.
                var apiUser     = ConfigurationManager.AppSettings.Get("eWayRapidAPIKey");
                var apiPassword = ConfigurationManager.AppSettings.Get("eWayRapidAPIPassword");
                httpClient.DefaultRequestHeaders.Authorization = new BasicAuthenticationHeaderValue(apiUser, apiPassword);

                httpClient.BaseAddress = new Uri("https://api.sandbox.ewaypayments.com");

                HttpResponseMessage response = httpClient.GetAsync("AccessCode/" + accessCode).Result;
                response.EnsureSuccessStatusCode();
                var objResponse = JsonConvert.DeserializeObject <eWayAccessCodeResponseDTO>(response.Content.ReadAsStringAsync().Result);

                var tokenCustomerID = objResponse.TokenCustomerID;

                //Save token to database for current logged in employee, then redirect to Index
                paymentDetailsDTO.TokenCustomerID = long.Parse(tokenCustomerID);
                paymentDetailsDTO.EmployeeID      = Guid.Parse(employeeId);
            }

            using (HttpClientWrapper httpClient = new HttpClientWrapper(Session))
            {
                var responseMessage = httpClient.PostAsJsonAsync("api/PaymentAPI/AddToken", paymentDetailsDTO).Result;
                if (responseMessage.IsSuccessStatusCode)
                {
                    //Successfully updated token, now redirect back to payment index
                    return(RedirectToAction("Index", new  { businessLocationId = businessLocationId }));
                }
                else
                {
                    //TODO: handle error
                }
            }

            return(View());
        }
        private void savebtn_Click(object sender, EventArgs e)
        {
            Mapper.CreateMap <TransactionDTO, Transaction>();
            Mapper.CreateMap <TransactionDetailDTO, TransactionDetail>();
            Mapper.CreateMap <PaymentDetailsDTO, PaymentDetail>();
            TransactionDTO transactionVales = new TransactionDTO();

            transactionVales.DealCustomerId  = CustomerId;
            transactionVales.Type            = purchasesalesLabel.Text;
            transactionVales.GrandTotal      = decimal.Parse(grandtotalbox.Text);
            transactionVales.Discount        = decimal.Parse(discountbox.Text);
            transactionVales.Tax             = decimal.Parse(vatbox.Text);
            transactionVales.TransactionDate = billDatetimePicker.Value;
            var user = new UserDashBoard();

            var productIdentifier = 0;

            using (var db = new Model1())
            {
                transactionVales.AddedBy = db.Users.FirstOrDefault(
                    x => x.UserName == user.currentUser).id;
            }

            var mapped = Mapper.Map <Transaction>(transactionVales);

            var payments        = new PaymentDetailsDTO();
            var saved           = false;
            var transactionType = purchasesalesLabel.Text;



            using (var db = new Model1())
            {
                db.Transactions.Add(mapped);

                var transcationdetailsVales = new TransactionDetailDTO();
                for (int i = 0; i < dataForTable.Rows.Count; i++)
                {
                    var name = dataForTable.Rows[i][1].ToString();
                    productIdentifier = db.Products.FirstOrDefault(
                        x => x.Name == name).id;

                    transcationdetailsVales.ProductId      = productIdentifier;
                    transcationdetailsVales.AddedDate      = DateTime.Now;
                    transcationdetailsVales.DealCustomerId = CustomerId;
                    transcationdetailsVales.Rate           = decimal.Parse(dataForTable.Rows[i][2].ToString());
                    transcationdetailsVales.Quantity       = decimal.Parse(dataForTable.Rows[i][3].ToString());
                    transcationdetailsVales.Total          = decimal.Parse(dataForTable.Rows[i][4].ToString());

                    var mapping = Mapper.Map <TransactionDetail>(transcationdetailsVales);
                    db.TransactionDetails.Add(mapping);


                    var answer = db.Products.FirstOrDefault(x => x.id == productIdentifier);
                    if (transactionType.ToLower() == "sales")
                    {
                        answer.Quantity = answer.Quantity - transcationdetailsVales.Quantity;
                        db.Products.AddOrUpdate(answer);
                    }
                    else if (transactionType.ToLower() == "purchase")
                    {
                        answer.Quantity = answer.Quantity + transcationdetailsVales.Quantity;
                        db.Products.AddOrUpdate(answer);
                    }
                }

                var saving = db.SaveChanges() > 0;
                if (!saving)
                {
                    MessageBox.Show("An error occured cannot ");
                }
                var collector = db.Transactions.ToList().Last();
                payments.TransactionId   = collector.Id;
                payments.AmountPaid      = decimal.Parse(paidamountbox.Text);
                payments.BalanceorChange = decimal.Parse(returnamountbox.Text);
                // payments.Transaction = mapped;

                var paymentIntoDb = Mapper.Map <PaymentDetail>(payments);
                db.PaymentDetails.Add(paymentIntoDb);

                saved = db.SaveChanges() > 0;
            }

            if (saved)
            {
                MessageBox.Show("Transaction saved successfully");
                //printing the transaction.
                PrintTransaction();
            }
            else
            {
                MessageBox.Show("Error saving transactions");
            }
            clearTable_Click(sender, e);
            cleaner();
        }
Exemple #10
0
        public async Task GetTransactionHistoryById_ShouldGetTransactionHistory_WhenTransactionHistoryExists()
        {
            var transactionID = 2121;

            var expectedCardNumber     = "1234123412341266";
            var expectedCardHolderName = "John J";
            var expectedAmount         = 734.7m;
            var expectedCurrency       = "GBP";
            var expectedSuccess        = true;
            var expectedCreatedDate    = new DateTime(2021, 5, 19, 22, 17, 00);

            var paymentDetails = new PaymentDetailsDTO
            {
                CardNumber     = expectedCardNumber,
                ExpiryMonth    = 5,
                ExpiryDate     = 23,
                CardHolderName = expectedCardHolderName,
                Amount         = expectedAmount,
                Currency       = expectedCurrency,
                CVV            = "111"
            };

            var transactionDetails = new TransactionDetailsDTO
            {
                TransactionID    = transactionID,
                Success          = expectedSuccess,
                PaymentDetailsID = 1,
                CreatedDate      = expectedCreatedDate
            };

            var insertDetails = $@"INSERT INTO {_databaseName}.payment_details 
                                    (`CardNumber`,
                                    `ExpiryMonth`,
                                    `ExpiryDate`,
                                    `CardHolderName`,
                                    `Amount`,
                                    `Currency`,
                                    `CVV`)
                                  VALUES 
                                    (@CardNumber, 
                                     @ExpiryMonth, 
                                     @ExpiryDate, 
                                     @CardHolderName,
                                     @Amount,
                                     @Currency,
                                     @CVV);
                                 INSERT INTO {_databaseName}.transaction_details
                                    (`TransactionID`,
                                    `Success`,
                                    `PaymentDetailsID`,
                                    `CreatedDate`)
                                 VALUES
                                    (@TransactionID, 
                                     @Success, 
                                     @PaymentDetailsID, 
                                     @CreatedDate);";

            await using var connection = new MySqlConnection(ConnectionString);
            await connection.OpenAsync();

            await using var command = new MySqlCommand(insertDetails, connection);
            command.Parameters.AddWithValue("@CardNumber", paymentDetails.CardNumber);
            command.Parameters.AddWithValue("@ExpiryMonth", paymentDetails.ExpiryMonth);
            command.Parameters.AddWithValue("@ExpiryDate", paymentDetails.ExpiryDate);
            command.Parameters.AddWithValue("@CardHolderName", paymentDetails.CardHolderName);
            command.Parameters.AddWithValue("@Amount", paymentDetails.Amount);
            command.Parameters.AddWithValue("@Currency", paymentDetails.Currency);
            command.Parameters.AddWithValue("@CVV", paymentDetails.CVV);
            command.Parameters.AddWithValue("@TransactionID", transactionDetails.TransactionID);
            command.Parameters.AddWithValue("@Success", transactionDetails.Success);
            command.Parameters.AddWithValue("@PaymentDetailsID", transactionDetails.PaymentDetailsID);
            command.Parameters.AddWithValue("@CreatedDate", transactionDetails.CreatedDate);

            command.ExecuteNonQuery();

            var actual = await _transactionRepository.GetTransactionHistoryById(transactionID);

            Assert.Equal(expectedCardNumber, actual.CardNumber);
            Assert.Equal(expectedCardHolderName, actual.CardHolderName);
            Assert.Equal(expectedAmount, actual.Amount);
            Assert.Equal(expectedSuccess, actual.Success);
            Assert.Equal(expectedCreatedDate, actual.CreatedDate);
        }