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; }