public void TestDataGatheringMethods() { var theBookingsInSession = (List <Booking>)Session["Cart_PropertyBookings"]; // var testSession = new PropertyViewController().AreThereAnyBookingsInTheSession(); // var testSEssionExtraBooking = new PropertyViewController().AreThereAnyExtraBookingsInTheSession(); //instance method execute on propertyview controller var result = new FinalBookingDetailGatheringController().CreateListOfFieldsToGatherBasedOnSessionData(); }
public ActionResult SignUpRegistration(CustomerRegistration registration) { bool customerAlreadyExists = CheckIfCustomerEmailAlreadyExists(registration.EmailAddress); bool customerLogonAlreadyExists = CheckIfUserExistsInSimpleMemberProvider(registration.EmailAddress); try { //customerLogonAlreadyExists = //create customer if that email's not in use: if (!customerAlreadyExists && !customerLogonAlreadyExists) { Customer theCustomer = Customer.MapCustomerRegistrationToNewCustomer(registration); FinalBookingDetailGatheringController customerController = new FinalBookingDetailGatheringController(); var CustomerAdded = customerController.CreateCustomerAsPartOfSignUp(theCustomer); string UserName = theCustomer.EmailAddress; string Password = registration.Password; //create the ASP.NET account WebSecurity.CreateUserAndAccount(UserName, Password); //make user a 'normal user' if (!Roles.GetRolesForUser(UserName).Contains("User")) { Roles.AddUsersToRole(new[] { UserName }, "User"); } //login and get newly created user WebSecurity.Login(UserName, Password); Session["prc_customer"] = theCustomer; return(View("SignUpSuccessful")); //log in with the new details } else { return(View("AlreadyExists")); } } catch (Exception ex) { throw new Exception("Something went wrong when trying to create a new user"); } }
public ActionResult TestBookingSteps(Customer cus, CustomerBankDetail bank, List <Booking> bookings = null, List <BookingExtraSelection> bookingExtraSelections = null, List <BookingParticipant> bookingParticipants = null) { Session["prc_customer"] = new Customer(); using (var db = new PortugalVillasContext()) { var eventService = new EventController(); var bookingRepo = new FinalBookingDetailGatheringController(); //CUSTOMER //does customer have ID? if not create new Customer if (cus.CustomerID.Equals(0)) { bookingRepo.CreateCustomer(cus, db); } else { //update customer with new details /*cus.BookingExtraSelections = null; * cus.Bookings = null; * cus.CreationDate = cus.CreationDate; * * db.Customers.Attach(cus); * db.Entry(cus).State = EntityState.Modified; * * try * { * db.SaveChanges(); * } * catch (OptimisticConcurrencyException) * { * * } */ } //BANK DETAIL if (bank.CustomerBankDetailID.Equals(0)) { bookingRepo.CreateCustomerBankDetail(bank, cus, db); } else { //update customer with new details db.CustomerBankDetails.Attach(bank); db.Entry(bank).State = EntityState.Modified; db.SaveChanges(); } ////////////////// //BOOKING //create a parent booking thingy and link it BookingParentContainer parentContainer = new BookingParentContainer(); parentContainer.CustomerID = cus.CustomerID; parentContainer = bookingRepo.CreateBookingParentContainer(parentContainer, db); foreach (var booking in bookings) { //link to parent booking booking.BookingParentContainerID = parentContainer.BookingParentContainerID; //fill em out and push them to the DB /* bookingRepo.CreateBooking(booking, cus, db);*/ var participantsThisRound = bookingParticipants.Where(x => x.StepNo.Equals(bookingParticipants.Min(y => y.StepNo))).ToList(); //create the participants foreach (var bookingParticipant in participantsThisRound) { if (bookingParticipant.BookingParticipantFirstName != "" && bookingParticipant.BookingParticipantFirstName != null && bookingParticipant.BookingParticipantLastName != "" && bookingParticipant.BookingParticipantLastName != null) { bookingRepo.CreateBookingParticipant(participantsThisRound, booking, db); } } foreach (var bookingParticipant in participantsThisRound) { bookingParticipants.Remove(bookingParticipant); } //now check which booking form to send depending on location string EventTypeID; if (cus.Country.ToUpper() == "GB") { EventTypeID = "17"; } else { EventTypeID = "20"; } //email all docs var form = new FormCollection(); form.Add("BookingID", booking.BookingID.ToString()); form.Add("EventTypeID", EventTypeID); eventService.AddBookingEvent(form); //email the user of the system } foreach (var bes in bookingExtraSelections) { //link to parent booking } //wipe cars = booking and bes Session["Cart_PropertyBookings"] = null; Session["Cart_ExtraBookings"] = null; return(RedirectToAction("EndOfBookingProcess", "EndOfProcess")); } }
public ActionResult TestBookingSteps(Customer cus, CustomerBankDetail bank, List<Booking> bookings = null, List<BookingExtraSelection> bookingExtraSelections = null, List<BookingParticipant> bookingParticipants = null) { Session["prc_customer"] = new Customer(); using (var db = new PortugalVillasContext()) { var eventService = new EventController(); var bookingRepo = new FinalBookingDetailGatheringController(); //CUSTOMER //does customer have ID? if not create new Customer if (cus.CustomerID.Equals(0)) { bookingRepo.CreateCustomer(cus, db); } else { //update customer with new details /*cus.BookingExtraSelections = null; cus.Bookings = null; cus.CreationDate = cus.CreationDate; db.Customers.Attach(cus); db.Entry(cus).State = EntityState.Modified; try { db.SaveChanges(); } catch (OptimisticConcurrencyException) { } */ } //BANK DETAIL if (bank.CustomerBankDetailID.Equals(0)) { bookingRepo.CreateCustomerBankDetail(bank, cus, db); } else { //update customer with new details db.CustomerBankDetails.Attach(bank); db.Entry(bank).State = EntityState.Modified; db.SaveChanges(); } ////////////////// //BOOKING //create a parent booking thingy and link it BookingParentContainer parentContainer = new BookingParentContainer(); parentContainer.CustomerID = cus.CustomerID; parentContainer = bookingRepo.CreateBookingParentContainer(parentContainer, db); foreach (var booking in bookings) { //link to parent booking booking.BookingParentContainerID = parentContainer.BookingParentContainerID; //fill em out and push them to the DB /* bookingRepo.CreateBooking(booking, cus, db);*/ var participantsThisRound = bookingParticipants.Where(x => x.StepNo.Equals(bookingParticipants.Min(y => y.StepNo))).ToList(); //create the participants foreach (var bookingParticipant in participantsThisRound) { if (bookingParticipant.BookingParticipantFirstName != "" && bookingParticipant.BookingParticipantFirstName != null && bookingParticipant.BookingParticipantLastName != "" && bookingParticipant.BookingParticipantLastName != null) { bookingRepo.CreateBookingParticipant(participantsThisRound, booking, db); } } foreach (var bookingParticipant in participantsThisRound) { bookingParticipants.Remove(bookingParticipant); } //now check which booking form to send depending on location string EventTypeID; if (cus.Country.ToUpper() == "GB") { EventTypeID = "17"; } else { EventTypeID = "20"; } //email all docs var form = new FormCollection(); form.Add("BookingID", booking.BookingID.ToString()); form.Add("EventTypeID", EventTypeID); eventService.AddBookingEvent(form); //email the user of the system } foreach (var bes in bookingExtraSelections) { //link to parent booking } //wipe cars = booking and bes Session["Cart_PropertyBookings"] = null; Session["Cart_ExtraBookings"] = null; return RedirectToAction("EndOfBookingProcess", "EndOfProcess"); } }
public void TestDataGatheringMethods() { var theBookingsInSession = (List<Booking>)Session["Cart_PropertyBookings"]; // var testSession = new PropertyViewController().AreThereAnyBookingsInTheSession(); // var testSEssionExtraBooking = new PropertyViewController().AreThereAnyExtraBookingsInTheSession(); //instance method execute on propertyview controller var result = new FinalBookingDetailGatheringController().CreateListOfFieldsToGatherBasedOnSessionData(); }
public ActionResult GetBookingDetails(Customer cus, CustomerBankDetail bank, List <Booking> bookings = null, List <BookingExtraSelection> bookingExtraSelections = null, List <BookingParticipant> bookingParticipants = null) { //set customer preferred currency symbol and currency using (var db = new PortugalVillasContext()) { var account = new AccountController(); var eventService = new EventController(); var bookingRepo = new FinalBookingDetailGatheringController(); //CUSTOMER //does customer have ID? if not create new Customer if (cus.CustomerID.Equals(0)) { var returnedCus = bookingRepo.CreateCustomer(cus, db); cus = returnedCus; Session["prc_customer"] = returnedCus; } else { //update customer with new details cus.BookingExtraSelections = null; cus.Bookings = null; //Do the UPDATE if (ModelState.IsValid) { db.Entry(cus).State = EntityState.Modified; var objContextCus = ((IObjectContextAdapter)db).ObjectContext; var refreshableObjectsCus = (from entry in objContextCus.ObjectStateManager.GetObjectStateEntries( EntityState.Added | EntityState.Deleted | EntityState.Modified | EntityState.Unchanged) where entry.EntityKey != null select entry.Entity); objContextCus.Refresh(RefreshMode.ClientWins, refreshableObjectsCus); //if it works, do the update for the userContext, else, don't as it failed if (objContextCus.SaveChanges() > 0) { /*_usersContext.Entry(user).State = EntityState.Modified; * _usersContext.SaveChanges();*/ } } } //BANK DETAIL if (bank.CustomerBankDetailID.Equals(0)) { var returnedBank = bookingRepo.CreateCustomerBankDetail(bank, cus, db); Session["prc_customerBankingDetail"] = returnedBank; } else { bank.CustomerID = cus.CustomerID; db.Entry(bank).State = EntityState.Modified; var objContext = ((IObjectContextAdapter)db).ObjectContext; var refreshableObjects = (from entry in objContext.ObjectStateManager.GetObjectStateEntries( EntityState.Added | EntityState.Deleted | EntityState.Modified | EntityState.Unchanged) where entry.EntityKey != null select entry.Entity); objContext.Refresh(RefreshMode.ClientWins, refreshableObjects); if (ModelState.IsValid) { if (objContext.SaveChanges() > 0) { ; } { //great it worked } } } //parent BookingParentContainer parentContainer = new BookingParentContainer(); parentContainer.CustomerID = cus.CustomerID; parentContainer = bookingRepo.CreateBookingParentContainer(parentContainer, db); //need to add booking reference then propagate to all others below ////////////////// //BOOKING //create a parent booking thingy and link i if (bookings != null) { foreach (var booking in bookings) { booking.Test = false; //it's real, from a customer //convert if neededed //link to parent booking booking.BookingParentContainerID = parentContainer.BookingParentContainerID; //fill em out and push them to the DB var property = db.Properties.Find(booking.PropertyID); booking.Property = property; booking.BookingParticipants = null; bookingRepo.CreateBooking(booking, property, cus, db); var participantsThisRound = bookingParticipants.Where(x => x.StepNo.Equals(bookingParticipants.Min(y => y.StepNo))) .ToList(); //create the participants var partstoAdd = new List <BookingParticipant>(); foreach (var bookingParticipant in participantsThisRound) { if (bookingParticipant.BookingParticipantFirstName != "" && bookingParticipant.BookingParticipantFirstName != null && bookingParticipant.BookingParticipantLastName != "" && bookingParticipant.BookingParticipantLastName != null) { partstoAdd.Add(bookingParticipant); } } foreach (var bookingParticipant in participantsThisRound) { bookingParticipants.Remove(bookingParticipant); } if (partstoAdd.Count > 0) { bookingRepo.CreateBookingParticipant(partstoAdd, booking, db); //create all ones we need } //now check which booking form to send depending on location string EventTypeID; TimeSpan dateRemainder = ((DateTime)booking.StartDate).Subtract(DateTime.Now); int dateRemainderDays = dateRemainder.Days; //late booking form if (cus.Country.ToLower() == "united kingdom" && ConfigurationManager.AppSettings["defaultCurrency"] == "GBP") { if (dateRemainderDays <= 30) { //late uk EventTypeID = "51"; } else { //standard UK EventTypeID = "37"; } } else { //convert all the bookings to euros if (dateRemainderDays <= 30) { //late EU EventTypeID = "52"; } else { //standard EU EventTypeID = "20"; } } //email all docs var form = new FormCollection(); form.Add("BookingID", booking.BookingID.ToString()); form.Add("EventTypeID", EventTypeID); eventService.AddBookingEvent(form); //email the user of the system } } if (bookingExtraSelections != null) { foreach (var bes in bookingExtraSelections) { //?????//convert all BES to EUROS var extraType = db.BookingExtras.Find((long)bes.BookingExtraID); bes.BookingExtraID = extraType.BookingExtraID; //link to parent booking bes.BookingParentContainerID = parentContainer.BookingParentContainerID; //need //reference //price fully done //all extras on form fully taken care of for each one var createdBes = bookingRepo.CreateBookingExtraSelection(bes, extraType, cus, db); string EventTypeID = ""; //car if (extraType.BookingExtraTypeID == 1) { if (cus.Country.ToLower() == "united kingdom") { EventTypeID = "43"; } else { EventTypeID = "62"; } } //wine else if (extraType.BookingExtraTypeID == 2) { if (cus.Country.ToLower() == "united kingdom") { EventTypeID = "45"; } else { EventTypeID = "60"; } } //airport else if (extraType.BookingExtraTypeID == 3) { if (cus.Country.ToLower() == "united kingdom") { EventTypeID = "31"; } else { EventTypeID = "61"; } } //tour else if (extraType.BookingExtraTypeID == 4) { if (cus.Country.ToLower() == "united kingdom") { EventTypeID = "33"; } else { EventTypeID = "63"; } } var form = new FormCollection(); form.Add("BookingExtraSelectionID", bes.BookingExtraSelectionID.ToString()); form.Add("EventTypeID", EventTypeID); eventService.AddBookingExtraSelectionEvent(form); } } //wipe cars = booking and bes Session["Cart_PropertyBookings"] = null; Session["Cart_ExtraBookings"] = null; //email the main user with the new services and bookings var prc = db.PRCInformations.First(); MaintainanceMailer mail = new MaintainanceMailer(); mail.theAsposeMessage.Subject = "You have new bookings:"; mail.theAsposeMessage.HtmlBody = "<h1>Automated email: You have a new booking</h1><br><p>Customer: ID - " + cus.CustomerID + "-" + cus.FirstName + " " + cus.LastName + "</p>"; if (bookings != null) { foreach (var booking in bookings) { mail.theAsposeMessage.HtmlBody += "<p>Booking: ID - " + booking.BookingID + "-" + booking.Property.LegacyReference + " for " + booking.NumberOfNights + " " + "nights starting " + booking.StartDate.ToString().Substring(0, 10) + "</p>"; } } if (bookingExtraSelections != null) { foreach (var bes in bookingExtraSelections) { mail.theAsposeMessage.HtmlBody += "<p>Booking: ID - " + bes.BookingExtraSelectionID + " - " + bes.BookingExtra.BookingExtraName + " for " + bes.NumberOfDays + " " + "days starting " + bes.ExtraRentalDate.ToString().Substring(0, 10) + " for " + bes.NumberOfGuests + " people" + "</p>"; } } var addressees = new MailAddressCollection(); addressees.Add(prc.PRCNotificationEmailAddress); if (prc.PRCNotificationEmailAddress2 != null) { if (prc.PRCNotificationEmailAddress2 != "") { addressees.Add(prc.PRCNotificationEmailAddress2); } } if (prc.PRCNotificationEmailAddress3 != null) { if (prc.PRCNotificationEmailAddress3 != "") { addressees.Add(prc.PRCNotificationEmailAddress3); } } mail.SendEmail(); return(RedirectToAction("EndOfBookingProcess", "EndOfProcess")); } }
public ActionResult SignUpRegistration(CustomerRegistration registration) { bool customerAlreadyExists = CheckIfCustomerEmailAlreadyExists(registration.EmailAddress); bool customerLogonAlreadyExists = CheckIfUserExistsInSimpleMemberProvider(registration.EmailAddress); try { //customerLogonAlreadyExists = //create customer if that email's not in use: if (!customerAlreadyExists && !customerLogonAlreadyExists) { Customer theCustomer = Customer.MapCustomerRegistrationToNewCustomer(registration); FinalBookingDetailGatheringController customerController = new FinalBookingDetailGatheringController(); var CustomerAdded = customerController.CreateCustomerAsPartOfSignUp(theCustomer); string UserName = theCustomer.EmailAddress; string Password = registration.Password; //create the ASP.NET account WebSecurity.CreateUserAndAccount(UserName, Password); //make user a 'normal user' if (!Roles.GetRolesForUser(UserName).Contains("User")) Roles.AddUsersToRole(new[] { UserName }, "User"); //login and get newly created user WebSecurity.Login(UserName, Password); Session["prc_customer"] = theCustomer; return View("SignUpSuccessful"); //log in with the new details } else { return View("AlreadyExists"); } } catch (Exception ex) { throw new Exception("Something went wrong when trying to create a new user"); } }
public ActionResult QuickCreateBooking(Booking booking, List<BookingParticipant> bookingParticipants) { //setup booking.Test = false; var bookingRepo = new FinalBookingDetailGatheringController(); BookingParentContainer parentContainer = new BookingParentContainer(); parentContainer.CustomerID = booking.CustomerID; parentContainer = bookingRepo.CreateBookingParentContainer(parentContainer, db); db.BookingParentContainers.Add(parentContainer); //create booking var property = db.Properties.Find(booking.PropertyID); var customer = db.Customers.Find(booking.CustomerID); booking.Property = property; booking.BookingParentContainer = parentContainer; booking.BookingCurrencyConversionSymbol = customer.PreferredCurrencySymbol; booking.BookingPreferredCurrency = customer.PreferredCurrency; booking.BookingParticipants = null; bookingRepo.CreateBooking(booking, property, customer, db); //create parts booking.Cancelled = false; booking.Confirmed = true; booking.Test = false; db.Bookings.Attach(booking); db.Entry(booking).State = EntityState.Modified; db.SaveChanges(); var partstoAdd = new List<BookingParticipant>(); if (bookingParticipants != null) { foreach (var bookingParticipant in bookingParticipants) { if (bookingParticipant.BookingParticipantFirstName != "" && bookingParticipant.BookingParticipantFirstName != null && bookingParticipant.BookingParticipantLastName != "" && bookingParticipant.BookingParticipantLastName != null && bookingParticipant.BookingParticipantAge != "") { bookingParticipant.BookingID = booking.BookingID; partstoAdd.Add(bookingParticipant); } } if (partstoAdd.Count > 0) { bookingRepo.CreateBookingParticipant(partstoAdd, booking, db); //create all ones we need } } return View("QuickCreateBookingWrapper"); }
public ActionResult QuickCreateBooking(Booking booking, List <BookingParticipant> bookingParticipants) { //setup booking.Test = false; var bookingRepo = new FinalBookingDetailGatheringController(); BookingParentContainer parentContainer = new BookingParentContainer(); parentContainer.CustomerID = booking.CustomerID; parentContainer = bookingRepo.CreateBookingParentContainer(parentContainer, db); db.BookingParentContainers.Add(parentContainer); //create booking var property = db.Properties.Find(booking.PropertyID); var customer = db.Customers.Find(booking.CustomerID); booking.Property = property; booking.BookingParentContainer = parentContainer; booking.BookingCurrencyConversionSymbol = customer.PreferredCurrencySymbol; booking.BookingPreferredCurrency = customer.PreferredCurrency; booking.BookingParticipants = null; bookingRepo.CreateBooking(booking, property, customer, db); //create parts booking.Cancelled = false; booking.Confirmed = true; booking.Test = false; db.Bookings.Attach(booking); db.Entry(booking).State = EntityState.Modified; db.SaveChanges(); var partstoAdd = new List <BookingParticipant>(); if (bookingParticipants != null) { foreach (var bookingParticipant in bookingParticipants) { if (bookingParticipant.BookingParticipantFirstName != "" && bookingParticipant.BookingParticipantFirstName != null && bookingParticipant.BookingParticipantLastName != "" && bookingParticipant.BookingParticipantLastName != null && bookingParticipant.BookingParticipantAge != "") { bookingParticipant.BookingID = booking.BookingID; partstoAdd.Add(bookingParticipant); } } if (partstoAdd.Count > 0) { bookingRepo.CreateBookingParticipant(partstoAdd, booking, db); //create all ones we need } } return(View("QuickCreateBookingWrapper")); }
public ActionResult GetBookingDetails(Customer cus, CustomerBankDetail bank, List<Booking> bookings = null, List<BookingExtraSelection> bookingExtraSelections = null, List<BookingParticipant> bookingParticipants = null) { //set customer preferred currency symbol and currency using (var db = new PortugalVillasContext()) { var account = new AccountController(); var eventService = new EventController(); var bookingRepo = new FinalBookingDetailGatheringController(); //CUSTOMER //does customer have ID? if not create new Customer if (cus.CustomerID.Equals(0)) { var returnedCus = bookingRepo.CreateCustomer(cus, db); cus = returnedCus; Session["prc_customer"] = returnedCus; } else { //update customer with new details cus.BookingExtraSelections = null; cus.Bookings = null; //Do the UPDATE if (ModelState.IsValid) { db.Entry(cus).State = EntityState.Modified; var objContextCus = ((IObjectContextAdapter)db).ObjectContext; var refreshableObjectsCus = (from entry in objContextCus.ObjectStateManager.GetObjectStateEntries( EntityState.Added | EntityState.Deleted | EntityState.Modified | EntityState.Unchanged) where entry.EntityKey != null select entry.Entity); objContextCus.Refresh(RefreshMode.ClientWins, refreshableObjectsCus); //if it works, do the update for the userContext, else, don't as it failed if (objContextCus.SaveChanges() > 0) { /*_usersContext.Entry(user).State = EntityState.Modified; _usersContext.SaveChanges();*/ } } } //BANK DETAIL if (bank.CustomerBankDetailID.Equals(0)) { var returnedBank = bookingRepo.CreateCustomerBankDetail(bank, cus, db); Session["prc_customerBankingDetail"] = returnedBank; } else { bank.CustomerID = cus.CustomerID; db.Entry(bank).State = EntityState.Modified; var objContext = ((IObjectContextAdapter)db).ObjectContext; var refreshableObjects = (from entry in objContext.ObjectStateManager.GetObjectStateEntries( EntityState.Added | EntityState.Deleted | EntityState.Modified | EntityState.Unchanged) where entry.EntityKey != null select entry.Entity); objContext.Refresh(RefreshMode.ClientWins, refreshableObjects); if (ModelState.IsValid) { if (objContext.SaveChanges() > 0) ; { //great it worked } } } //parent BookingParentContainer parentContainer = new BookingParentContainer(); parentContainer.CustomerID = cus.CustomerID; parentContainer = bookingRepo.CreateBookingParentContainer(parentContainer, db); //need to add booking reference then propagate to all others below ////////////////// //BOOKING //create a parent booking thingy and link i if (bookings != null) { foreach (var booking in bookings) { booking.Test = false; //it's real, from a customer //convert if neededed //link to parent booking booking.BookingParentContainerID = parentContainer.BookingParentContainerID; //fill em out and push them to the DB var property = db.Properties.Find(booking.PropertyID); booking.Property = property; booking.BookingParticipants = null; bookingRepo.CreateBooking(booking, property, cus, db); var participantsThisRound = bookingParticipants.Where(x => x.StepNo.Equals(bookingParticipants.Min(y => y.StepNo))) .ToList(); //create the participants var partstoAdd = new List<BookingParticipant>(); foreach (var bookingParticipant in participantsThisRound) { if (bookingParticipant.BookingParticipantFirstName != "" && bookingParticipant.BookingParticipantFirstName != null && bookingParticipant.BookingParticipantLastName != "" && bookingParticipant.BookingParticipantLastName != null) { partstoAdd.Add(bookingParticipant); } } foreach (var bookingParticipant in participantsThisRound) { bookingParticipants.Remove(bookingParticipant); } if (partstoAdd.Count > 0) { bookingRepo.CreateBookingParticipant(partstoAdd, booking, db); //create all ones we need } //now check which booking form to send depending on location string EventTypeID; TimeSpan dateRemainder = ((DateTime)booking.StartDate).Subtract(DateTime.Now); int dateRemainderDays = dateRemainder.Days; //late booking form if (cus.Country.ToLower() == "united kingdom" && ConfigurationManager.AppSettings["defaultCurrency"] == "GBP") { if (dateRemainderDays <= 30) { //late uk EventTypeID = "51"; } else { //standard UK EventTypeID = "37"; } } else { //convert all the bookings to euros if (dateRemainderDays <= 30) { //late EU EventTypeID = "52"; } else { //standard EU EventTypeID = "20"; } } //email all docs var form = new FormCollection(); form.Add("BookingID", booking.BookingID.ToString()); form.Add("EventTypeID", EventTypeID); eventService.AddBookingEvent(form); //email the user of the system } } if (bookingExtraSelections != null) { foreach (var bes in bookingExtraSelections) { //?????//convert all BES to EUROS var extraType = db.BookingExtras.Find((long)bes.BookingExtraID); bes.BookingExtraID = extraType.BookingExtraID; //link to parent booking bes.BookingParentContainerID = parentContainer.BookingParentContainerID; //need //reference //price fully done //all extras on form fully taken care of for each one var createdBes = bookingRepo.CreateBookingExtraSelection(bes, extraType, cus, db); string EventTypeID = ""; //car if (extraType.BookingExtraTypeID == 1) { if (cus.Country.ToLower() == "united kingdom") { EventTypeID = "43"; } else { EventTypeID = "62"; } } //wine else if (extraType.BookingExtraTypeID == 2) { if (cus.Country.ToLower() == "united kingdom") { EventTypeID = "45"; } else { EventTypeID = "60"; } } //airport else if (extraType.BookingExtraTypeID == 3) { if (cus.Country.ToLower() == "united kingdom") { EventTypeID = "31"; } else { EventTypeID = "61"; } } //tour else if (extraType.BookingExtraTypeID == 4) { if (cus.Country.ToLower() == "united kingdom") { EventTypeID = "33"; } else { EventTypeID = "63"; } } var form = new FormCollection(); form.Add("BookingExtraSelectionID", bes.BookingExtraSelectionID.ToString()); form.Add("EventTypeID", EventTypeID); eventService.AddBookingExtraSelectionEvent(form); } } //wipe cars = booking and bes Session["Cart_PropertyBookings"] = null; Session["Cart_ExtraBookings"] = null; //email the main user with the new services and bookings var prc = db.PRCInformations.First(); MaintainanceMailer mail = new MaintainanceMailer(); mail.theAsposeMessage.Subject = "You have new bookings:"; mail.theAsposeMessage.HtmlBody = "<h1>Automated email: You have a new booking</h1><br><p>Customer: ID - " + cus.CustomerID + "-" + cus.FirstName + " " + cus.LastName + "</p>"; if (bookings != null) { foreach (var booking in bookings) { mail.theAsposeMessage.HtmlBody += "<p>Booking: ID - " + booking.BookingID + "-" + booking.Property.LegacyReference + " for " + booking.NumberOfNights + " " + "nights starting " + booking.StartDate.ToString().Substring(0, 10) + "</p>"; } } if (bookingExtraSelections != null) { foreach (var bes in bookingExtraSelections) { mail.theAsposeMessage.HtmlBody += "<p>Booking: ID - " + bes.BookingExtraSelectionID + " - " + bes.BookingExtra.BookingExtraName + " for " + bes.NumberOfDays + " " + "days starting " + bes.ExtraRentalDate.ToString().Substring(0, 10) + " for " + bes.NumberOfGuests + " people" + "</p>"; } } var addressees = new MailAddressCollection(); addressees.Add(prc.PRCNotificationEmailAddress); if (prc.PRCNotificationEmailAddress2 != null) if (prc.PRCNotificationEmailAddress2 != "") { addressees.Add(prc.PRCNotificationEmailAddress2); } if (prc.PRCNotificationEmailAddress3 != null) if (prc.PRCNotificationEmailAddress3 != "") { addressees.Add(prc.PRCNotificationEmailAddress3); } mail.SendEmail(); return RedirectToAction("EndOfBookingProcess", "EndOfProcess"); } }
public ActionResult QuickCreate(BookingExtraSelection bes) { using (var db = new PortugalVillasContext()) { var cus = db.Customers.Find(bes.CustomerID); var account = new AccountController(); var eventService = new EventController(); var bookingRepo = new FinalBookingDetailGatheringController(); //parent BookingParentContainer parentContainer = new BookingParentContainer(); parentContainer.CustomerID = cus.CustomerID; parentContainer = bookingRepo.CreateBookingParentContainer(parentContainer, db); var extraType = db.BookingExtras.Find((long)bes.BookingExtraID); bes.BookingExtraID = extraType.BookingExtraID; //link to parent booking bes.BookingParentContainerID = parentContainer.BookingParentContainerID; //need //reference //price fully done //all extras on form fully taken care of for each one var createdBes = bookingRepo.CreateBookingExtraSelection(bes, extraType, cus, db); string EventTypeID = ""; //car if (extraType.BookingExtraTypeID == 1) { if (cus.Country.ToLower() == "united kingdom") { EventTypeID = "43"; } else { EventTypeID = "62"; } } //wine else if (extraType.BookingExtraTypeID == 2) { if (cus.Country.ToLower() == "united kingdom") { EventTypeID = "45"; } else { EventTypeID = "60"; } } //airport else if (extraType.BookingExtraTypeID == 3) { if (cus.Country.ToLower() == "united kingdom") { EventTypeID = "31"; } else { EventTypeID = "61"; } } //tour else if (extraType.BookingExtraTypeID == 4) { if (cus.Country.ToLower() == "united kingdom") { EventTypeID = "33"; } else { EventTypeID = "63"; } } var form = new FormCollection(); form.Add("BookingExtraSelectionID", bes.BookingExtraSelectionID.ToString()); form.Add("EventTypeID", EventTypeID); } return(View()); }