/// <summary> /// For booking the tickets - abstract method defined in derived class /// </summary> /// <param name="customerID">ID of the customer</param> /// <param name="trainID">TrainID of the train</param> /// <param name="serviceType">service type selected by user</param> /// <param name="noOfSeats">noofseats to be booked</param> /// <param name="ticketStatus">ticket status of booking ticket</param> public override void BookTicket(int customerID, int trainID, string serviceType, int noOfSeats, out string ticketStatus) { //delegate instance pointing to purchaseTicket method transactionDele += new MoneyTransaction(gatewayRef.PurchaseTickets); ticketStatus = "WaitingList"; int index = 0; Ticket bookTicket = new Ticket(); foreach (Seats item in RailwayData.seats) { index = RailwayData.seats.IndexOf(item); Seats searchSeat = (Seats)item; if (searchSeat.TrainID == trainID && searchSeat.ServiceType == serviceType) { RailwayData.seats.Remove(searchSeat); searchSeat.NumberOfSeats = searchSeat.NumberOfSeats - noOfSeats; RailwayData.seats.Insert(index, searchSeat); bookTicket.CustomerID = customerID; bookTicket.DateOfBooking = DateTime.Now.Date.ToString(); Console.Write("\nEnter the date of journey :"); bookTicket.DateOfJourney = Console.ReadLine(); bookTicket.FromStation = ((TrainSchedule)RailwayData.trainSchedule[trainID]).FromStation; bookTicket.ToStation = ((TrainSchedule)RailwayData.trainSchedule[trainID]).ToStation; bookTicket.TotalFare = searchSeat.FarePerPerson * noOfSeats; bookTicket.TrainID = trainID; bookTicket.ServiceType = serviceType; bookTicket.NumberOfSeats = noOfSeats; bookTicket.PnrNumber = rn.Next(1000, 2000).ToString(); if (searchSeat.NumberOfSeats > noOfSeats) { ticketStatus = "Booked"; } else { ticketStatus = "Waiting"; } bookTicket.TicketStatus = ticketStatus; bookTicket.Passengers = new ArrayList(); for (int count = 0; count < noOfSeats; count++) { Console.WriteLine("\nEnter the passenger details \n"); Passenger passenger = AddPassengerDetails(bookTicket.PnrNumber, count); bookTicket.Passengers.Add(passenger); } Console.WriteLine("\nEnter the payment Details\n"); Console.Write("Enter the credit Card Number:"); bookTicket.CreditCardNumber = long.Parse(Console.ReadLine()); //Invoking purchaseTicket method through delegate transactionDele(bookTicket.CreditCardNumber, bookTicket.TotalFare); RailwayData.ticketDetails.Add(bookTicket.PnrNumber, bookTicket); serializerRef.Serialize("myTicket.xml", bookTicket); Console.WriteLine("PNR Number : " + bookTicket.PnrNumber); break; } } }
public ActionResult Save(PaymentViewModel paymentViewModel) { if (!ModelState.IsValid) { return(View("PaymentForm")); } if (paymentViewModel.Amount == 0) { ModelState.AddModelError("", WebValidationErrorMessages.AmountIsZero); return(View("PaymentForm")); } if (paymentViewModel.Type == TransactionType.None) { ModelState.AddModelError("", WebValidationErrorMessages.InvalidTransactionType); return(View("PaymentForm")); } if (paymentViewModel.Type == TransactionType.Supply && paymentViewModel.Amount < 0) { ModelState.AddModelError("", WebValidationErrorMessages.AmountShouldBeMoreThanZero); return(View("PaymentForm")); } if (paymentViewModel.Type == TransactionType.Withdraw && paymentViewModel.Amount > 0) { ModelState.AddModelError("", WebValidationErrorMessages.AmountShouldBeLessThanZero); return(View("PaymentForm")); } if (paymentViewModel.Id == 0) { var user = _context.Users.SingleOrDefault(x => x.UserName == paymentViewModel.Username); if (user == null || user.GetFullname() != paymentViewModel.FullName) { ModelState.AddModelError("", WebValidationErrorMessages.UserNotFound); return(View("PaymentForm")); } user.Balance += paymentViewModel.Amount; var newPayment = new MoneyTransaction() { ApplicationUser = user, Date = DateTime.Now, Type = paymentViewModel.Type, Amount = paymentViewModel.Amount, Description = paymentViewModel.Description }; _context.MoneyTransactions.Add(newPayment); } _context.SaveChanges(); return(RedirectToAction("List")); }
public MoneyTransaction Deposit(decimal amount) { MoneyTransaction trans = new MoneyTransaction(amount); this.transactions.Add(trans); return(trans); }
public IEnumerable <string> GetTagsToApply(MoneyTransaction transaction) { if (transaction.Description.IndexOf(TextToSearch, StringComparison.CurrentCultureIgnoreCase) >= 0) { return(TagsToApply); } return(new List <string>()); }
public MoneyTransaction Deposit(decimal amount) { MoneyTransaction transaction = new MoneyTransaction(amount); this.Transactions.Add(transaction); Log(string.Format($"{this.UserName} deposited {amount:C} balance {this.Balance:C}")); return(transaction); }
public Receipt Purchase(IProduct product) { MoneyTransaction transaction = this.account.Withdraw(product.Price); if (transaction == null) { return(null); } return(new Receipt(product.Name, product.Price)); }
public void ApplyRules(MoneyTransaction transaction) { IEnumerable <string> ruleAppliedTags = transaction.Tags; foreach (var rule in _rules) { ruleAppliedTags = ruleAppliedTags.Concat(rule.GetTagsToApply(transaction)); } transaction.Tags = new ObservableCollection <string>(ruleAppliedTags.Distinct()); }
public IPurchaseReport Purchase(IProduct product) { MoneyTransaction transaction = this.account.Withdraw(product.Price); if (transaction == null) { return(FailedPurchase.Instance); } return(new Receipt(this.Username, product.Name, product.Price)); }
public IPurchaseReport Purchase(IProduct product) { MoneyTransaction transaction = this.account.Withdraw(product.Price); if (transaction == null) { return(this.reportFactory.CreateNotEnoughMoney(this.Username, product.Name, product.Price)); } return(new Receipt(this.Username, product.Name, product.Price)); }
public override MoneyTransaction Deposit(decimal amount) { if (amount <= 0) { throw new ArgumentException("Amount to deposit must be positive.", nameof(amount)); } var trans = new MoneyTransaction(amount); RegisterTransaction(trans); return(trans); }
private void ProcessPendingWithdrawal(Option <MoneyTransaction> option) { if (!option.Any()) { return; } MoneyTransaction transaction = option.Single(); base.RegisterTransaction(transaction); this.pendingTransactions.Remove(transaction); }
public bool Register(MoneyTransaction transaction) { try { MoneyTransactions.Push(transaction); return(true); } catch { return(false); } }
public MoneyTransaction Withdraw(decimal amount) { if (this.Balance < amount) { return(null); } MoneyTransaction trans = new MoneyTransaction(-amount); this.transactions.Add(trans); return(trans); }
public static DepositMoneyResponse ResponseFromModel(MoneyTransaction transaction) { return(new DepositMoneyResponse() { StudentId = transaction.StudentId, Type = transaction.Type, Date = transaction.Date.ToString(GlobalParams.DateTimeResponseFormat), OriginalBalance = transaction.OriginalBalance, ResultBalance = transaction.ResultBalance, MoneyAmount = transaction.MoneyAmount, MoneyTransactionId = transaction.MoneyTransactionId }); }
public override Option <MoneyTransaction> TryWithdraw(decimal amount) { if (amount <= 0) { throw new ArgumentException("Amount to withdraw must be positive.", nameof(amount)); } MoneyTransaction transaction = new MoneyTransaction(-amount); this.pendingTransactions.Add(transaction); this.ProcessPendingWithdrawals(); return(Option <MoneyTransaction> .Create(transaction)); }
public Option <MoneyTransaction> TryWithdraw(decimal amount) { if (Balance < amount) { return(None.Value); } MoneyTransaction transaction = new MoneyTransaction(-amount); Transactions.Add(transaction); Log(string.Format($"{UserName} withdrew {amount:C} balance {Balance:C}")); return(transaction); }
public IOption <MoneyTransaction> TryWithdraw(decimal amount) { if (this.Balance < amount) { return(Option.None <MoneyTransaction>()); } MoneyTransaction transaction = new MoneyTransaction(-amount); this.Transactions.Add(transaction); this.Log(string.Format($"{this.UserName} withdrew {amount:C} balance {this.Balance:C}")); return(Option.Some(transaction)); }
public override Task <SaveMoneyTransactionResponse> SaveMoneyTransaction(SaveMoneyTransactionRequest request, ServerCallContext context) { var newData = new MoneyTransaction { FromUserName = request.FromUserName, Sign = request.Sign, RegisterDate = (new DateTime(1970, 1, 1)).AddMilliseconds(request.RegisterDate), Sum = request.Sum }; var id = _moneyTransactionRepository.Insert(newData); return(Task.FromResult(new SaveMoneyTransactionResponse { Id = id.ToString() })); }
public override MoneyTransaction Deposit(decimal amount) { if (amount <= 0) { throw new ArgumentException("Amount to deposit must be positive.", nameof(amount)); } MoneyTransaction transaction = new MoneyTransaction(amount); base.RegisterTransaction(transaction); this.ProcessPendingWithdrawals(); return(transaction); }
private Option <MoneyTransaction> TrySelectFirstPendingTransaction() { if (!this.pendingTransactions.Any()) { return(Option <MoneyTransaction> .CreateEmpty()); } MoneyTransaction candidate = this.pendingTransactions.First(); if (base.Balance + candidate.Amount < 0) { return(Option <MoneyTransaction> .CreateEmpty()); } return(Option <MoneyTransaction> .Create(candidate)); }
public Option <MoneyTransaction> TrySelectOne(IEnumerable <MoneyTransaction> transactions, decimal maxAmount) { if (!transactions.Any()) { return(Option <MoneyTransaction> .CreateEmpty()); } MoneyTransaction candidate = transactions.First(); if (maxAmount + candidate.Amount < 0) { return(Option <MoneyTransaction> .CreateEmpty()); } return(Option <MoneyTransaction> .Create(candidate)); }
protected void cashout_Click(object sender, EventArgs e) { if (Session["CashoutAmount"] == null) { Response.Write("<script>alert('Please select Reward Amount you want to get')</script>"); } else { SqlConnection sc = new SqlConnection(); sc.ConnectionString = ConfigurationManager.ConnectionStrings["GroupProjectConnectionString"].ConnectionString; sc.Open(); SqlCommand insert = new SqlCommand(); insert.Connection = sc; insert.CommandText = "SELECT [TotalAmount] FROM [MoneyTransaction] where MoneyTransactionID=(select max(MoneyTransactionID) from MoneyTransaction)"; SqlDataReader reader = insert.ExecuteReader(); if (reader.HasRows) { reader.Read(); int totalPoints = Convert.ToInt32(reader["TotalAmount"]); int transactionAmount = Convert.ToInt32(rblcashout.SelectedValue); reader.Close(); if (totalPoints >= transactionAmount && (Convert.ToInt32(Session["PointsBalance"]) > transactionAmount)) { MoneyTransaction newTransaction = new MoneyTransaction(totalPoints, DateTime.Today.ToShortDateString(), transactionAmount, DateTime.Today.ToShortDateString(), Session["loggedIn"].ToString(), Convert.ToInt32(Session["ID"])); insert.CommandText = "INSERT INTO [dbo].[MoneyTransaction] ([Date],[TotalAmount],[TransactionAmount],[LastUpdated],[LastUpdatedBy],[PersonID])" + "VALUES (@Date,@TotalAmount,@TransactionAmount,@LastUpdated,@LastUpdatedBy,@PersonID)"; insert.Parameters.AddWithValue("@TotalAmount", totalPoints - transactionAmount); insert.Parameters.AddWithValue("@Date", newTransaction.getDate()); insert.Parameters.AddWithValue("@TransactionAmount", newTransaction.getTransactionAmount()); insert.Parameters.AddWithValue("@LastUpdated", newTransaction.getLUD()); insert.Parameters.AddWithValue("@LastUpdatedBy", newTransaction.getLUDB()); insert.Parameters.AddWithValue("@PersonID", newTransaction.getPersonID()); insert.ExecuteNonQuery(); sc.Close(); Response.Write("<script>alert('Transaction Submited')</script>"); Send_Mail(Session["E-mail"].ToString(), newTransaction.getTransactionAmount()); rewardpool(); } else { Response.Write("<script>alert('personal points not enough or Bank balance low')</script>"); } } } }
public override Option <MoneyTransaction> TryWithdraw(decimal amount) { if (amount <= 0) { throw new ArgumentException("Amount to withdraw must be positive.", nameof(amount)); } if (Balance < amount) { return(Option <MoneyTransaction> .CreateEmpty()); } var trans = new MoneyTransaction(-amount); RegisterTransaction(trans); return(Option <MoneyTransaction> .Create(trans)); }
public override Option <MoneyTransaction> TryWithdraw(decimal amount) { if (amount <= 0) { throw new ArgumentException("Amount to withdraw must be positive.", nameof(amount)); } MoneyTransaction transaction = new MoneyTransaction(-amount); if (this.Balance >= amount) { base.RegisterTransaction(transaction); } else { this.pendingTransactions.Add(transaction); } return(Option <MoneyTransaction> .Create(transaction)); }
/// <summary> /// To cancel the tickets /// </summary> /// <param name="customerID">ID of the user</param> /// <param name="pnrNumber">pnrnumber if the passenger</param> public override void CancelTickets(int customerID, string pnrNumber) { ((Ticket)RailwayData.ticketDetails[pnrNumber]).TicketStatus = "Cancelled"; int index = 0; Ticket cancelTicket = (Ticket)RailwayData.ticketDetails[pnrNumber]; //delegate instance pointing to purchaseTicket method transactionDele += new MoneyTransaction(gatewayRef.CancelTickets); foreach (Seats item in RailwayData.seats) { index = RailwayData.seats.IndexOf(item); Seats searchSeat = (Seats)item; if (searchSeat.TrainID == cancelTicket.TrainID && searchSeat.ServiceType == cancelTicket.ServiceType) { RailwayData.seats.Remove(searchSeat); searchSeat.NumberOfSeats = searchSeat.NumberOfSeats + cancelTicket.NumberOfSeats; RailwayData.seats.Insert(index, searchSeat); } } transactionDele(cancelTicket.CreditCardNumber, cancelTicket.TotalFare); }
public IHttpActionResult RevertPayment(int id) { var transaction = _context.MoneyTransactions .Include(x => x.ApplicationUser) .SingleOrDefault(c => c.Id == id); if (transaction == null) { return(NotFound()); } if (transaction.IsRevertMade) { return(BadRequest("Transaction was already reverted once.")); } if (transaction.Type == TransactionType.Revert || transaction.Type == TransactionType.Withdraw) { return(BadRequest("This transaction type can't be reverted.")); } var revertedTransaction = new MoneyTransaction() { ApplicationUser = transaction.ApplicationUser, Amount = -transaction.Amount, Date = DateTime.Now, Description = "Revert for " + transaction.Id, Type = TransactionType.Revert }; transaction.ApplicationUser.Balance += revertedTransaction.Amount; transaction.IsRevertMade = true; _context.MoneyTransactions.Add(revertedTransaction); _context.SaveChanges(); return(Ok(true)); }
public ActionResult Refill(decimal?sum) { if (!sum.HasValue || sum.Value <= 0) { ViewBag.Error = true; return(View(CurrentUser)); } var sDesc = "Пополнение счета на сайте знакомств CityLove"; var sOutSum = sum.Value.ToString("F", new System.Globalization.CultureInfo("en-US")); var sShpItem = "2"; var sCulture = "ru"; var sEncoding = "utf-8"; var transaction = new MoneyTransaction() { Date = DateTime.Now, Status = 0, Sum = sum.Value, UserID = CurrentUser.ID, Description = "Пополнение счета" }; DB.MoneyTransactions.InsertOnSubmit(transaction); DB.SubmitChanges(); var nInvId = transaction.ID; var sCrcBase = string.Format("{0}:{1}:{2}:{3}" /*:shpItem={4}*/, Config.RoboLogin, sOutSum, nInvId, Config.RoboPass1 /*, sShpItem*/); var md5 = new MD5CryptoServiceProvider(); var buf = md5.ComputeHash(Encoding.ASCII.GetBytes(sCrcBase)); var sCrc = buf.Select(b => string.Format("{0:x2}", b)).Aggregate((acc, el) => acc + el); string url = HttpUtility.UrlPathEncode(Config.RoboServer + "?" + "MrchLogin="******"&OutSum=" + sOutSum + "&InvId=" + nInvId + "&SignatureValue=" + sCrc + "&Desc=" + sDesc); return(Redirect(url)); }
protected void btnCommit_Click(object sender, EventArgs e) { SqlConnection sc = new SqlConnection(); sc.ConnectionString = ConfigurationManager.ConnectionStrings["GroupProjectConnectionString"].ConnectionString; sc.Open(); SqlCommand insert = new SqlCommand(); insert.Connection = sc; insert.CommandText = "SELECT [TotalAmount] FROM [MoneyTransaction] where MoneyTransactionID=(select max(MoneyTransactionID) from MoneyTransaction)"; SqlDataReader reader = insert.ExecuteReader(); if (reader.HasRows) { reader.Read(); int totalPoints = Convert.ToInt32(reader["TotalAmount"]); int transactionAmount = Convert.ToInt32(txtFrontLoad.Text); reader.Close(); MoneyTransaction newTransaction = new MoneyTransaction(totalPoints, DateTime.Today.ToShortDateString(), transactionAmount, DateTime.Today.ToShortDateString(), Session["loggedIn"].ToString(), Convert.ToInt32(Session["ID"])); insert.CommandText = "INSERT INTO [dbo].[MoneyTransaction] ([Date],[TotalAmount],[TransactionAmount],[LastUpdated],[LastUpdatedBy],[PersonID])" + "VALUES (@Date,@TotalAmount,@TransactionAmount,@LastUpdated,@LastUpdatedBy,@PersonID)"; insert.Parameters.AddWithValue("@TotalAmount", totalPoints + transactionAmount); insert.Parameters.AddWithValue("@Date", newTransaction.getDate()); insert.Parameters.AddWithValue("@TransactionAmount", transactionAmount); insert.Parameters.AddWithValue("@LastUpdated", newTransaction.getLUD()); insert.Parameters.AddWithValue("@LastUpdatedBy", newTransaction.getLUDB()); insert.Parameters.AddWithValue("@PersonID", newTransaction.getPersonID()); insert.ExecuteNonQuery(); //insert.CommandText = "Update person set [PointsBalance]=[PointsBalance]+@TransactionAmount where personid=PersonID"; //insert.ExecuteNonQuery(); sc.Close(); rewardpool(); } }
protected void RegisterTransaction(MoneyTransaction trans) { this.registeredTransactions.Add(trans); }
public ActionResult Buy(decimal cost, string type, TimeSpan duration, int?arg) { if (CurrentUser.Balance < cost) { return(new ContentResult()); } var date = DateTime.Now.Date; var user = DB.Users.First(x => x.ID == CurrentUser.ID); switch (type) { case "hidden": if (CurrentUser.HiddenEnd.HasValue && CurrentUser.HiddenEnd.Value.Date > DateTime.Now.Date) { date = CurrentUser.HiddenEnd.Value.Date; } user.HiddenEnd = date.Add(duration); user.IsHidden = true; break; case "up": if (CurrentUser.UpEnd.HasValue && CurrentUser.UpEnd.Value.Date > DateTime.Now.Date) { date = CurrentUser.UpEnd.Value.Date; } user.UpEnd = date.Add(duration); user.IsUp = true; break; case "vip": if (CurrentUser.VipEnd.HasValue && CurrentUser.VipEnd.Value.Date > DateTime.Now.Date) { date = CurrentUser.VipEnd.Value.Date; } user.VipEnd = date.Add(duration); user.IsVip = true; break; case "place": var place = DB.Places.FirstOrDefault(x => x.ID == arg); if (place != null) { if (place.VipEnd.HasValue && place.VipEnd.Value.Date > DateTime.Now.Date) { date = place.VipEnd.Value.Date; } place.VipEnd = date.Add(duration); place.IsVip = true; } break; } var transaction = new MoneyTransaction() { Date = DateTime.Now, Description = type, Status = 1, Sum = cost * -1, UserID = CurrentUser.ID }; DB.MoneyTransactions.InsertOnSubmit(transaction); DB.SubmitChanges(); return(new ContentResult() { Content = "Vip-опция успешно подключена" }); }