public PassengerValidator(BookingPassengerInfo passengerInfo)
        {
            if (passengerInfo == null)
            {
                throw new ArgumentNullException("passengerInfo");
            }

            this.passengerInfo = passengerInfo;
        }
예제 #2
0
        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;
            }
        }
예제 #3
0
     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;
     }
예제 #4
0
파일: Booking.cs 프로젝트: felixthehat/Limo
     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();
             }
         }
     }
예제 #5
0
        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++;
            }
        }