コード例 #1
0
ファイル: OptionsViewModel.cs プロジェクト: yves982/Resotel
        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);
            }
        }
コード例 #2
0
ファイル: BookingViewModel.cs プロジェクト: yves982/Resotel
        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);
            }
        }
コード例 #3
0
ファイル: BookingViewModel.cs プロジェクト: yves982/Resotel
        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);
                }
            }
        }
コード例 #4
0
ファイル: BookingViewModel.cs プロジェクト: yves982/Resotel
        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);
            }
        }