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);
        }