private async void SaveButton_Click(object sender, EventArgs e) { DisableErrors(); if (!CheckInput()) return; var disaster = new Disaster { Active = DisasterStatusType.Active, Country = txtCountry.Text, Description = txtDescription.Text, InitiatorId = App.User.Id, InitiatorName = App.User.Fullname, Latitude = map.Center.Latitude, Longitude = map.Center.Longitude, RatingMinus = 0, RatingPlus = 0 }; var error = false; try { await Service.InsertItemAsync(disaster); } catch (Exception ex) { error = true; } if (error) { MessageBox.Show("Something went wrong!"); return; } NavigationService.GoBack(); }
protected override async void OnNavigatedTo(NavigationEventArgs e) { SystemTray.IsVisible = true; _disasterId = NavigationContext.QueryString["DisasterId"]; _disasterName = NavigationContext.QueryString["DisasterName"]; pivot.Title = _disasterName; try { _disaster = (await Service.GetTable<Disaster>() .Where(t => t.Id == _disasterId).ToListAsync()).FirstOrDefault(); if (e.NavigationMode == NavigationMode.New) { if (_disaster.InitiatorId == App.User.Id) AddMarkAsInactiveButtonToAppBar(); else await AddAttendButtonTopAppBar(); } var items = await Service.GetTable<Center>() .Where(t => t.DisasterId == _disasterId) .ToListAsync(); if (items.Count == 0) { txtNoCenters.Visibility = Visibility.Visible; txtNoInvolved.Visibility = Visibility.Visible; txtNoMissing.Visibility = Visibility.Visible; txtNoNeeds.Visibility = Visibility.Visible; txtNoPacients.Visibility = Visibility.Visible; } else { txtNoCenters.Visibility = Visibility.Collapsed; lstCenters.ItemsSource = items; foreach (var item in items) { var pin = new Pushpin() { Location = new GeoCoordinate(item.Latitude, item.Longitude), Content = item.Name, Tag = string.Format("{0}?CenterId={1}&CenterName={2}", PageConstants.ViewCenterDetailsPage, item.Id, item.Name) }; pin.Tap += pin_Tap; map.Children.Add(pin); } } txtNoInvolved.Visibility = Visibility.Collapsed; txtNoMissing.Visibility = Visibility.Collapsed; txtNoNeeds.Visibility = Visibility.Collapsed; txtNoPacients.Visibility = Visibility.Collapsed; var missing = await Service.GetTable<Missing>().Where(t => t.DisasterId == _disasterId).ToListAsync(); if (missing.Count == 0) txtNoMissing.Visibility = Visibility.Visible; else lstMissing.ItemsSource = missing; var centers = items.Where(t => t.DisasterId == _disasterId).Select(t => t.Id); var needs = await Service.GetTable<Needs>().Where(t => centers.Contains(t.CenterId)).ToListAsync(); if (needs.Count == 0) txtNoNeeds.Visibility = Visibility.Visible; else lstNeeds.ItemsSource = needs; var patients = await Service.GetTable<Pacient>().Where(t => centers.Contains(t.CenterId)).ToListAsync(); if (patients.Count == 0) txtNoPacients.Visibility = Visibility.Visible; else lstPacients.ItemsSource = patients; var involved = await Service.GetTable<DisasterAttend>().Where(t => t.DisasterId == _disasterId).Select(t => t.ParticipantId).ToListAsync(); var people = await Service.GetTable<User>().Where(t => involved.Contains(t.Id)).ToListAsync(); if (people.Count == 0) txtNoInvolved.Visibility = Visibility.Visible; else lstInvolved.ItemsSource = people; staDetails.DataContext = _disaster; pivot.Title = _disaster.Country; } catch (Exception ex) { MessageBox.Show("Something went wrong!"); } geolocator = new Geolocator(); geolocator.DesiredAccuracy = PositionAccuracy.High; geolocator.DesiredAccuracyInMeters = 100; var location = await geolocator.GetGeopositionAsync(); map.Center = new GeoCoordinate(location.Coordinate.Latitude, location.Coordinate.Longitude); }