public static void Processor() { OrderClass order = Decoder.getDecodedValue(MultiBufferCell.getOne()); int numberOfTicketsToBeBooked = order.amount; long cc = order.cardNo; for (int i = 0; i < 5; i++) { Airlines al = new Airlines(); al.encryptFunc(order.cardNo, order.amount); int unitPrice = Airlines.getCurrentPrice(); // get unit price from airlines double totalPrice = unitPrice * numberOfTicketsToBeBooked + 0.05 * unitPrice * numberOfTicketsToBeBooked + 30; Thread.Sleep(1000); Console.WriteLine(); Console.WriteLine("*************************************************"); Console.WriteLine("Following Order is being processed."); Console.WriteLine("Order booked for - {0}", order.senderId); Console.WriteLine("Order booked by - {0}", order.receiverId); Console.WriteLine("Number of tickets booked - {0}", numberOfTicketsToBeBooked); Console.WriteLine("Unit Price for each ticket - {0}", unitPrice); Console.WriteLine("Total amount charged(including taxes and destination charges) = {0}", totalPrice); Console.WriteLine("*************************************************"); Console.WriteLine(); Thread.Sleep(3000); ConfirmationClass.setOne(String.Format("Order Processed for {0}", order.senderId)); lock (threadLock1) { Airlines.numberOfBookedTickets += numberOfTicketsToBeBooked; } } }
public void travelAgencyFunc() { while (Airlines.priceCutCount < Airlines.maximumPriceCut) { Airlines air = new Airlines(); Int32 originalPrice = air.getPrice(); Random rand = new Random(); Int32 p = Airlines.getCurrentPrice(); String airlineThread = air.getThreadName(); Int32 ticketsToOrder = rand.Next(1, 20); if (p < originalPrice) { // Create a orderClass object for current booking OrderClass order = new OrderClass(); if (Thread.CurrentThread.Name.Equals("Travel Agency 1")) { order.cardNo = bankAccounts.creditCardNumber[0]; } else if (Thread.CurrentThread.Name.Equals("Travel Agency 2")) { order.cardNo = bankAccounts.creditCardNumber[1]; } else if (Thread.CurrentThread.Name.Equals("Travel Agency 3")) { order.cardNo = bankAccounts.creditCardNumber[2]; } else if (Thread.CurrentThread.Name.Equals("Travel Agency 4")) { order.cardNo = bankAccounts.creditCardNumber[3]; } else if (Thread.CurrentThread.Name.Equals("Travel Agency 5")) { order.cardNo = bankAccounts.creditCardNumber[4]; } order.senderId = Thread.CurrentThread.Name; order.receiverId = airlineThread; order.amount = ticketsToOrder; order.unitPrice = p; String startTime = DateTime.Now.ToString("HH:mm:ss tt"); MultiBufferCell.setOne(Encoder(order)); String confirmation = ConfirmationClass.getOne(); String endTime = DateTime.Now.ToString("HH:mm:ss tt"); Thread.Sleep(1000); Console.WriteLine("Order was sent at {0} by {1}. Order was processed at {2} by the airline.", startTime, Thread.CurrentThread.Name, endTime); lock (threadLocker) { Thread.Sleep(1000); Console.WriteLine("{0} depositing amount in its bank account.", Thread.CurrentThread.Name); float deposit = rand.Next(4000, 6000); if (Thread.CurrentThread.Name.Equals("Travel Agency 1")) { TravelAgency.bankAccounts.balance[0] += (int)deposit; Thread.Sleep(1000); Console.WriteLine("Current available balance in your account is {0}", TravelAgency.bankAccounts.balance[0]); } else if (Thread.CurrentThread.Name.Equals("Travel Agency 2")) { TravelAgency.bankAccounts.balance[1] += (int)deposit; Thread.Sleep(1000); Console.WriteLine("Current available balance in your account is {0}", TravelAgency.bankAccounts.balance[1]); } else if (Thread.CurrentThread.Name.Equals("Travel Agency 3")) { TravelAgency.bankAccounts.balance[2] += (int)deposit; Thread.Sleep(1000); Console.WriteLine("Current available balance in your account is {0}", TravelAgency.bankAccounts.balance[2]); } else if (Thread.CurrentThread.Name.Equals("Travel Agency 4")) { TravelAgency.bankAccounts.balance[3] += (int)deposit; Thread.Sleep(1000); Console.WriteLine("Current available balance in your account is {0}", TravelAgency.bankAccounts.balance[3]); } else if (Thread.CurrentThread.Name.Equals("Travel Agency 5")) { TravelAgency.bankAccounts.balance[4] += (int)deposit; Thread.Sleep(1000); Console.WriteLine("Current available balance in your account is {0}", TravelAgency.bankAccounts.balance[4]); } } } } }