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)); }
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)); }
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")); }
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 })); }