github.com/ismailbayram/bigpicture@v0.0.0-20231225173155-e4b21f5efcff/internal/browser/javaproject/src/main/com/shashi/servlets/BookTrains.java (about) 1 package com.shashi.servlets; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 import java.text.SimpleDateFormat; 6 import java.time.LocalDate; 7 8 import javax.servlet.RequestDispatcher; 9 import javax.servlet.ServletContext; 10 import javax.servlet.ServletException; 11 import javax.servlet.annotation.WebServlet; 12 import javax.servlet.http.HttpServlet; 13 import javax.servlet.http.HttpServletRequest; 14 import javax.servlet.http.HttpServletResponse; 15 16 import com.shashi.beans.HistoryBean; 17 import com.shashi.beans.TrainBean; 18 import com.shashi.beans.TrainException; 19 import com.shashi.constant.ResponseCode; 20 import com.shashi.constant.UserRole; 21 import com.shashi.service.BookingService; 22 import com.shashi.service.TrainService; 23 import com.shashi.service.impl.BookingServiceImpl; 24 import com.shashi.service.impl.TrainServiceImpl; 25 import com.shashi.utility.TrainUtil; 26 27 @SuppressWarnings("serial") 28 @WebServlet("/booktrains") 29 public class BookTrains extends HttpServlet { 30 31 private TrainService trainService = new TrainServiceImpl(); 32 private BookingService bookingService = new BookingServiceImpl(); 33 34 public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { 35 PrintWriter pw = res.getWriter(); 36 res.setContentType("text/html"); 37 TrainUtil.validateUserAuthorization(req, UserRole.CUSTOMER); 38 39 RequestDispatcher rd = req.getRequestDispatcher("UserHome.html"); 40 rd.include(req, res); 41 42 ServletContext sct = req.getServletContext(); 43 44 try { 45 int seat = (int) sct.getAttribute("seats"); 46 String trainNo = (String) sct.getAttribute("trainnumber"); 47 String journeyDate = (String) sct.getAttribute("journeydate"); 48 String seatClass = (String) sct.getAttribute("class"); 49 50 String userMailId = TrainUtil.getCurrentUserEmail(req); 51 52 SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd"); 53 SimpleDateFormat outputFormat = new SimpleDateFormat("dd-MMM-yyyy"); 54 java.util.Date utilDate; 55 String date = LocalDate.now().toString(); 56 utilDate = inputFormat.parse(journeyDate); 57 date = outputFormat.format(utilDate); 58 59 TrainBean train = trainService.getTrainById(trainNo); 60 61 if (train != null) { 62 int avail = train.getSeats(); 63 if (seat > avail) { 64 pw.println("<div class='tab'><p1 class='menu red'>Only " + avail 65 + " Seats are Available in this Train!</p1></div>"); 66 67 } else if (seat <= avail) { 68 avail = avail - seat; 69 train.setSeats(avail); 70 String responseCode = trainService.updateTrain(train); 71 if (ResponseCode.SUCCESS.toString().equalsIgnoreCase(responseCode)) { 72 73 HistoryBean bookingDetails = new HistoryBean(); 74 Double totalAmount = train.getFare() * seat; 75 bookingDetails.setAmount(totalAmount); 76 bookingDetails.setFrom_stn(train.getFrom_stn()); 77 bookingDetails.setTo_stn(train.getTo_stn()); 78 bookingDetails.setTr_no(trainNo); 79 bookingDetails.setSeats(seat); 80 bookingDetails.setMailId(userMailId); 81 bookingDetails.setDate(date); 82 83 HistoryBean transaction = bookingService.createHistory(bookingDetails); 84 pw.println("<div class='tab'><p class='menu green'>" + seat 85 + " Seats Booked Successfully!<br/><br/> Your Transaction Id is: " 86 + transaction.getTransId() + "</p>" + "</div>"); 87 pw.println("<div class='tab'>" + "<p class='menu'>" + "<table>" 88 + "<tr><td>PNR No: </td><td colspan='3' style='color:blue;'>" + transaction.getTransId() 89 + "</td></tr><tr><td>Train Name: </td><td>" + train.getTr_name() 90 + "</td><td>Train No: </td><td>" + transaction.getTr_no() 91 + "</td></tr><tr><td>Booked From: </td><td>" + transaction.getFrom_stn() 92 + "</td><td>To Station: </td><td>" + transaction.getTo_stn() + "</td></tr>" 93 + "<tr><td>Date Of Journey:</td><td>" + transaction.getDate() 94 + "</td><td>Time(HH:MM):</td><td>11:23</td></tr><tr><td>Passangers: </td><td>" 95 + transaction.getSeats() + "</td><td>Class: </td><td>" + seatClass + "</td></tr>" 96 + "<tr><td>Booking Status: </td><td style='color:green;'>CNF/S10/35</td><td>Amount Paid:</td><td>₹ " 97 + transaction.getAmount() + "</td></tr>" + "</table>" + "</p></div>"); 98 99 } else { 100 pw.println( 101 "<div class='tab'><p1 class='menu red'>Transaction Declined. Try Again !</p1></div>"); 102 103 } 104 } 105 } else { 106 pw.println("<div class='tab'><p1 class='menu'>Invalid Train Number !</p1></div>"); 107 108 } 109 110 } catch (Exception e) { 111 throw new TrainException(422, this.getClass().getName() + "_FAILED", e.getMessage()); 112 } 113 114 sct.removeAttribute("seat"); 115 sct.removeAttribute("trainNo"); 116 sct.removeAttribute("journeyDate"); 117 sct.removeAttribute("class"); 118 } 119 120 }