diff --git a/.drone.yml b/.drone.yml index 1cbf34b..bfdd95b 100644 --- a/.drone.yml +++ b/.drone.yml @@ -30,7 +30,7 @@ steps: sonar_token: from_secret: SECRET_SONAR_LOGIN project_key: Ohara - coverage_exclusions: "Tests/**" + coverage_exclusions: Tests/**,Ohara/** commands: - cd Sources/ - dotnet restore Ohara.sln diff --git a/Sources/Model/Classes/Equipage.cs b/Sources/Model/Classes/Equipage.cs index ef7f611..e7b6fbd 100644 --- a/Sources/Model/Classes/Equipage.cs +++ b/Sources/Model/Classes/Equipage.cs @@ -132,7 +132,7 @@ namespace Model.Classes } if (premierChap < 0) { - premierChap = 0; + PremierChap = 0; } else { diff --git a/Sources/Model/Classes/Personnage.cs b/Sources/Model/Classes/Personnage.cs index 594c7f0..564de80 100644 --- a/Sources/Model/Classes/Personnage.cs +++ b/Sources/Model/Classes/Personnage.cs @@ -158,7 +158,7 @@ namespace Model.Classes public override int GetHashCode() { - return HashCode.Combine(Prime, Epithete, Age, Origine,Biographie, Citation,Equipage,Fruit); + return HashCode.Combine(Prime, Epithete, Age, Taille, Origine,Biographie, Citation,Equipage); } public override string ToString() diff --git a/Sources/Model/Managers/IDataManager.cs b/Sources/Model/Managers/IDataManager.cs index 564ca42..7d36e67 100644 --- a/Sources/Model/Managers/IDataManager.cs +++ b/Sources/Model/Managers/IDataManager.cs @@ -9,12 +9,12 @@ namespace Model.Managers { public interface IDataManager { - IEnumerable GetBateaux(); - IEnumerable GetBestiaires(); - IEnumerable GetEquipages(); - IEnumerable GetFruits(); - IEnumerable GetIles(); - IEnumerable GetPersonnages(); + IEnumerable? GetBateaux(); + IEnumerable? GetBestiaires(); + IEnumerable? GetEquipages(); + IEnumerable? GetFruits(); + IEnumerable? GetIles(); + IEnumerable? GetPersonnages(); void SetBateau(List listeBateaux); void SetBestiaire(List listeBest); void SetEquipage(List listeEquip); diff --git a/Sources/Model/Managers/Manager.cs b/Sources/Model/Managers/Manager.cs index b8c7d22..d28ebfb 100644 --- a/Sources/Model/Managers/Manager.cs +++ b/Sources/Model/Managers/Manager.cs @@ -63,49 +63,62 @@ namespace Model.Managers public Manager(IDataManager dataManager) { DataManager = dataManager; - Bateaux = new ObservableCollection(DataManager.GetBateaux()); - Personnages = new ObservableCollection(DataManager.GetPersonnages()); - Fruits = new ObservableCollection(DataManager.GetFruits()); - Iles = new ObservableCollection(DataManager.GetIles()); - Bestiaire = new ObservableCollection(DataManager.GetBestiaires()); - Equipages = new ObservableCollection(DataManager.GetEquipages()); + var bateaux = DataManager.GetBateaux(); + Bateaux = bateaux != null ? new ObservableCollection(bateaux) : new ObservableCollection(); + var personnages = DataManager.GetPersonnages(); + Personnages = personnages != null ? new ObservableCollection(personnages) : new ObservableCollection(); + var fruits = DataManager.GetFruits(); + Fruits = fruits != null ? new ObservableCollection(fruits) : new ObservableCollection(); + var iles = DataManager.GetIles(); + Iles = iles != null ? new ObservableCollection(iles) : new ObservableCollection(); + var bests = DataManager.GetBestiaires(); + Bestiaire = bests != null ? new ObservableCollection(bests) : new ObservableCollection(); + var equipages = DataManager.GetEquipages(); + Equipages = equipages != null ? new ObservableCollection(equipages) : new ObservableCollection(); } + /// \brief Récupère la liste des personnages. /// \return La liste des personnages. public List GetPersonnages() { - return DataManager.GetPersonnages().ToList(); + var personnages = DataManager.GetPersonnages(); + return personnages != null ? personnages.ToList() : new List(); } /// \brief Récupère la liste des fruits du démon. /// \return La liste des fruits du démon. public List GetFruits() { - return DataManager.GetFruits().ToList(); + var fruits = DataManager.GetFruits(); + return fruits != null ? fruits.ToList() : new List(); } /// \brief Récupère la liste des équipages. /// \return La liste des équipages. public List GetEquipages() { - return DataManager.GetEquipages().ToList(); + var equipages = DataManager.GetEquipages(); + return equipages != null ? equipages.ToList() : new List(); } /// \brief Récupère la liste des bateaux. /// \return La liste des bateaux. public List GetBateaux() { - return DataManager.GetBateaux().ToList(); + var bateaux = DataManager.GetBateaux(); + return bateaux != null ? bateaux.ToList() : new List(); } /// \brief Récupère la liste des bestiaires. /// \return La liste des bestiaires. public List GetBestiaires() { - return DataManager.GetBestiaires().ToList(); + var bestiaires = DataManager.GetBestiaires(); + return bestiaires != null ? bestiaires.ToList() : new List(); } /// \brief Récupère la liste des îles. /// \return La liste des îles. public List GetIles() { - return DataManager.GetIles().ToList(); + var iles = DataManager.GetIles(); + return iles != null ? iles.ToList() : new List(); } /// \brief Filtre les fruits du démon par type. @@ -113,17 +126,15 @@ namespace Model.Managers /// \return La liste filtrée des fruits du démon. public List FiltrerFDD(string type) { - List fdd = new List(); - fdd=Fruits.Where(p=>p.Type==type).ToList(); + List fdd =Fruits.Where(p=>p.Type==type).ToList(); return fdd; } /// \brief Filtre les bateaux par nom d'affiliation. /// \param nom Le nom de l'équipage affilié au(x) bateau(x). /// \return La liste filtrée des bateaux. public List FiltrerBateau(string nom) - { - List bateau = new List(); - bateau = Bateaux.Where(p => p.Affiliation?.Nom == nom).ToList(); + { + List bateau = Bateaux.Where(p => p.Affiliation?.Nom == nom).ToList(); return bateau; } /// \brief Filtre les îles par région. @@ -131,8 +142,7 @@ namespace Model.Managers /// \return La liste filtrée des îles. public List FiltrerIle(string region) { - List ile = new List(); - ile = Iles.Where(p => p.Region == region).ToList(); + List ile = Iles.Where(p => p.Region == region).ToList(); return ile; } /// \brief Recherche les objets Ohara correspondant au texte donné. @@ -171,15 +181,15 @@ namespace Model.Managers } /// \brief Récupère la liste des objets Ohara ayant le parametre EstFavori égal a true. /// \return La liste des objets Ohara ayant le parametre EstFavori égal a true. - public List GetFavoris() - { - List listeFavoris = new List(); - listeFavoris.AddRange(Bateaux); - listeFavoris.AddRange(Equipages); - listeFavoris.AddRange(Bestiaire); - listeFavoris.AddRange(Fruits); - listeFavoris.AddRange(Iles); - listeFavoris.AddRange(Personnages); + public HashSet GetFavoris() + { + HashSet listeFavoris = new HashSet(); + listeFavoris.UnionWith(Bateaux); + listeFavoris.UnionWith(Equipages); + listeFavoris.UnionWith(Bestiaire); + listeFavoris.UnionWith(Fruits); + listeFavoris.UnionWith(Iles); + listeFavoris.UnionWith(Personnages); foreach(ObjetOhara obj in listeFavoris.ToList()) { if (obj.EstFavori == false) diff --git a/Sources/Model/Serializer/XML_Serializer.cs b/Sources/Model/Serializer/XML_Serializer.cs index 86e4259..69843e8 100644 --- a/Sources/Model/Serializer/XML_Serializer.cs +++ b/Sources/Model/Serializer/XML_Serializer.cs @@ -30,27 +30,39 @@ namespace Model.Serializer { if (!File.Exists(Path.Combine(Chemin, "./personnage.xml"))) { - SetPersonnage(stubManager.GetPersonnages().ToList()); + var personnages = stubManager.GetPersonnages(); + if(personnages!=null) + SetPersonnage(personnages.ToList()); } if (!File.Exists(Path.Combine(Chemin, "./bateau.xml"))) { - SetBateau(stubManager.GetBateaux().ToList()); + var bateaux = stubManager.GetBateaux(); + if(bateaux !=null) + SetBateau(bateaux.ToList()); } if (!File.Exists(Path.Combine(Chemin, "./fruitdudemon.xml"))) { - SetFDD(stubManager.GetFruits().ToList()); + var fruits = stubManager.GetFruits(); + if(fruits!=null) + SetFDD(fruits.ToList()); } if (!File.Exists(Path.Combine(Chemin, "./bestiaire.xml"))) { - SetBestiaire(stubManager.GetBestiaires().ToList()); + var bestiaires= stubManager.GetBestiaires(); + if(bestiaires!=null) + SetBestiaire(bestiaires.ToList()); } if (!File.Exists(Path.Combine(Chemin, "./equipage.xml"))) { - SetEquipage(stubManager.GetEquipages().ToList()); + var equipages= stubManager.GetEquipages(); + if(equipages!=null) + SetEquipage(equipages.ToList()); } if (!File.Exists(Path.Combine(Chemin, "./ile.xml"))) { - SetIle(stubManager.GetIles().ToList()); + var iles = stubManager.GetIles(); + if(iles!=null) + SetIle(iles.ToList()); } } @@ -143,7 +155,7 @@ namespace Model.Serializer } } - public void SetBateau(List listeBateau) + public void SetBateau(List listeBateaux) { var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "bateau.xml"; @@ -155,92 +167,80 @@ namespace Model.Serializer using (XmlWriter writer = XmlWriter.Create(tw, settings)) { - serializer.WriteObject(writer, listeBateau); + serializer.WriteObject(writer, listeBateaux); } } } - public IEnumerable GetBateaux() + public IEnumerable? GetBateaux() { - List? listeBateau = new List(); + var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "bateau.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); - using (Stream s = File.OpenRead(xmlFile)) { - listeBateau = serializer.ReadObject(s) as List; - } - - - return listeBateau; - + return serializer.ReadObject(s) as List; + } } - public IEnumerable GetBestiaires() + public IEnumerable? GetBestiaires() { - List? listeBest = new List(); + var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "bestiaire.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); using (Stream s = File.OpenRead(xmlFile)) { - listeBest = serializer.ReadObject(s) as List; + return serializer.ReadObject(s) as List; } - return listeBest; + } - public IEnumerable GetEquipages() - { - List? listeEquip = new List(); + public IEnumerable? GetEquipages() + { var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "equipage.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); using (Stream s = File.OpenRead(xmlFile)) { - listeEquip = serializer.ReadObject(s) as List; + return serializer.ReadObject(s) as List; } - return listeEquip; + } - public IEnumerable GetFruits() + public IEnumerable? GetFruits() { - List? listeFDD = new List(); var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "fruitdudemon.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); using (Stream s = File.OpenRead(xmlFile)) { - listeFDD = serializer.ReadObject(s) as List; + return serializer.ReadObject(s) as List; } - return listeFDD; } - public IEnumerable GetIles() + public IEnumerable? GetIles() { - List? listeIle = new List(); var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "ile.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); using (Stream s = File.OpenRead(xmlFile)) { - listeIle = serializer.ReadObject(s) as List; - } - return listeIle; + return serializer.ReadObject(s) as List; + } } - public IEnumerable GetPersonnages() + public IEnumerable? GetPersonnages() { - List? listePerso = new List(); var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "personnage.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); - + using (Stream s = File.OpenRead(xmlFile)) { - listePerso = serializer.ReadObject(s) as List; + return serializer.ReadObject(s) as List; } - return listePerso; } } } diff --git a/Sources/Model/Stub/StubManager.cs b/Sources/Model/Stub/StubManager.cs index dd054b0..150f798 100644 --- a/Sources/Model/Stub/StubManager.cs +++ b/Sources/Model/Stub/StubManager.cs @@ -30,31 +30,31 @@ namespace Model.Stub } - public IEnumerable GetPersonnages() + public IEnumerable? GetPersonnages() { return StubPersonnage.RecupererPersonnage(); } - public IEnumerable GetFruits() + public IEnumerable? GetFruits() { return StubFruitDuDemon.RecupererFruit(); } - public IEnumerable GetEquipages() + public IEnumerable? GetEquipages() { StubEquipage.ChargerEquipage(StubPersonnage.RecupererPersonnage().ToList()); return StubEquipage.RecupererEquipage(); } - public IEnumerable GetBateaux() + public IEnumerable? GetBateaux() { return StubBateau.RecupererBateau(); } - public IEnumerable GetBestiaires() + public IEnumerable? GetBestiaires() { return StubBestiaire.RecupererBestiaire(); } - public IEnumerable GetIles() + public IEnumerable? GetIles() { return StubIle.RecupererIle(); } diff --git a/Sources/Ohara.sln b/Sources/Ohara.sln index 25fd92f..b473946 100644 --- a/Sources/Ohara.sln +++ b/Sources/Ohara.sln @@ -12,6 +12,7 @@ EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestProject1", "TestProject1\TestProject1.csproj", "{4AD3B218-1007-4859-BC93-2B3E957632E0}" ProjectSection(ProjectDependencies) = postProject {A0307D66-E621-4BC1-A239-87C9021E7CFD} = {A0307D66-E621-4BC1-A239-87C9021E7CFD} + {EEC24A76-0EB3-4C67-A71B-7FF823713645} = {EEC24A76-0EB3-4C67-A71B-7FF823713645} EndProjectSection EndProject Global diff --git a/Sources/Ohara/AppShell.xaml.cs b/Sources/Ohara/AppShell.xaml.cs index 250878a..85d2bde 100644 --- a/Sources/Ohara/AppShell.xaml.cs +++ b/Sources/Ohara/AppShell.xaml.cs @@ -4,10 +4,9 @@ using Model; public partial class AppShell : Shell { - public AppShell() { InitializeComponent(); - - } + + } } diff --git a/Sources/Ohara/Converters/Int2ColorConverter.cs b/Sources/Ohara/Converters/Int2ColorConverter.cs new file mode 100644 index 0000000..bb3f5b4 --- /dev/null +++ b/Sources/Ohara/Converters/Int2ColorConverter.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Ohara.Converters +{ + public class Int2ColorConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is not int) return Colors.Red; + switch (value) + { + case < 0: + return Colors.Orange; + case >0: + return Colors.Green; + default: + return Colors.White; + } + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } +} diff --git a/Sources/Ohara/ModalBateau.xaml b/Sources/Ohara/ModalBateau.xaml index b60df87..237f75c 100644 --- a/Sources/Ohara/ModalBateau.xaml +++ b/Sources/Ohara/ModalBateau.xaml @@ -2,9 +2,13 @@ + + + @@ -24,13 +28,13 @@ - - diff --git a/Sources/Ohara/ModalBateau.xaml.cs b/Sources/Ohara/ModalBateau.xaml.cs index 6b09d8e..d48bdcd 100644 --- a/Sources/Ohara/ModalBateau.xaml.cs +++ b/Sources/Ohara/ModalBateau.xaml.cs @@ -1,3 +1,4 @@ + using Model.Classes; using Model.Managers; @@ -27,12 +28,23 @@ public partial class ModalBateau : ContentPage { if (manager.SelectedItem != null) { + if (nouveauBateau.PremierChap < 0 || nouveauBateau.PremierEp < 0) + { + await DisplayAlert("Erreur", "Les paramètres PremierChap et PremierEp doivent être superieur à 0.", "OK"); + return; + } manager.ModifierBateau(nouveauBateau, ancienNom); nouveauBateau = manager.SelectedItem as Bateau; } else { + if (nouveauBateau.PremierChap<0 || nouveauBateau.PremierEp < 0) + { + await DisplayAlert("Erreur", "Les paramètres PremierChap et PremierEp doivent être superieur à 0.", "OK"); + return; + } manager.AjouterBateau(nouveauBateau); + } await Navigation.PopModalAsync(); diff --git a/Sources/Ohara/ModalEquipage.xaml b/Sources/Ohara/ModalEquipage.xaml index 4866043..ef5b200 100644 --- a/Sources/Ohara/ModalEquipage.xaml +++ b/Sources/Ohara/ModalEquipage.xaml @@ -2,9 +2,13 @@ + + + @@ -36,13 +40,13 @@ - - diff --git a/Sources/Ohara/ModalEquipage.xaml.cs b/Sources/Ohara/ModalEquipage.xaml.cs index a50c0d1..2e7256e 100644 --- a/Sources/Ohara/ModalEquipage.xaml.cs +++ b/Sources/Ohara/ModalEquipage.xaml.cs @@ -30,11 +30,21 @@ public partial class ModalEquipage : ContentPage { if (manager.SelectedItem != null) { + if (nouvelEquipage.PremierChap < 0 || nouvelEquipage.PremierEp < 0) + { + await DisplayAlert("Erreur", "Les paramètres PremierChap et PremierEp doivent être superieur à 0.", "OK"); + return; + } manager.ModifierEquipage(nouvelEquipage, ancienNom); nouvelEquipage = manager.SelectedItem as Equipage; } else { + if (nouvelEquipage.PremierChap < 0 || nouvelEquipage.PremierEp < 0) + { + await DisplayAlert("Erreur", "Les paramètres PremierChap et PremierEp doivent être superieur à 0.", "OK"); + return; + } manager.AjouterEquip(nouvelEquipage); } diff --git a/Sources/Ohara/ModalIle.xaml b/Sources/Ohara/ModalIle.xaml index 91c8a4d..d94a965 100644 --- a/Sources/Ohara/ModalIle.xaml +++ b/Sources/Ohara/ModalIle.xaml @@ -2,9 +2,13 @@ + + + @@ -36,13 +40,13 @@ - - diff --git a/Sources/Ohara/ModalIle.xaml.cs b/Sources/Ohara/ModalIle.xaml.cs index 16292d3..2959dd4 100644 --- a/Sources/Ohara/ModalIle.xaml.cs +++ b/Sources/Ohara/ModalIle.xaml.cs @@ -29,11 +29,21 @@ public partial class ModalIle : ContentPage { if (manager.SelectedItem != null) { + if (nouvelIle.PremierChap < 0 || nouvelIle.PremierEp < 0) + { + await DisplayAlert("Erreur", "Les paramètres PremierChap et PremierEp doivent être superieur à 0.", "OK"); + return; + } manager.ModifierIle(nouvelIle,ancienNom); manager.SelectedItem=nouvelIle; } else { + if (nouvelIle.PremierChap < 0 || nouvelIle.PremierEp < 0) + { + await DisplayAlert("Erreur", "Les paramètres PremierChap et PremierEp doivent être superieur à 0.", "OK"); + return; + } manager.AjouterIle(nouvelIle); } diff --git a/Sources/Ohara/PageBateau.xaml b/Sources/Ohara/PageBateau.xaml index 79c569e..e9a9bb7 100644 --- a/Sources/Ohara/PageBateau.xaml +++ b/Sources/Ohara/PageBateau.xaml @@ -8,7 +8,7 @@ BackgroundColor="#e2edf1"> - +