public async void FetchData() { var service = new ShoppingQuery(); var result = await service.Get(); if (result.Data != null) { var items = result.Data.Weeks.OrderByDescending(m => m.WeekId).Select(x => new Shopping() { ShopperName = $"{x.Shopper.FirstName} {x.Shopper.LastName}", Cost = x.Cost, Owed = (x.Cost - x.Users.Sum(s => s.Paid)), Paid = x.Users.Sum(s => s.Paid) }).ToList(); Shopping = new ObservableCollection <Model.Shopping>(items); } }
public ShoppingList Handle(ShoppingQuery query) { var products = _productsRepository .Query(onlyNotRemoved: false) .Where(x => IsNotRemovedAndIsNotSuitableForConsumptionEvenNextWeek(x) || WasRemovedNotBeforeSevenDaysAgo(x) ) .ToList() .Select(p => { if (IsNotRemovedAndIsNotSuitableForConsumptionEvenNextWeek(p)) { if (p.IsSuitableForConsumption && !p.IsSuitableForConsumptionForDate(SystemTime.Now.AddDays(7))) { return(new ShoppingList.Product(p.Name, $"Product won't be suitable for consumption for {GetDaysDifferenceFromNow(p.ExpirationDate)} days.")); } if (!p.IsSuitableForConsumption) { return(new ShoppingList.Product(p.Name, $"Product isn't suitable for consumption since {GetDaysDifferenceFromNow(p.ExpirationDate)} days.")); } } if (WasRemovedNotBeforeSevenDaysAgo(p)) { return(new ShoppingList.Product(p.Name, $"Product was removed from fridge {GetDaysDifferenceFromNow(p.RemovedAt.Value)} days ago. Probably you will need it again.")); } return(new ShoppingList.Product(string.Empty, string.Empty)); }) .ToList(); return(new ShoppingList(products.Count, products)); }