public PassengerValidator(BookingPassengerInfo passengerInfo) { if (passengerInfo == null) { throw new ArgumentNullException("passengerInfo"); } this.passengerInfo = passengerInfo; }
public SaveBookingPassengerInfoResponse SaveBookingPassengerInfo(int bookingId, int primaryPassengerId, BookingPassengerInfo info) { try { using (var db = new LomsContext()) { var booking = db.Bookings.FirstOrDefault(b => b.Id == bookingId); if (booking.PrimaryPassengerId != primaryPassengerId) { if (booking.CreatorId != primaryPassengerId) booking.PrimaryPassengerId = primaryPassengerId; else booking.PrimaryPassengerId = null; db.Bookings.ApplyChanges(booking); } info.RemovedAdults.ForEach(i => { db.BookingPassengerInfoAdults.Attach(i); db.BookingPassengerInfoAdults.DeleteObject(i); }); info.RemovedChilds.ForEach(i => { db.BookingPassengerInfoChilds.Attach(i); db.BookingPassengerInfoChilds.DeleteObject(i); }); info.RemovedInfants.ForEach(i => { db.BookingPassengerInfoInfants.Attach(i); db.BookingPassengerInfoInfants.DeleteObject(i); }); db.BookingPaymentItems.Where(p => p.BookingId == bookingId).ForEach(item => db.BookingPaymentItems.DeleteObject(item)); //remove charge info and incompleted credit card transactions var chargeInfo = db.BookingChargeInfoes.SingleOrDefault(ci => ci.BookingId == bookingId); if (chargeInfo != null) db.BookingChargeInfoes.DeleteObject(chargeInfo); db.BookingTransactionCreditCards.Where(p => p.BookingId == bookingId && p.OrderDateTime == null).ForEach(item => db.BookingTransactionCreditCards.DeleteObject(item)); db.BookingPassengerInfoes.ApplyChanges(info); db.SaveChanges(); } using (var db = new LomsContext()) { var response = new SaveBookingPassengerInfoResponse(); response.PassengerInfo = db.BookingPassengerInfoes.IncludeAll("Adults", "Childs", "Infants").FirstOrDefault(b => b.BookingId == bookingId); response.ProvisionInfo = db.BookingProvisionInfoes.FirstOrDefault(b => b.BookingId == bookingId); return response; } } catch (Exception ex) { var response = new SaveBookingPassengerInfoResponse(); response.AddError("Response", ex.ToString()); return response; } }
public bool Equals(BookingPassengerInfo other) { if (ReferenceEquals(null, other)) return false; if (ReferenceEquals(this, other)) return true; if (other.BookingId == 0 && BookingId == 0) return false; else return other.BookingId == BookingId; }
private void FixupPassengerInfo(BookingPassengerInfo previousValue) { // This is the principal end in an association that performs cascade deletes. // Update the event listener to refer to the new dependent. if (previousValue != null) { ChangeTracker.ObjectStateChanging -= previousValue.HandleCascadeDelete; } if (PassengerInfo != null) { ChangeTracker.ObjectStateChanging += PassengerInfo.HandleCascadeDelete; } if (IsDeserializing) { return; } if (PassengerInfo != null) { PassengerInfo.BookingId = Id; } if (ChangeTracker.ChangeTrackingEnabled) { if (ChangeTracker.OriginalValues.ContainsKey("PassengerInfo") && (ChangeTracker.OriginalValues["PassengerInfo"] == PassengerInfo)) { ChangeTracker.OriginalValues.Remove("PassengerInfo"); } else { ChangeTracker.RecordOriginalValue("PassengerInfo", previousValue); // This is the principal end of an identifying association, so the dependent must be deleted when the relationship is removed. // If the current state of the dependent is Added, the relationship can be changed without causing the dependent to be deleted. if (previousValue != null && previousValue.ChangeTracker.State != ObjectState.Added) { previousValue.MarkAsDeleted(); } } if (PassengerInfo != null && !PassengerInfo.ChangeTracker.ChangeTrackingEnabled) { PassengerInfo.StartTracking(); } } }
public static void UpdateDisplayOrdinalPosition(BookingPassengerInfo passengerInfo) { if (passengerInfo == null) return; // re-number the passengers int counter = 2; // we start at 2 here because the first adult is treated seperately foreach (var adult in passengerInfo.Adults) { adult.DisplayPositionName = "Adult " + counter; counter++; } // re-number the passengers int childCounter = 1; foreach (var child in passengerInfo.Childs) { child.DisplayPositionName = "Child " + childCounter; childCounter++; } // re-number the passengers int infantCounter = 1; foreach (var infant in passengerInfo.Infants) { infant.DisplayPositionName = "Infant " + infantCounter; infantCounter++; } }