Beispiel #1
0
        public StampCardViewModel(RewardsMember rewardsMember, IRepository <RewardsMember> rewardsMemberRepo)
        {
            rewardsMemberRepo = rewardsMemberRepo ?? Locator.Current.GetService <IRewardsMemberRepo>();

            _rewardsMember = rewardsMember;
            RewardCount    = _rewardsMember.UnclaimedRewardCount;

            var stampCells = new List <IStampCellViewModel>(MAX_STAMPS);
            int numStamps  = rewardsMember.TotalVisits % MAX_STAMPS;

            for (int i = 0; i < MAX_STAMPS; ++i)
            {
                bool stamped = i < numStamps;
                stampCells.Add(new StampCellViewModel(stamped));
            }

            StampCells = stampCells.AsReadOnly();

            Save = ReactiveCommand.CreateFromObservable(
                () =>
            {
                _rewardsMember.UnclaimedRewardCount = RewardCount;

                return(rewardsMemberRepo
                       .Upsert(_rewardsMember));
            });

            IncrementRewardCount = ReactiveCommand.Create(
                () =>
            {
                ++RewardCount;
            });

            DecrementRewardCount = ReactiveCommand.Create(
                () =>
            {
                --RewardCount;
            });

            this
            .WhenAnyValue(x => x.SelectedItem)
            .Where(x => x != null)
            .Do(x => x.Stamped = !x.Stamped)
            .Select(x => x.Stamped)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe(
                stamped =>
            {
                SelectedItem = null;
                _rewardsMember.TotalVisits += stamped ? 1 : -1;
            });
        }
 public RewardsMemberCellViewModel(RewardsMember model)
 {
     _model = model;
 }