private void _optionChanged(object sender, PropertyChangedEventArgs pcea) { try { if (!(sender is OptionChoiceEntity)) { throw new InvalidOperationException(); } OptionChoiceEntity optChoiceEntity = sender as OptionChoiceEntity; OptionChangeKind kind = OptionChangeKind.Default; switch (pcea.PropertyName) { case nameof(optChoiceEntity.Taken): kind = OptionChangeKind.Taken; break; case nameof(optChoiceEntity.TakenStart): case nameof(optChoiceEntity.TakenEnd): kind = OptionChangeKind.TakenDates; break; case nameof(optChoiceEntity.PeopleCount): kind = OptionChangeKind.PeopleCount; break; } OptionChoiceEntityChange optChange = new OptionChoiceEntityChange(kind, optChoiceEntity); OptionChanged?.Invoke(null, optChange); } catch (Exception ex) { Logger.Log(ex); } }
private void _updateOptionChoices(OptionChoiceEntityChange optChoiceEntityChange, OptionChoiceEntity optChoiceEntity, int optChoiceIndex) { if (optChoiceEntity.Taken && optChoiceEntityChange.Kind == OptionChangeKind.Taken) { if (optChoiceIndex != -1) { _booking.OptionChoices.RemoveAt(optChoiceIndex); } _booking.OptionChoices.Add(optChoiceEntity.OptionChoice); } else if (!optChoiceEntity.Taken && optChoiceEntityChange.Kind == OptionChangeKind.Taken && optChoiceIndex != -1) { _booking.OptionChoices.Remove(optChoiceEntity.OptionChoice); } }
private void _updateDates(OptionChoiceEntityChange optChoiceEntityChange, OptionChoiceEntity optChoiceEntity) { if (optChoiceEntityChange.Kind == OptionChangeKind.Taken && optChoiceEntity.Taken) { DateRange dateRange = (DateRange)((ICloneable)_booking.Dates).Clone(); optChoiceEntity.TakenStart = dateRange.Start; optChoiceEntity.TakenEnd = dateRange.End; if (optChoiceEntity.OptionChoice.Option.Id == 8) { optChoiceEntity.TakenStart = dateRange.Start.Date.AddDays(1.0d); } } }
private void _optionsChanged(object sender, OptionChoiceEntityChange optChoiceEntityChange) { try { OptionChoiceEntity optChoiceEntity = optChoiceEntityChange.OptionChoiceEntity; int optChoiceIndex = _booking.OptionChoices.FindIndex(optC => optC.Option.Id == optChoiceEntity.OptionChoice.Option.Id); _updateDates(optChoiceEntityChange, optChoiceEntity); _updateOptionChoices(optChoiceEntityChange, optChoiceEntity, optChoiceIndex); RoomChoices.Update(optChoiceEntity); _unlockSearchClientAndNewClientIfNeeded(); _checkCapacityWithBabies(optChoiceEntity); } catch (Exception ex) { Logger.Log(ex); } }