private async Task ExecuteRefresh() { try { MaterialViewModel c = SelectedPlace; var mats = await _warehouse.DBService.GetPlacesMaterialID(_excludeWout); PlaceList.Clear(); foreach (var p in mats) { PlaceList.Add(new MaterialViewModel { Location = p.Location, ID = p.ID, Size = p.Size, Weight = p.Weight }); } foreach (var mvm in PlaceList) { mvm.Initialize(_warehouse); } // RaisePropertyChanged("PlaceList"); if (c != null) { SelectedPlace = PlaceList.FirstOrDefault(p => p.ID == c.ID); } } catch (Exception e) { _warehouse.AddEvent(Database.Event.EnumSeverity.Error, Database.Event.EnumType.Exception, string.Format("{0}.{1}: {2}", this.GetType().Name, (new StackTrace()).GetFrame(0).GetMethod().Name, e.Message)); } }
/// <summary>Update Data event, runs every time</summary> /// <param name="something"></param> private async void UpdateData(string something) { using (var db = new MainDbContext()) { var places = await db.Locations.Where(loc => loc.Devices.Count > 0).Include(loc => loc.CropCycles).ToListAsync(); var cropTypeCache = await db.CropTypes.ToListAsync(); foreach (var cropType in cropTypeCache) { if (_cropTypeCache.Any(ct => ct.Key.Equals(cropType.Name.ToLower())) == false) { var pair = new KeyValuePair <string, CropType>(cropType.Name.ToLower(), cropType); _cropTypeCache.Add(pair); } } foreach (var loc in places) { var tuple = PlaceList.FirstOrDefault(ct => ct.Location.Equals(loc)); if (tuple == null) { tuple = new PlaceTuple { Location = loc }; PlaceList.Add(tuple); } var runningCropCycle = loc.CropCycles.FirstOrDefault(cc => cc.EndDate == null); if (runningCropCycle != null) { tuple.DisplayName = loc.Name + " - already monitoring " + runningCropCycle.CropTypeName + " of variety " + runningCropCycle.CropVariety; tuple.IsVacant = false; } else { tuple.DisplayName = loc.Name + " - Avaliable"; tuple.IsVacant = true; } } OnPropertyChanged(nameof(PlaceList)); } }