Ejemplo n.º 1
0
 internal void ApplyState(ReplacerState state)
 {
     if (state.SearchState != null)
     {
         SearchViewModel.State.ApplySearchCriteria(state.SearchState);
     }
     State.ApplyReplaceCriteria(state);
 }
Ejemplo n.º 2
0
        public MassReplacerViewModel(IQueryDispatcher queryDispatcher, ICommandDispatcher commandDispatcher, ViewModelFactory factory, IMessagesService messagesService)
        {
            _queryDispatcher   = queryDispatcher;
            _commandDispatcher = commandDispatcher;
            _messagesService   = messagesService;
            State                 = new ReplacerState();
            SearchViewModel       = factory.Create <SearchViewModel>();
            PerformReplaceCommand = new RelayCommand(ExecutePerformCommand, CanExecutePerformCommand);
            ApplyReverseReplaceSearchStateCommand = new RelayCommand(() =>
                                                                     SearchViewModel.State.ApplyReverseReplaceCriteria(State), () => _transactionSetters.Any(x => x.CanExecute()));

            _transactionSetters = new ISetter <Model.Transaction>[]
            {
                TextSetterCommand.Create(State.TitleSelector, SearchViewModel.State.TitleFilter),
                TextSetterCommand.Create(State.NoteSelector, SearchViewModel.State.NoteFilter),
                TextSetterCommand.Create(State.PositionTitleSelector, SearchViewModel.State.PositionTitleFilter),
                DateSetterCommand.Create(State.BookDateSetter),
                SingleSetterCommand.Create(State.CategoriesSelector),
                SingleSetterCommand.Create(State.UserStocksSelector),
                SingleSetterCommand.Create(State.ExternalStocksSelector),
                SingleSetterCommand.Create(State.TypesSelector),
                MultiSetterCommand.Create(State.TagsSelector)
            };
            _positionSetter = _transactionSetters.OfType <ISetter <Model.Position> >().ToArray();

            MassReplacerSaveCommand = new RelayCommand <string>(name =>
            {
                State.Name        = name;
                State.SearchState = SearchViewModel.State;
                var state         = Mapper.Map <MassReplacerState>(State);
                _commandDispatcher.Execute(new UpsertReplacerStateCommand(state));

                var mapped = Mapper.Map <ReplacerState>(state);
                Patterns.Remove(mapped);
                Patterns.Add(mapped);
            }, name => !string.IsNullOrWhiteSpace(name));
            MassReplacerLoadCommand = new RelayCommand <BaseObservableObject>(selected =>
            {
                var state = selected as ReplacerState;
                ApplyState(state);
            }, selected => selected != null);

            ClearMassReplacerStateCommand = new RelayCommand(() => State.Clear());

            var patterns = _queryDispatcher.Execute <ReplacerStateQuery, MassReplacerState[]>(new ReplacerStateQuery())
                           .OrderBy(x => x.Name);

            Patterns = new ObservableCollection <BaseObservableObject>(Mapper.Map <ReplacerState[]>(patterns));
        }