Example #1
0
    private void OnSelectionChanged()
    {
        Money sumOfWhiteList =
            NonPrivatePockets
            .Where(pocket => pocket.Labels.All(pocketLabel => LabelsWhiteList.Any(labelViewModel => pocketLabel == labelViewModel.Value)))
            .Sum(x => x.Amount);

        if (sumOfWhiteList >= _targetAmount)
        {
            EnoughSelected        = true;
            _includePrivatePocket = false;
        }
        else if (!LabelsBlackList.Any() && sumOfWhiteList + _privatePocket.Amount >= _targetAmount)
        {
            EnoughSelected        = true;
            _includePrivatePocket = true;
        }
        else if (!LabelsWhiteList.Any() && _privatePocket.Amount >= _targetAmount)
        {
            EnoughSelected        = true;
            _includePrivatePocket = true;
        }
        else
        {
            EnoughSelected        = false;
            _includePrivatePocket = false;
        }

        this.RaisePropertyChanged(nameof(LabelsWhiteList));
        this.RaisePropertyChanged(nameof(LabelsBlackList));
    }
Example #2
0
    public Pocket[] GetUsedPockets()
    {
        var pocketsToReturn = NonPrivatePockets.Where(x => x.Labels.All(label => LabelsWhiteList.Any(labelViewModel => labelViewModel.Value == label))).ToList();

        if (_includePrivatePocket)
        {
            pocketsToReturn.Add(_privatePocket);
        }

        return(pocketsToReturn.ToArray());
    }
Example #3
0
    private void OnSelectionChanged()
    {
        Money sumOfWhiteList =
            NonPrivatePockets
            .Where(pocket => pocket.Labels.All(pocketLabel => LabelsWhiteList.Any(labelViewModel => pocketLabel == labelViewModel.Value)))
            .Sum(x => x.Amount);

        _includePrivatePocket = NonPrivatePockets.Sum(x => x.Amount) < _targetAmount || (LabelsWhiteList.IsEmpty() && _privatePocket.Amount >= _targetAmount);
        var totalSelected = sumOfWhiteList + (_includePrivatePocket ? _privatePocket.Amount : Money.Zero);

        EnoughSelected = totalSelected >= _targetAmount;

        this.RaisePropertyChanged(nameof(LabelsWhiteList));
        this.RaisePropertyChanged(nameof(LabelsBlackList));
    }
Example #4
0
 public LabelViewModel[] GetAssociatedLabels(LabelViewModel labelViewModel)
 {
     if (labelViewModel.IsBlackListed)
     {
         var associatedPocketLabels = NonPrivatePockets.OrderBy(x => x.Labels.Count()).First(x => x.Labels.Contains(labelViewModel.Value)).Labels;
         return(LabelsBlackList.Where(x => associatedPocketLabels.Contains(x.Value)).ToArray());
     }
     else
     {
         var associatedPockets      = NonPrivatePockets.Where(x => x.Labels.Contains(labelViewModel.Value));
         var notAssociatedPockets   = NonPrivatePockets.Except(associatedPockets);
         var allNotAssociatedLabels = SmartLabel.Merge(notAssociatedPockets.Select(x => x.Labels));
         return(LabelsWhiteList.Where(x => !allNotAssociatedLabels.Contains(x.Value)).ToArray());
     }
 }