public MainCtr() { var db = new dmab0913_3DataContext(); AirplaneCtr = new AirplaneCtr(db); AirportCtr = new AirportCtr(db); BookingCtr = new BookingCtr(db); FlightCtr = new FlightCtr(db); PersonCtr = new PersonCtr(db); }
public bool CreateNewBooking(int[] flightIDs, List <Person> persons, string totalTime, double totalPrice) { bool returnValue = true; AirplaneCtr airplaneCtr = new AirplaneCtr(_db); //Lav lister med personer og flights fra arrays med id var flights = flightIDs.Select(id => _db.Flights.SingleOrDefault(flight => flight.flightID == id)).ToList(); //Opret booking. Skal submittes til db så den får ID fra IDENTITY! var booking = new Booking { totalPrice = totalPrice * persons.Count, totalTime = totalTime }; using (var transScope = new TransactionScope()) { try { _db.Bookings.InsertOnSubmit(booking); _db.SubmitChanges(); foreach (Person p in persons) { //Hvis personID er 0 er det en person der ikke er oprettet i db og derfor ikke har et ID endnu if (p.personID == 0) { _db.Persons.InsertOnSubmit(p); _db.SubmitChanges(); } var bookingPassenger = new BookingPassenger { bookingID = booking.bookingID, personID = p.personID }; _db.BookingPassengers.InsertOnSubmit(bookingPassenger); } foreach (Flight f in flights) { //Hvis der er plads på flyet if (airplaneCtr.GetAirplaneByID(Convert.ToInt32(f.airplaneID)).seats >= f.takenSeats + persons.Count) { //Opret ny BookingFlight var bookingFlights = new BookingFlight { bookingID = booking.bookingID, flightID = f.flightID }; _db.BookingFlights.InsertOnSubmit(bookingFlights); f.takenSeats += persons.Count; } else { returnValue = false; } } if (returnValue) { _db.SubmitChanges(); transScope.Complete(); } else { Transaction.Current.Rollback(); } } catch (SqlException) { returnValue = false; } catch (Exception) { returnValue = false; } } return(returnValue); }