using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;

namespace LOLAPP.Modele
{
    public class Manager 
    {
        public List<Champion> _champions { get;  set; }
        public List<Strategie> _strategies { get;  set; }
        public List<Utilisateur> _utilisateur { get; set; }
        public IPersistanceManager Persistance { get; set; }

        public Manager(IPersistanceManager Pers)
        {
            _champions = new List<Champion>();
            _strategies = new List<Strategie>();
            _utilisateur = new List<Utilisateur>();
            Persistance = Pers;
        }
        public Manager()
        {
            _champions = new List<Champion>();
            _strategies = new List<Strategie>();
            _utilisateur = new List<Utilisateur>();
        }

        public void AddChampion(Champion champion)
        {
            _champions.Add(champion);
        }

        public void RemoveChampion(Champion champion)
        {
            _champions.Remove(champion);
        }

        public List<Champion> GetAllChampions()
        {
            return _champions;
        }



        public void AddAbility(Champion champion, string abilityName)
        {
            var ability = new Ability(abilityName);
            champion.Abilities.Add(ability);
        }

        public void RemoveAbility(Champion champion, string abilityName)
        {
            var ability = champion.Abilities.FirstOrDefault(a => a.Name == abilityName);
            if (ability != null)
            {
                champion.Abilities.Remove(ability);
            }
        }



        public void AddStrategie(Strategie strategie)
        {
            _strategies.Add(strategie);
        }

        public void RemoveStrategie(Strategie strategie)
        {
            _strategies.Remove(strategie);
        }

        public List<Strategie> GetAllStrategies()
        {
            return _strategies;
        }


        public void AddUtilisateur(Utilisateur utilisateur)
        {
            _utilisateur.Add(utilisateur);
        }

        public void RemoveUtilisateur(Utilisateur utilisateur)
        {
            _utilisateur.Remove(utilisateur);
        }



        public void Chargdon() { 
        
            var don = Persistance.Chargdon();
            foreach (var i in don.Item1)
            {
                AddUtilisateur(i);
            }

            foreach (var j in don.Item2)
            {
                AddChampion(j);
            }
            
        }
        public void Sauvdon()
        {
            Persistance.Sauvdon(_utilisateur, _champions);
        }
    }
}