public async Task <ActionResult> UpsertPatient(tbPatient patient, int doctorid = 0, string doctorname = null, DateTime?appdate = null, DateTime?fromtime = null, DateTime?totime = null, int scheduleid = 0, int hospitalID = 0) { PatientAppointmentViewModel shvm = new PatientAppointmentViewModel(); shvm.appointment = new tbAppointment(); shvm.appointment.DoctorId = doctorid; shvm.appointment.DoctorName = doctorname; string date = appdate.Value.ToShortDateString(); string fromtimedate = fromtime.Value.ToShortTimeString(); string appointmentdate = date + " " + fromtimedate; shvm.appointment.ScheduleDataID = scheduleid; shvm.appointment.AppointmentDateTime = DateTime.Parse(appointmentdate); shvm.appointment.HospitalId = hospitalID; //CareMeClient.Helper.CookieHelper.getstaffHospitalID(); // shvm.appointment.HospitalName = CareMeClient.Helper.CookieHelper.getstaffHospitalName(); shvm.patient = patient; PatientAppointmentViewModel result = await BookingApiRequestHelper.UpsertPatient(shvm); if (result != null) { BookingSuccessModel bsm = new BookingSuccessModel(); bsm.doctor = await DoctorApiRequestHelper.GetDoctorById(result.appointment.DoctorId ?? 0); bsm.hospital = await HospitalApiRequestHelper.GetHospitalById(result.appointment.HospitalId ?? 0); bsm.scheduleData = await ScheduleApiRequestHelper.getScheduleDetail(result.appointment.ScheduleDataID ?? 0); bsm.pavm = result; return(PartialView("_bookingSuccess", bsm)); } else { return(Json("Fail", JsonRequestBehavior.AllowGet)); } }
public ActionResult BookingSuccess() { var loggedUser = SessionUtility.GetLoggedUser(); var booking = SessionUtility.GetBookingSession(); var passengerList = SessionUtility.GetPassengerSession(); var seatCodeSuccess = new List <string>(); if (booking == null || passengerList == null) { return(RedirectToAction("Index", "Home")); } var percent = booking.PassengerType.Where(type => type.Name.Equals(Constant.CONST_DB_NAME_INFANT)).Select(type => type.Discount.Value).FirstOrDefault(); var priceInfant = Math.Round(booking.Price - (booking.Price / 100) * percent, 2); var percent2 = booking.PassengerType.Where(type => type.Name.Equals(Constant.CONST_DB_NAME_CHILD)).Select(type => type.Discount.Value).FirstOrDefault(); var priceChild = Math.Round(booking.Price - (booking.Price / 100) * percent2, 2); var totalPrice = (booking.Price * booking.Adult) + (booking.Child > 0 ? priceChild * booking.Child : 0) + (booking.Infant > 0 ? priceInfant * booking.Infant : 0); //Save Ticket var ticket = new TicketModel { AccountID = loggedUser.ID, Price = totalPrice, CreateDate = DateTime.Now, PaymentID = booking.PaymentID, Status = Constant.CONST_DB_TICKET_STATUS_SUCCESS }; var ticketId = this.TicketService.Insert(ticket); //Save Passenger Ticket foreach (var passenger in passengerList) { passenger.TicketID = ticketId; this.PassengerTicketService.Insert(passenger); } //Save Ticket Flight var order = 1; foreach (var flight in booking.DepartFlight) { var seatCode = this.SeatMapService.GenerateSeatCodeTicket(flight.PlaneID.Value, booking.SeatClass.ID , flight.ID, booking.Adult + booking.Child); if (order == 1) { seatCodeSuccess = seatCode; } var ticketFlight = new TicketFlightModel { TicketID = ticketId, FlightID = flight.ID, SeatCode = string.Join(",", seatCode), RoundTrip = false, Order = order++ }; this.TicketFlightService.Insert(ticketFlight); } //Return flight if (booking.ReturnFlight.Count() != 0) { order = 1; foreach (var flight in booking.ReturnFlight) { var seatCode = this.SeatMapService.GenerateSeatCodeTicket(flight.PlaneID.Value, booking.SeatClass.ID , flight.ID, booking.Adult + booking.Child); var ticketFlight = new TicketFlightModel { TicketID = ticketId, FlightID = flight.ID, SeatCode = string.Join(",", seatCode), RoundTrip = true, Order = order++ }; this.TicketFlightService.Insert(ticketFlight); } } SessionUtility.RemoveBookingSession(); SessionUtility.RemovePassengerSession(); var model = new BookingSuccessModel { TicketId = ticketId, PaymentId = ticket.PaymentID.Split('-')[1], Customer = loggedUser.FirstName + " " + loggedUser.LastName, DepartDate = booking.DepartFlight.First().DepartureDate.Value, Flight = booking.Departure.City + " to " + booking.Arrival.City + (booking.ReturnFlight.Count() > 0 ? " (Round trip)" : string.Empty), Passenger = booking.Adult + " Adult, " + booking.Child + " Child, " + booking.Infant + " Infant", SeatCode = string.Join(", ", seatCodeSuccess), Price = totalPrice }; var baseUrl = Request.Url.Scheme + "://" + Request.Url.Authority + Request.ApplicationPath.TrimEnd('/') + "/"; var currentUser = this.AccountService.Find(loggedUser.ID); EmailSender.SendMailBookingSuccess(currentUser.Email, baseUrl + "Ticket", model.PaymentId, model.DepartDate.ToString("dd/MM/yyyy hh:mm tt"), model.Flight, model.Passenger, model.SeatCode, model.Price.ToString(), ticketId); SessionUtility.SetAuthenticationToken(currentUser, 60); return(View(model)); }