using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using ProjetDotNet.metier;
using ProjetDotNet.web;
using Newtonsoft.Json;
using ProjetDotNet.COR;

namespace ProjetDotNet.DAO
{
     public class DAOGroupeMySQL:DAOFormeMySQL
    {
         /*public Groupe charge(int id)

         {
             SingletonConnexion connexion = null;
             connexion = SingletonConnexion.getInstance();

             CORChargerTriangle maillonTriangle = new CORChargerTriangle();
             CORChargerSegment maillonSegment = new CORChargerSegment();
             CORChargerRect maillonRect = new CORChargerRect();
             CORChargerPolygone maillonPolygone = new CORChargerPolygone();

             maillonTriangle.SetSuccessor(maillonSegment);
             maillonSegment.SetSuccessor(maillonRect);
             maillonRect.SetSuccessor(maillonPolygone);


             RequeteHTTP httpRequest = new RequeteHTTP("http://127.0.0.1/test/chargerGroupe.php", id.ToString());

             string infos = httpRequest.LancerHTTPRequest();
             string[] tab=infos.Split('/');

             //on récupère les éléments soit: le nom du groupe et la liste des id des formes qui le composent
             string nomGroupe = tab[0];
             string idForme = tab[1];

             // on enlève les crochets
             idForme = idForme.Replace("[",string.Empty);
             idForme = idForme.Replace("]", string.Empty);
             idForme = idForme.Replace("\"", string.Empty);
             

             //on sépare chaque id des formes 
             string[] tabId = idForme.Split(','); 

             //création d'une liste de forme
             List<Forme> listeForme = new List<Forme>();

             

             Console.WriteLine(nomGroupe);
             foreach(string idTemp in tabId)
             {
                 Console.WriteLine(idTemp);
                 int idChiffre = int.Parse(idTemp);
                 listeForme.Add(maillonTriangle.charge(idChiffre));

             }

             Groupe g = new Groupe(nomGroupe, listeForme);

             return g;

         }*/
         public string nettoyage(string texte)
         {
             texte = texte.Replace("[", string.Empty);
             texte = texte.Replace("]", string.Empty);
             texte = texte.Replace("\"", string.Empty);

             return texte;
         }
         public Groupe charge(int id, string nomGroupeDonne)
         {
             SingletonConnexion connexion = null;
             connexion = SingletonConnexion.getInstance();

             CORChargerTriangle maillonTriangle = new CORChargerTriangle();
             CORChargerSegment maillonSegment = new CORChargerSegment();
             CORChargerRectangle maillonRect = new CORChargerRectangle();
             CORChargerPolygone maillonPolygone = new CORChargerPolygone();
             CORChargerGroupe maillonGroupe = new CORChargerGroupe();

             maillonTriangle.SetSuccessor(maillonSegment);
             maillonSegment.SetSuccessor(maillonRect);
             maillonRect.SetSuccessor(maillonPolygone);
             maillonPolygone.SetSuccessor(maillonGroupe);


             RequeteHTTP httpRequest = new RequeteHTTP("http://localhost/test/chargerGroupe.php", id.ToString(),nomGroupeDonne);

             string infos = httpRequest.LancerHTTPRequest();
             string[] tab = infos.Split('/');

             //on récupère les éléments soit: le nom du groupe et la liste des id des formes qui le composent
             string nomGroupe = tab[0];
             string idForme = tab[1];
             string nomForme = tab[2];
             string idGroupes = tab[3];
             string nomGroupes = tab[4];

             // on enlève les crochets
             idForme=nettoyage(idForme);
             nomForme=nettoyage(nomForme);
             idGroupes=nettoyage(idGroupes);
             nomGroupes=nettoyage(nomGroupes);

             //on sépare chaque id des formes 
             string[] tabId = idForme.Split(',');
             string[] tabNom = nomForme.Split(',');
             string[] tabIdGroupe = idGroupes.Split(',');
             string[] tabNomGroupes = nomGroupes.Split(',');

             //création d'une liste de forme
             List<Forme> listeForme = new List<Forme>();



             Console.WriteLine(nomGroupe);
             for(int i=0;i<tabId.Length;i++)
             {
                 Console.WriteLine(tabId[i]);
                 if (tabId[i] == "")
                     return null;
                 int idChiffre = int.Parse(tabId[i]);
                    
                 string nom = tabNom[i];
                 listeForme.Add(maillonTriangle.charge(idChiffre,nom));
             }

             if (tabIdGroupe[0]!="")
             {
                 for (int i = 0; i < tabIdGroupe.Length; i++)
                 {
                     Console.WriteLine(tabId[i]);
                     int idChiffre = int.Parse(tabIdGroupe[i]);
                     string nom = tabNomGroupes[i];
                     listeForme.Add(maillonTriangle.charge(idChiffre, nom));
                 }
             }
             Groupe g = new Groupe(nomGroupe, listeForme);

             return g;

         }

        public  void save(Groupe forme)
        {
            throw new NotImplementedException();
        }
    }
}
