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>&#8377; "
    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  }