예제 #1
0
        public BookingViewModel(IUnitOfWork unit, IEventAggregator eventAggregator,
                                IBookingCalculate calculationService,
                                ISearchGuestService searchGuestService,
                                IBookingFacade bookingFacade,
                                IRegionManager regionManager)
        {
            _unit = unit;
            _calculationService = calculationService;
            _searchGuestService = searchGuestService;
            _bookingFacade      = bookingFacade;
            _eventAggregator    = eventAggregator;

            _regionManager = regionManager;

            GuestResults = new ObservableCollection <Guest>();
            SearchRooms  = new SearchWrapper();
            Guest        = new GuestWrapper();

            SearchCommand = new DelegateCommand(SearchExecute, CanSearchExecute).ObservesCanExecute(() => SearchRooms.IsEnabled);
            BookCommand   = new DelegateCommand <object>(BookExecute, CanBookExecute).ObservesCanExecute(() => IsGuestFormValid);

            _eventAggregator.GetEvent <LoadEvent>().Subscribe(OnLoadEvent);

            Calculation.GetInstance().StayTypeChanged             += BookingViewModel_StayTypeChanged;
            SelectedRoomChange.GetInstance().RoomSelectionChanged += BookingViewModel_RoomSelectionChanged;
            SelectedGuestEvent.GetInstance().SelectedGuestChanged += OnSelectedGuestChange;

            SearchRooms.StateChanged += SearchRooms_StateChanged;
            Guest.StateChanged       += Guest_StateChanged;
        }
예제 #2
0
        public BookingsViewModel(IBookingFacade bookingFacade)
        {
            this.bookingFacade = bookingFacade ?? throw new ArgumentNullException(nameof(bookingFacade));

            this.PageTitle = "Bookings!";
        }