protected void SubmitButton_Click(object sender, EventArgs e) { try { int amountPersons = int.Parse(Page.GetTempData("amountPersons").ToString()); DateTime startDate = DateTime.Parse(Page.GetTempData("arrivalDate").ToString()); int amountNights = int.Parse(Page.GetTempData("amountNights").ToString()); DateTime endDate = startDate.AddDays(amountNights); // hämta valda rum från sessionsvariabel List<int> selRooms = Page.GetTempData("selectedRooms") as List<int>; // skapa nytt booking objekt och skicka det till SaveBooking Booking booking = new Booking(); // om sessionsvariabel finns if (Session["bookingId"] != null) { // hämta boookingId från sessionsvariabel och tilldela objektet egenskapen bookingId int bookingId = int.Parse(Page.GetAndKeepTempData("bookingId").ToString()); booking.BookingID = bookingId; } booking.AmountPersons = amountPersons; Service.SaveBooking(booking); // skapa nytt BookedRoom objekt och skicka det till SaveBookedRoom BookedRoom bookedRoom = new BookedRoom(); bookedRoom.BookingID = booking.BookingID; bookedRoom.StartDate = startDate; bookedRoom.EndDate = endDate; foreach (int id in selRooms) { bookedRoom.RoomID = id; Service.SaveBookedRoom(bookedRoom); } // om det finns bookingId i session skicka tillbaka till Change booking if (Session["bookingId"] != null) { Page.SetTempData("SuccessMessage", "The room was added successfully."); int bookingId = int.Parse(Page.GetTempData("bookingId").ToString()); Response.RedirectToRoute("BookingChange", new { id = bookingId }); Context.ApplicationInstance.CompleteRequest(); } // annars till bokningslistan else { Page.SetTempData("SuccessMessage", "The Booking was made successfully."); Response.RedirectToRoute("Default", null); Context.ApplicationInstance.CompleteRequest(); } } catch (Exception) { ModelState.AddModelError(String.Empty, "Error while making a booking"); } }
public void SaveBooking(Booking booking) { // Uppfyller inte objektet affärsreglerna... ICollection<ValidationResult> validationResults; if (!booking.Validate(out validationResults)) // Använder "extension method" för valideringen! { // Klassen finns under App_Infrastructure. // ...kastas ett undantag med ett allmänt felmeddelande samt en referens // till samlingen med resultat av valideringen. var ex = new ValidationException("Objektet klarade inte valideringen."); ex.Data.Add("ValidationResults", validationResults); throw ex; } // Booking-objektet sparas antingen genom att en ny post // skapas eller genom att en befintlig post uppdateras. if (booking.BookingID == 0) // Ny post om CustomerId är 0! { BookingDAL.InsertBooking(booking); } else { BookingDAL.UpdateBooking(booking); } }