import java.util.ArrayList;
import java.util.Scanner;


public class Personne 
{
	protected String nom;
	protected String prenom;
	protected String Sexe;
	protected String dateNaissance;
	protected String lieuNaissance;
	protected String email;
	protected String mdp;
	protected ArrayList<ParcoursScolaire> parcoursSco;
	protected ArrayList<ParcoursProfessionnel> parcoursPro;
	
	protected ArrayList<Personne> demandeur = new ArrayList<Personne>();
	protected ArrayList<Personne> amis = new ArrayList<Personne>();
	protected ArrayList<Personne> ajoutAmis = new ArrayList<Personne>();
	protected ArrayList<LienAmitie> la = new ArrayList<LienAmitie>();
	
	
	public Personne(String nom, String prenom, String sexe,
			String dateNaissance, String lieuNaissance, String email, String mdp,ArrayList<ParcoursScolaire> parcoursSco,ArrayList<ParcoursProfessionnel> parcoursPro) {
		this.nom = nom;
		this.prenom = prenom;
		Sexe = sexe;
		this.dateNaissance = dateNaissance;
		this.lieuNaissance = lieuNaissance;
		this.email = email;
		this.mdp = mdp;
		this.parcoursPro=parcoursPro;
		this.parcoursSco=parcoursSco;
	}


	public String getNom() {
		return nom;
	}


	public String getPrenom() {
		return prenom;
	}


	
	
	public void proposerNouvelAmis(Personne p)
	{
		if(demandeur.contains(p))
		{
			System.out.println("Une demande d'ajout en amis a déja été effectuer avec cette personne");
		}
		else
		{
			demandeur.add(p);
			la.add(new LienAmitie(p,0,"unidirectionnel"));
		}
	}
	
	public void accepterAmisProposer(Personne p)
	{
		if(demandeur.contains(p) == false)
		{
			System.out.println("Il faut d'abord envoyer une demande d'ajout en amis à la personne concernée");
		}
		else
		{
			Scanner sc = new Scanner(System.in);
			System.out.println("Veuillez entrer le degres d'amitier avec cette personne ( entre 0 et 10 ) :");
			int str = sc.nextInt();
			
			for(int i = 0; i< la.size(); i++)
			{
				if(p.equals(la.get(i).getPers()))
				{
					la.get(i).setDegres(str);
					la.get(i).setStatut("biderectionnel");
				}
			}
			
			amis.add(p);
			demandeur.remove(p);
		}
	}
	
	public void refuserDemande(Personne p)
	{
		if(demandeur.contains(p))
		{
			System.out.println("Demande d'amis rejeté");
			demandeur.remove(p);
		}
	}
	
	public void supprimerAmis(Personne p)
	{
		if(amis.contains(p) == false)
		{
			System.out.println(" Vous n'etes pas amis avec cette personne");
		}
		else
		{
			amis.remove(p);
			for(int i = 0;i< la.size();i++)
			{
				if(p.equals(la.get(i).getPers()))
						{
							la.remove(p);
						}
			}
		}
	}
	

	public String afficherListeAjoutAmis()
	{
		String texte = "";
		for(int i = 0 ; i < ajoutAmis.size();i++)
		{
			texte += ajoutAmis.get(i)+" ";
		}
		System.out.println("Liste des demandes d'ajout d'amis : \n"+ texte);
		return texte;
	}
	
	public String afficherListeDemandeur()
	{
		String texte = "";
		for(int i = 0 ; i < demandeur.size();i++)
		{
			texte += demandeur.get(i).getNom();
		}
		System.out.println("Liste des demandeurs d'amis : \n"+ texte);
		return texte;
	}
	
	public String afficherListeAmis()
	{
		String texte = "";
		for(int i = 0 ; i < amis.size();i++)
		{
			texte += amis.get(i).getNom();
		}
		System.out.println("Liste des amis : \n"+ texte);
		return texte;
	}
	
	public void evaluerLiensAmitie(Personne p)
	{
		if(amis.contains(p) == false && demandeur.contains(p) == false)
		{
			System.out.println("Vous n'etes pas amis avec cette personne");
		}
		else
		{
			for(int i = 0;i< la.size();i++)
			{
				if(p.equals(la.get(i).getPers()))
				{
					System.out.println("Degres d'amitié :"+la.get(i).getDegres());
					System.out.println("Statut de la relation :" +la.get(i).getStatut());
				}
			}
		}
	}
	
	public static void main(String[] args)
	{
		 ArrayList<ParcoursScolaire> parSco = new ArrayList<ParcoursScolaire>();
		 ArrayList<ParcoursProfessionnel> parPro = new ArrayList<ParcoursProfessionnel>();
		
		Personne p1 = new Personne("b","b","b","b","b","b","b",parSco,parPro);
		Personne p2 = new Personne("c","c","c","c","c","c","c",parSco,parPro);
		
		p1.proposerNouvelAmis(p2);
		p1.evaluerLiensAmitie(p2);
		p1.accepterAmisProposer(p2);
		p1.afficherListeAmis();
		p1.afficherListeDemandeur();
		p1.evaluerLiensAmitie(p2);
		p1.supprimerAmis(p2);
		p1.afficherListeAmis();
	}


	public ArrayList<ParcoursScolaire> getParcoursSco() {
		return parcoursSco;
	}


	public void setParcoursSco(ArrayList<ParcoursScolaire> parcoursSco) {
		this.parcoursSco = parcoursSco;
	}


	public ArrayList<ParcoursProfessionnel> getParcoursPro() {
		return parcoursPro;
	}


	public void setParcoursPro(ArrayList<ParcoursProfessionnel> parcoursPro) {
		this.parcoursPro = parcoursPro;
	}
	

}
