using Model.Classes; using Microsoft.VisualBasic; using Model.Serializer; using Model.Stub; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; using System.Resources; using System.Text; using System.Threading.Tasks; namespace Model.Managers { public class Manager { public IDataManager DataManager { get; set; } public ObservableCollection Bateaux { get; set; } public ObservableCollection Personnages { get; set; } public ObservableCollection Fruits { get; set; } public ObservableCollection Iles { get; set; } public ObservableCollection Bestiaire { get; set; } public ObservableCollection Equipages { get; set; } public ObjetOhara? SelectedItem { get; set; } = null; 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()); } public List GetPersonnages() { return DataManager.GetPersonnages().ToList(); } public List GetFruits() { return DataManager.GetFruits().ToList(); } public List GetEquipages() { return DataManager.GetEquipages().ToList(); } public List GetBateaux() { return DataManager.GetBateaux().ToList(); } public List GetBestiaires() { return DataManager.GetBestiaires().ToList(); } public List GetIles() { return DataManager.GetIles().ToList(); } public List FiltrerFDD(string type) { List fdd = new List(); fdd=Fruits.Where(p=>p.Type==type).ToList(); return fdd; } public List FiltrerBateau(string nom) { List bateau = new List(); bateau = Bateaux.Where(p => p.Affiliation?.Nom == nom).ToList(); return bateau; } public List FiltrerIle(string region) { List ile = new List(); ile = Iles.Where(p => p.Region == region).ToList(); return ile; } public List RechercheObjetOhara(string text, List liste) { if (text == "") { return liste; } foreach (ObjetOhara f in liste.ToList()) { bool correspondance = false; int textPos = 0; for (int i = 0; i < (f.Nom?.Length); i++) { if (string.Equals(text[textPos].ToString(), f.Nom[i].ToString(), StringComparison.OrdinalIgnoreCase)) { textPos++; } if (textPos == text.Length) { correspondance = true; break; } } if (!correspondance) { liste.Remove(f); } } return liste; } 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); foreach(ObjetOhara obj in listeFavoris.ToList()) { if (obj.EstFavori == false) { listeFavoris.Remove(obj); } } return listeFavoris; } public void ModifierFavFDD(FruitDuDemon fruit, bool value) { FruitDuDemon? fruitToUpdate = Fruits.FirstOrDefault(b => b.Equals(fruit)); if (fruitToUpdate != null) { fruitToUpdate.EstFavori = value; DataManager.SetFDD(Fruits.ToList()); } } public void ModifierFavEquip(Equipage equip, bool value) { Equipage? equipToUpdate = Equipages.FirstOrDefault(e => e.Equals(equip)); if (equipToUpdate != null) { equipToUpdate.EstFavori = value; DataManager.SetEquipage(Equipages.ToList()); } } public void ModifierFavBest(Bestiaire best, bool value) { Bestiaire? bestToUpdate = Bestiaire.FirstOrDefault(b => b.Equals(best)); if (bestToUpdate != null) { bestToUpdate.EstFavori = value; DataManager.SetBestiaire(Bestiaire.ToList()); } } public void ModifierFavPerso(Personnage perso, bool value) { Personnage? persoToUpdate = Personnages.FirstOrDefault(p => p.Equals(perso)); if (persoToUpdate != null) { persoToUpdate.EstFavori = value; DataManager.SetPersonnage(Personnages.ToList()); } } public void ModifierFavIle(Ile ile, bool value) { Ile? ileToUpdate = Iles.FirstOrDefault(i => i.Equals(ile)); if (ileToUpdate != null) { ileToUpdate.EstFavori = value; DataManager.SetIle(Iles.ToList()); } } public void ModifierFavBateau(Bateau bateau, bool value) { Bateau? bateauToUpdate = Bateaux.FirstOrDefault(b => b.Equals(bateau)); if (bateauToUpdate != null) { bateauToUpdate.EstFavori = value; DataManager.SetBateau(Bateaux.ToList()); } } public void AjouterFDD(FruitDuDemon fruit) { Fruits.Add(fruit); DataManager.SetFDD(Fruits.ToList()); } public void AjouterEquip(Equipage equip) { Equipages.Add(equip); DataManager.SetEquipage(Equipages.ToList()); } public void AjouterBest(Bestiaire best) { Bestiaire.Add(best); DataManager.SetBestiaire(Bestiaire.ToList()); } public void AjouterPerso(Personnage perso) { Personnages.Add(perso); DataManager.SetPersonnage(Personnages.ToList()); } public void AjouterIle(Ile ile) { Iles.Add(ile); DataManager.SetIle(Iles.ToList()); } public void AjouterBateau(Bateau bateau) { Bateaux.Add(bateau); DataManager.SetBateau(Bateaux.ToList()); } public void SupprimerFDD(FruitDuDemon fruit) { Fruits.Remove(fruit); DataManager.SetFDD(Fruits.ToList()); } public void SupprimerEquip(Equipage equip) { Equipages.Remove(equip); DataManager.SetEquipage(Equipages.ToList()); } public void SupprimerBest(Bestiaire best) { Bestiaire.Remove(best); DataManager.SetBestiaire(Bestiaire.ToList()); } public void SupprimerPerso(Personnage perso) { Personnages.Remove(perso); DataManager.SetPersonnage(Personnages.ToList()); } public void SupprimerIle(Ile ile) { Iles.Remove(ile); DataManager.SetIle(Iles.ToList()); } public void SupprimerBateau(Bateau bateau) { Bateaux.Remove(bateau); DataManager.SetBateau(Bateaux.ToList()); } public void ModifierIle(Ile ile, string ancienNom) { Ile? ancienneIle = Iles.FirstOrDefault(p => p.Nom == ancienNom); if(ancienneIle !=null) { Iles.Remove(ancienneIle); Iles.Add(ile); DataManager.SetIle(Iles.ToList()); } } public void ModifierBest(Bestiaire best, string ancienNom) { Bestiaire? ancienBest = Bestiaire.FirstOrDefault(p => p.Nom == ancienNom); if (ancienBest == null) return; Bestiaire.Remove(ancienBest); Bestiaire.Add(best); DataManager.SetBestiaire(Bestiaire.ToList()); } public void ModifierEquipage(Equipage equip, string ancienNom) { Equipage? ancienEquip = Equipages.FirstOrDefault(p => p.Nom == ancienNom); if (ancienEquip == null) return; Equipages.Remove(ancienEquip); Equipages.Add(equip); DataManager.SetEquipage(Equipages.ToList()); } public void ModifierBateau(Bateau bateau, string ancienNom) { Bateau? ancienBateau = Bateaux.FirstOrDefault(p => p.Nom == ancienNom); if (ancienBateau == null) return; Bateaux.Remove(ancienBateau); Bateaux.Add(bateau); DataManager.SetBateau(Bateaux.ToList()); } public void ModifierFDD(FruitDuDemon fruit, string ancienNom) { FruitDuDemon? ancienFDD = Fruits.FirstOrDefault(p => p.Nom == ancienNom); if (ancienFDD == null) return; Fruits.Remove(ancienFDD); Fruits.Add(fruit); DataManager.SetFDD(Fruits.ToList()); } public void ModifierPerso(Personnage perso, string ancienNom) { Personnage? ancienPerso = Personnages.FirstOrDefault(p => p.Nom == ancienNom); if (ancienPerso == null) return; Personnages.Remove(ancienPerso); Personnages.Add(perso); DataManager.SetPersonnage(Personnages.ToList()); } } }