コード例 #1
0
        public ActionResult OfferPreview(int Id)
        {
            Offer offer = db.Offers.Include("FlightReservations")
                          .Include("FlightReservations.Flight")
                          .Include("FlightReservations.Flight.SourceCity")
                          .Include("FlightReservations.Flight.DestinationCity")
                          .Include("FlightReservations.Flight.DestinationCity.Images")
                          .Include("FlightReservations.Flight.DestinationCity.Country")
                          .Include("FlightBackReservations")
                          .Include("FlightBackReservations.Flight")
                          .Include("FlightBackReservations.Flight.SourceCity")
                          .Include("FlightBackReservations.Flight.DestinationCity")
                          .Include("FlightBackReservations.Flight.DestinationCity.Images")
                          .Include("FlightBackReservations.Flight.DestinationCity.Country")
                          .Include("HotelReservations")
                          .Include("HotelReservations.Room")
                          .Include("HotelReservations.Room.Room")
                          .Include("HotelReservations.Room.Hotel")
                          .Include("HotelReservations.Room.Hotel.Images")
                          .SingleOrDefault(x => x.Id == Id);

            if (User.Identity.IsAuthenticated)
            {
                ApplicationUser  user = db.Users.Find(User.Identity.GetUserId());
                OfferReservation or   = db.OfferReservations.SingleOrDefault(x => x.Customer.Id == user.Id && x.Offer.Id == offer.Id);
                if (or != null)
                {
                    ViewBag.Booked = true;
                }
            }

            return(View(offer));
        }
コード例 #2
0
        public ActionResult Reservation(int Id)
        {
            OfferReservation offer = db.OfferReservations.Include("Offer.FlightReservations")
                                     .Include("Offer.FlightReservations.Flight")
                                     .Include("Offer.FlightReservations.Flight.SourceCity")
                                     .Include("Offer.FlightReservations.Flight.SourceCity.Country")
                                     .Include("Offer.FlightReservations.Flight.DestinationCity")
                                     .Include("Offer.FlightBackReservations")
                                     .Include("Offer.FlightBackReservations.Flight")
                                     .Include("Offer.FlightBackReservations.Flight.SourceCity")
                                     .Include("Offer.FlightBackReservations.Flight.DestinationCity")
                                     .Include("Offer.HotelReservations")
                                     .Include("Offer.HotelReservations.Room")
                                     .Include("Offer.HotelReservations.Room.Room")
                                     .Include("Offer.HotelReservations.Room.Hotel")
                                     .Include("Customer")
                                     .SingleOrDefault(x => x.Id == Id);

            return(View(offer));
        }
コード例 #3
0
        public ActionResult CancelReservation(int Id)
        {
            OfferReservation or = db.OfferReservations.Include("Offer")
                                  .Include("Offer.FlightReservations")
                                  .Include("Offer.FlightReservations.Customer")
                                  .Include("Offer.FlightBackReservations")
                                  .Include("Offer.FlightBackReservations.Customer")
                                  .Include("Offer.HotelReservations")
                                  .Include("Offer.HotelReservations.Guest")
                                  .SingleOrDefault(x => x.Id == Id);

            ApplicationUser user = db.Users.Find(User.Identity.GetUserId());

            user.Credit    += float.Parse(or.Offer.NewPrice.ToString());
            or.Offer.Count += 1;

            FlightReservation fr = or.Offer.FlightReservations.FirstOrDefault(x => x.Customer.Id == user.Id);

            fr.Customer = null;
            fr.IsBooked = false;

            FlightReservation fbr = or.Offer.FlightBackReservations.FirstOrDefault(x => x.Customer.Id == user.Id);

            fbr.Customer = null;
            fbr.IsBooked = false;

            HotelReservation hr = or.Offer.HotelReservations.FirstOrDefault(x => x.Guest.Id == user.Id);

            hr.Guest    = null;
            hr.IsBooked = false;

            db.OfferReservations.Remove(or);
            db.SaveChanges();

            return(RedirectToAction("MyOffers", "Offer"));
        }
コード例 #4
0
        public ActionResult Book(int Id)
        {
            ApplicationUser user = db.Users.Find(User.Identity.GetUserId());

            Offer offer = db.Offers.Include("FlightReservations")
                          .Include("FlightReservations.Flight")
                          .Include("FlightReservations.Flight.SourceCity")
                          .Include("FlightReservations.Flight.DestinationCity")
                          .Include("FlightReservations.Flight.DestinationCity.Images")
                          .Include("FlightReservations.Flight.DestinationCity.Country")
                          .Include("FlightBackReservations")
                          .Include("FlightBackReservations.Flight")
                          .Include("FlightBackReservations.Flight.SourceCity")
                          .Include("FlightBackReservations.Flight.DestinationCity")
                          .Include("FlightBackReservations.Flight.DestinationCity.Images")
                          .Include("FlightBackReservations.Flight.DestinationCity.Country")
                          .Include("HotelReservations")
                          .Include("HotelReservations.Room")
                          .Include("HotelReservations.Room.Room")
                          .Include("HotelReservations.Room.Hotel")
                          .Include("HotelReservations.Room.Hotel.Images")
                          .SingleOrDefault(x => x.Id == Id);


            if (offer.NewPrice > user.Credit)
            {
                ViewBag.Alert   = "alert alert-danger";
                ViewBag.Message = Resource.NotEnoughCredit;

                return(View("OfferPreview", offer));
            }

            OfferReservation or = new OfferReservation()
            {
                Customer = user,
                Offer    = offer,
                DateTime = DateTime.Now,
            };

            db.OfferReservations.Add(or);

            HotelReservation hr = or.Offer.HotelReservations.Where(x => x.IsBooked == false).FirstOrDefault();

            hr.Guest    = user;
            hr.IsBooked = true;

            FlightReservation fr = or.Offer.FlightReservations.Where(x => x.IsBooked == false).FirstOrDefault();

            fr.Customer = user;
            fr.IsBooked = true;

            FlightReservation fbr = or.Offer.FlightBackReservations.Where(x => x.IsBooked == false).FirstOrDefault();

            fbr.Customer = user;
            fbr.IsBooked = true;

            user.Credit -= offer.NewPrice;
            offer.Count--;

            db.SaveChanges();

            or = db.OfferReservations.SingleOrDefault(x => x.Customer.Id == user.Id && x.Offer.Id == offer.Id);
            if (or != null)
            {
                ViewBag.Booked = true;
            }

            ViewBag.Alert   = "alert alert-success";
            ViewBag.Message = Resource.OfferBooked;
            return(RedirectToAction("Reservation", new { Id = or.Id }));
        }