protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        //if (LoginHelper.UserRole(Page.User.Identity.Name) == "admin")
        //{
        //  GridView1.Columns[0].Visible = true;
        //}
        //else
        //{
        //  GridView1.Columns[0].Visible = false;
        //}

        if (Status == 4) //Ordered by class - need to insert headers to indicate the class name
        {
            GridView1.Columns[0].Visible = false;
            GridView1.Columns[GetColumnIndexByHeaderText(GridView1, "Classe")].Visible = false;

            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                EleveWithContacts current = (EleveWithContacts)e.Row.DataItem;

                Table tbl = e.Row.Parent as Table;
                GroupByClass(tbl, current.ClasseActuelle, false);
            }
        }
    }
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        foreach (DictionaryEntry de in e.NewValues)
        {
            DateTime currentDate = DateTime.MinValue;
            if (de.Value != null && DateTime.TryParse(de.Value.ToString(), out currentDate))
            {
                e.NewValues[de.Key] = currentDate.ToString(new CultureInfo("en-US"));
            }
        }

        IDictionary       values  = GetValues(GridView1.Rows[GridView1.EditIndex]);
        EleveWithContacts current = (EleveWithContacts)GridView1.Rows[e.RowIndex].DataItem;
        int inscritcol            = GetColumnIndexByHeaderText(GridView1, "Inscrit");
        int permissioncol         = GetColumnIndexByHeaderText(GridView1, "Problèmes et Permissions");

        int rowindex = e.RowIndex;

        if (GridView1.Columns[1].Visible)
        {
            e.NewValues["ActuellementInscrit"] = IsChecked("ActuellementInscrit", rowindex, 1);
            e.NewValues["PreInscrit"]          = IsChecked("PreInscrit", rowindex, 1);
        }
        else
        {
            e.NewValues["ActuellementInscrit"] = e.OldValues["ActuellementInscrit"];
            e.NewValues["PreInscrit"]          = e.OldValues["PreInscrit"];
        }
        if (GridView1.Columns[8].Visible)
        {
            e.NewValues["PbMedicaux"]   = IsChecked("PbMedicaux", rowindex, 8);
            e.NewValues["PhotosClasse"] = IsChecked("PhotosClasse", rowindex, 8);
            e.NewValues["PhotosWeb"]    = IsChecked("PhotosWeb", rowindex, 8);
            e.NewValues["Gateaux"]      = IsChecked("Gateaux", rowindex, 8);
        }
        else
        {
            e.NewValues["PbMedicaux"]   = e.OldValues["PbMedicaux"];
            e.NewValues["PhotosClasse"] = e.OldValues["PhotosClasse"];
            e.NewValues["PhotosWeb"]    = e.OldValues["PhotosWeb"];
            e.NewValues["Gateaux"]      = e.OldValues["Gateaux"];
        }
    }
    public static List <EleveWithContacts> GetElevesWithContacts(string SortColumns, string Filter)
    {
        //MySqlCommand cmd = new MySqlCommand("ShowAllEleves",
        //               new MySqlConnection(GetConnectionString()));
        //cmd.CommandType = CommandType.StoredProcedure;
        string verifiedsort = VerifySortColumns(SortColumns);

        string filter = Filter;

        string sqlstring = "SELECT *, ct_contacts.nom AS NomContact, ct_contacts.prenom AS PrenomContact, " +
                           "ct_contacts.ActuellementInscrit AS ActuellementInscritContact, classes.Niveau " +
                           "FROM eleves LEFT JOIN ct_contacts ON eleves.contactid = ct_contacts.id LEFT JOIN classes ON eleves.ClasseActuelle = classes.Nom";

        if (!String.IsNullOrEmpty(filter))
        {
            sqlstring += " WHERE " + filter;
        }

        if (verifiedsort.Trim() == "")
        {
            sqlstring += " ORDER BY eleves.Nom";
        }
        else
        {
            sqlstring += " ORDER BY " + verifiedsort;
        }


        MySqlCommand cmd = new MySqlCommand(sqlstring, new MySqlConnection(GetConnectionString()));

        cmd.Connection.Open();
        MySqlDataReader dr =
            cmd.ExecuteReader(CommandBehavior.CloseConnection);

        List <EleveWithContacts> EleveList = new List <EleveWithContacts>();

        while (dr.Read())
        {
            EleveWithContacts contact = new EleveWithContacts();
            contact.Eleve_ID            = Convert.ToInt32(dr["ID"]);
            contact.ActuellementInscrit = MakeBool(dr["ActuellementInscrit"].ToString());
            contact.ContactID           = Convert.ToInt32(dr["ContactID"]);
            contact.AdresseAutreParent  = Convert.ToString(dr["AdresseAutreParent"]);
            contact.ClasseActuelle      = Convert.ToString(dr["ClasseActuelle"]);
            contact.DateNaissance       = String.IsNullOrEmpty(dr["DateNaissance"].ToString()) ? Convert.ToDateTime("01/01/0001") : Convert.ToDateTime(dr["DateNaissance"]); //Convert.ToDateTime(dr["DateNaissance"]);
            contact.DetailsMedicaux     = Convert.ToString(dr["DetailsMedicaux"]);
            contact.Docteur             = Convert.ToString(dr["Docteur"]);
            contact.EmailAutreParent    = Convert.ToString(dr["EmailAutreParent"]);
            contact.FixeAutreParent     = Convert.ToString(dr["FixeAutreParent"]);
            contact.Gateaux             = MakeBool(dr["Gateaux"].ToString());
            contact.Nationalite         = Convert.ToString(dr["Nationalite"]);
            contact.Nom                 = Convert.ToString(dr["Nom"]);
            contact.NomAutreParent      = Convert.ToString(dr["NomAutreParent"]);
            contact.PbMedicaux          = MakeBool(dr["PbMedicaux"].ToString());
            contact.PhotosClasse        = MakeBool(dr["PhotosClasse"].ToString());
            contact.PhotosWeb           = MakeBool(dr["PhotosWeb"].ToString());
            contact.PortableAutreParent = Convert.ToString(dr["PortableAutreParent"]);
            contact.PreInscrit          = MakeBool(dr["PreInscrit"].ToString());
            contact.PremiereRentree     = String.IsNullOrEmpty(dr["PremiereRentree"].ToString()) ? Convert.ToDateTime("01/01/0001") : Convert.ToDateTime(dr["PremiereRentree"]);
            contact.Prenom              = Convert.ToString(dr["Prenom"]);
            contact.PrenomAutreParent   = Convert.ToString(dr["PrenomAutreParent"]);
            contact.RelationAutreParent = Convert.ToString(dr["RelationAutreParent"]);
            contact.Sexe                = Convert.ToString(dr["Sexe"]);

            // Information from Contacts table
            contact.ActuellementInscritContact = MakeBool(dr["ActuellementInscritContact"].ToString());
            contact.Adresse1       = Convert.ToString(dr["Adresse1"]);
            contact.Adresse2       = Convert.ToString(dr["Adresse2"]);
            contact.Adresse3       = Convert.ToString(dr["Adresse3"]);
            contact.CodePostal     = Convert.ToString(dr["Code Postal"]);
            contact.Comite         = MakeBool(dr["Comite"].ToString());
            contact.Email          = Convert.ToString(dr["Email"]);
            contact.Fixe           = Convert.ToString(dr["Fixe"]);
            contact.NePasContacter = MakeBool(dr["NePasContacter"].ToString());
            contact.NomContact     = Convert.ToString(dr["NomContact"]);
            contact.Notes          = Convert.ToString(dr["Notes"]);
            contact.Portable       = Convert.ToString(dr["Portable"]);
            contact.PrenomContact  = Convert.ToString(dr["PrenomContact"]);
            contact.Ville          = Convert.ToString(dr["Ville"]);

            EleveList.Add(contact);
        }
        dr.Close();
        return(EleveList);
    }
    public static void UpdateEleveWithContacts(EleveWithContacts contact)
    {
        string sqlstring = "UPDATE `eleves` SET `ContactID`=?vContactID, `Nom`=?vNom,`Prenom`=?vPrenom,`DateNaissance`=?vDateNaissance,`Nationalite`=?vNationalite,`PremiereRentree`=?vPremiereRentree,`ClasseActuelle`=?vClasseActuelle,`ActuellementInscrit`=?vActuellementInscrit,`PreInscrit`=?vPreInscrit,`Sexe`=?vSexe, " +
                           "RelationAutreParent=?vRelationAutreParent, NomAutreParent=?vNomAutreParent, PrenomAutreParent=?vPrenomAutreParent, AdresseAutreParent=?vAdresseAutreParent, FixeAutreParent=?vFixeAutreParent, PortableAutreParent=?vPortableAutreParent, EmailAutreParent=?vEmailAutreParent, Docteur=?vDocteur, " +
                           "PhotosClasse=?vPhotosClasse, PhotosWeb=?vPhotosWeb, Gateaux=?vGateaux, PbMedicaux=?vPbMedicaux, DetailsMedicaux=?vDetailsMedicaux WHERE id=?key";

        using (MySqlCommand cmd = new MySqlCommand(sqlstring, new MySqlConnection(GetConnectionString())))
        {
            cmd.Parameters.Add(new MySqlParameter("key", contact.Eleve_ID));
            cmd.Parameters.Add(new MySqlParameter("vContactID", contact.ContactID));
            cmd.Parameters.Add(new MySqlParameter("vNom", contact.Nom));
            cmd.Parameters.Add(new MySqlParameter("vPrenom", contact.Prenom));
            cmd.Parameters.Add(new MySqlParameter("vDateNaissance", (String.IsNullOrEmpty(contact.DateNaissance.ToString()) ? Convert.ToDateTime("01/01/0001") : contact.DateNaissance)));
            cmd.Parameters.Add(new MySqlParameter("vNationalite", contact.Nationalite));
            cmd.Parameters.Add(new MySqlParameter("vPremiereRentree", contact.PremiereRentree));
            //cmd.Parameters.Add(new MySqlParameter("vNiveau", contact.Niveau));
            cmd.Parameters.Add(new MySqlParameter("vClasseActuelle", contact.ClasseActuelle));
            cmd.Parameters.Add(new MySqlParameter("vActuellementInscrit", Convert.ToInt32(contact.ActuellementInscrit)));
            cmd.Parameters.Add(new MySqlParameter("vPreInscrit", Convert.ToInt32(contact.PreInscrit)));
            cmd.Parameters.Add(new MySqlParameter("vSexe", contact.Sexe));
            cmd.Parameters.Add(new MySqlParameter("vRelationAutreParent", contact.RelationAutreParent));
            cmd.Parameters.Add(new MySqlParameter("vNomAutreParent", contact.NomAutreParent));
            cmd.Parameters.Add(new MySqlParameter("vPrenomAutreParent", contact.PrenomAutreParent));
            cmd.Parameters.Add(new MySqlParameter("vAdresseAutreParent", contact.AdresseAutreParent));
            cmd.Parameters.Add(new MySqlParameter("vFixeAutreParent", contact.FixeAutreParent));
            cmd.Parameters.Add(new MySqlParameter("vPortableAutreParent", contact.PortableAutreParent));
            cmd.Parameters.Add(new MySqlParameter("vEmailAutreParent", contact.EmailAutreParent));
            cmd.Parameters.Add(new MySqlParameter("vDocteur", contact.Docteur));
            cmd.Parameters.Add(new MySqlParameter("vPhotosClasse", Convert.ToInt32(contact.PhotosClasse)));
            cmd.Parameters.Add(new MySqlParameter("vPhotosWeb", Convert.ToInt32(contact.PhotosWeb)));
            cmd.Parameters.Add(new MySqlParameter("vGateaux", Convert.ToInt32(contact.Gateaux)));
            cmd.Parameters.Add(new MySqlParameter("vPbMedicaux", Convert.ToInt32(contact.PbMedicaux)));
            cmd.Parameters.Add(new MySqlParameter("vDetailsMedicaux", contact.DetailsMedicaux));

            cmd.Connection.Open();
            cmd.ExecuteNonQuery();
        }

        sqlstring = "UPDATE ct_contacts SET `Nom`=?vNom, `Prenom`=?vPrenom, `Adresse1`=?vAdresse1, `Adresse2`=?vAdresse2, `Adresse3`=?vAdresse3, `Ville`=?vVille, `Code Postal`=?vCodePostal, `Fixe`=?vFixe, `Portable`=?vPortable, `Email`=?vEmail, `Notes`=?vNotes, `ActuellementInscrit`=?vActuellementInscrit, `Comite`=?vComite, `NePasContacter`=?vNePasContacter WHERE ID = ?vContactID";

        using (MySqlCommand cmd = new MySqlCommand(sqlstring, new MySqlConnection(GetConnectionString())))
        {
            //cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new MySqlParameter("vContactID", contact.ContactID));
            cmd.Parameters.Add(new MySqlParameter("vNom", contact.NomContact));
            cmd.Parameters.Add(new MySqlParameter("vPrenom", contact.PrenomContact));
            cmd.Parameters.Add(new MySqlParameter("vAdresse1", contact.Adresse1));
            cmd.Parameters.Add(new MySqlParameter("vAdresse2", contact.Adresse2));
            cmd.Parameters.Add(new MySqlParameter("vAdresse3", contact.Adresse3));
            cmd.Parameters.Add(new MySqlParameter("vVille", contact.Ville));
            cmd.Parameters.Add(new MySqlParameter("vCodePostal", contact.CodePostal));
            cmd.Parameters.Add(new MySqlParameter("vFixe", contact.Fixe));
            cmd.Parameters.Add(new MySqlParameter("vPortable", contact.Portable));
            cmd.Parameters.Add(new MySqlParameter("vEmail", contact.Email));
            cmd.Parameters.Add(new MySqlParameter("vNotes", contact.Notes));
            cmd.Parameters.Add(new MySqlParameter("vActuellementInscrit", Convert.ToInt32(contact.ActuellementInscritContact)));
            cmd.Parameters.Add(new MySqlParameter("vComite", Convert.ToInt32(contact.Comite)));
            cmd.Parameters.Add(new MySqlParameter("vNePasContacter", Convert.ToInt32(contact.NePasContacter)));

            cmd.Connection.Open();
            cmd.ExecuteNonQuery();
        }
    }