// Méthode permettant de modifier ou d'ajouter le lieu d'observation défini private void ButtonValidate_Clicked(object sender, EventArgs e) { // Cas d'un ajout if (!App.ObservationPointsViewModel.ListeLieuxObservation.Contains(App.ObservationPointsViewModel.LieuObservationEnCoursDeDefinition)) { LieuObservationModel newObservationPoint = new LieuObservationModel(NomLieuObservation.Text, (int)LongitudeDegres.Value, (int)LongitudeMinute.Value, (float)LongitudeSeconde.Value, (int)LatitudeDegres.Value, (int)LatitudeMinute.Value, (float)LatitudeSeconde.Value, (float)Altitude.Value); App.ObservationPointsViewModel.ListeLieuxObservation.Add(newObservationPoint); App.DataProvider.UpdateObservationPoint(newObservationPoint); App.ObservationPointsViewModel.ListeLieuxObservation = App.ObservationPointsViewModel.ListeLieuxObservation; // On force la notification App.ObservationPointsViewModel.NombreMaxLieuObservationNonAtteint = App.ObservationPointsViewModel.NombreMaxLieuObservationNonAtteint; // On force la notification } // Cas d'une modification else { int index = App.ObservationPointsViewModel.ListeLieuxObservation.IndexOf(App.ObservationPointsViewModel.LieuObservationEnCoursDeDefinition); int id = App.ObservationPointsViewModel.LieuObservationEnCoursDeDefinition.ID; bool lieuSelectionne = false; if (App.ObservationPointsViewModel.ListeLieuxObservation[index] == App.ObservationPointsViewModel.LieuObservationSelectionne) { lieuSelectionne = true; } LieuObservationModel modifiedObservationPoint = new LieuObservationModel(NomLieuObservation.Text, (int)LongitudeDegres.Value, (int)LongitudeMinute.Value, (float)LongitudeSeconde.Value, (int)LatitudeDegres.Value, (int)LatitudeMinute.Value, (float)LatitudeSeconde.Value, (float)Altitude.Value); modifiedObservationPoint.ID = id; App.ObservationPointsViewModel.ListeLieuxObservation.RemoveAt(index); App.ObservationPointsViewModel.ListeLieuxObservation.Insert(index, modifiedObservationPoint); if (lieuSelectionne) { App.ObservationPointsViewModel.LieuObservationSelectionne = App.ObservationPointsViewModel.ListeLieuxObservation[index]; } App.DataProvider.UpdateObservationPoint(modifiedObservationPoint); App.ObservationPointsViewModel.ListeLieuxObservation = App.ObservationPointsViewModel.ListeLieuxObservation; // On force la notification } App.ObservationPointsViewModel.LieuObservationEnCoursDeDefinition = null; PickerObservationPoints.SelectedItem = null; }
/// <summary> /// Insère ou met à jour un lieu d'observation défini par l'utilisateur /// </summary> /// <param name="a_observationPoint">Objet LieuObservationModel représentant le lieu d'observation</param> /// <returns>Nombre de lignes mises à jour, une valeur de -1 indique une erreur</returns> public int UpdateObservationPoint(LieuObservationModel a_observationPoint) { int modifiedLineNumber = 0; try { using (SQLiteConnection connection = new SQLiteConnection(ConnectionString)) { connection.CreateTable <LieuObservationModel>(); LieuObservationModel foundItem = connection.Table <LieuObservationModel>().Where(i => i.ID == a_observationPoint.ID).FirstOrDefault(); if (foundItem == null) { modifiedLineNumber += connection.Insert(a_observationPoint); // Insertion (1ère utilisation)... } else { modifiedLineNumber += connection.Update(a_observationPoint); // ...ou mise à jour (utilisations ultérieures) } } } catch (Exception) { // On renvoit un nombre < 0 pour indiquer qu'il y a une erreur, c'est le code amont qui gérera cette erreur modifiedLineNumber = -1; } return(modifiedLineNumber); }
/// <summary> /// Insère ou met à jour les lieux d'observation définis par l'utilisateur /// </summary> /// <param name="a_observationsPoints">Collection d'objets LieuObservationModel représentant les lieux d'observation</param> /// <returns>Nombre de lignes insérées ou mises à jour, une valeur de -1 indique une erreur</returns> public int UpdateObservationPoints(List <LieuObservationModel> a_observationsPoints) { int modifiedLineNumber = 0; try { using (SQLiteConnection connection = new SQLiteConnection(ConnectionString)) { connection.CreateTable <LieuObservationModel>(); foreach (LieuObservationModel item in a_observationsPoints.Where(lo => lo.LieuObservation.NomLieuObservation != "Géolocalisation").ToList()) { LieuObservationModel foundItem = connection.Table <LieuObservationModel>().Where(i => i.ID == item.ID).FirstOrDefault(); if (foundItem == null) { modifiedLineNumber += connection.Insert(item); // Insertion (1ère utilisation)... } else { if (foundItem.NomLieuObservation != item.NomLieuObservation || foundItem.Longitude != item.Longitude || foundItem.Latitude != item.Latitude || foundItem.Altitude != item.Altitude || foundItem.LieuSelectionne != item.LieuSelectionne) { modifiedLineNumber += connection.Update(item); // ...ou mise à jour (utilisations ultérieures) } } } } } catch (Exception) { // On renvoit un nombre < 0 pour indiquer qu'il y a une erreur, c'est le code amont qui gérera cette erreur modifiedLineNumber = -1; } return(modifiedLineNumber); }
// Méthode permettant de gérer la sélection du contrôle Picker de sélection du lieu d'observation private void ObservationPointsPicker_SelectedIndexChanged(object sender, EventArgs e) { Picker control = (Picker)sender; LieuObservationModel selectedItem = (LieuObservationModel)control.SelectedItem; if (selectedItem != null) { App.ObservationPointsViewModel.LieuObservationSelectionne = selectedItem; App.DataProvider.UpdateObservationPoints(App.ObservationPointsViewModel.ListeLieuxObservation.ToList()); } }
// Méthode permettant de récupérer le lieu d'observation existant et de l'afficher private void Picker_SelectedIndexChanged(object sender, EventArgs e) { LieuObservationModel selectedItem = (LieuObservationModel)((Picker)sender).SelectedItem; App.ObservationPointsViewModel.LieuObservationEnCoursDeDefinition = selectedItem; }