Exemplo n.º 1
0
        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));
            }
        }
Exemplo n.º 2
0
        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));
        }