public PlacesViewModel(IPlaceService placeService, IOrderService orderService, IFilePickerService filePickerService, ICommonServices commonServices) : base(commonServices) { PlaceService = placeService; PlaceList = new PlaceListViewModel(PlaceService, commonServices); PlaceDetails = new PlaceDetailsViewModel(PlaceService, filePickerService, commonServices); PlaceOrders = new OrderListViewModel(orderService, commonServices); }
/* * Handle external messages ****************************************************************/ private async void OnDetailsMessage(PlaceDetailsViewModel sender, string message, PlaceModel changed) { var current = Item; if (current != null) { if (changed != null && changed.PlaceID == current?.PlaceID) { switch (message) { case "ItemChanged": await ContextService.RunAsync(async() => { try { var item = await PlaceService.GetPlaceAsync(current.PlaceID); item = item ?? new PlaceModel { PlaceID = current.PlaceID, IsEmpty = true }; current.Merge(item); current.NotifyChanges(); NotifyPropertyChanged(nameof(Title)); if (IsEditMode) { StatusMessage("WARNING: This place has been modified externally"); } } catch (Exception ex) { LogException("Place", "Handle Changes", ex); } }); break; case "ItemDeleted": await OnItemDeletedExternally(); break; } } } }