public static bool DelProjet(Projet pr)
        {
            // création connection
            using (SqlConnection sqlConnect = GetConnection())
            {
                // projet forfait
                using (SqlCommand sqlCde = new SqlCommand())
                {
                    //initialiser la connection de la commande
                    sqlCde.Connection = sqlConnect;
                    string strSql = "DelProjet";
                    sqlCde.CommandText = strSql;
                    sqlCde.CommandType = CommandType.StoredProcedure;

                    // affectation du parametre idprojet à la procédure stockée
                    sqlCde.Parameters.Clear();
                    sqlCde.Parameters.Add(new SqlParameter("@idProjet", SqlDbType.Int)).Value = pr.CodeProjet;
                    try
                    {

                        int n = sqlCde.ExecuteNonQuery();
                        if (n != 1)
                            throw new DaoExceptionAfficheMessage("L'opération n'a pas été réalisée");
                        return true;
                    }
                    catch (SqlException se)
                    {
                        throw new DaoExceptionAfficheMessage("L'opération de suppression n'a pas été réalisée: \n" + se.Message, se);
                    }
                }
            }
        }
 private static void AffectParamCde(Projet pr, SqlCommand sqlCde)
 {
     sqlCde.CommandType = CommandType.StoredProcedure;
     sqlCde.Parameters.Clear();
     // affectation des parametres communs 
     sqlCde.Parameters.Add(new SqlParameter("@idClient", SqlDbType.Int)).Value = pr.LeClient.CodeClient;
     sqlCde.Parameters.Add(new SqlParameter("@nomprojet", SqlDbType.VarChar, 30)).Value = pr.NomProjet;
     sqlCde.Parameters.Add(new SqlParameter("@ddebut", SqlDbType.Date)).Value = pr.DDebut;
     sqlCde.Parameters.Add(new SqlParameter("@dfin", SqlDbType.Date)).Value = pr.DFin;
     if (pr.Contact != string.Empty)
         sqlCde.Parameters.Add(new SqlParameter("@contactclient", SqlDbType.VarChar, 30)).Value = pr.Contact;
     if (pr.MailContact != string.Empty)
         sqlCde.Parameters.Add(new SqlParameter("@mailcontact", SqlDbType.VarChar, 30)).Value = pr.MailContact;
     // affectation des parametres particuliers
     Type t = pr.GetType();
     if (t.Name == "ProjetForfait")
     {
         sqlCde.Parameters.Add(new SqlParameter("@mtcontrat", SqlDbType.Money)).Value = ((ProjetForfait)pr).MontantContrat;
         sqlCde.Parameters.Add(new SqlParameter("@penaliteouinon", SqlDbType.Bit)).Value = ((ProjetForfait)pr).PenaliteOuiNon;
         sqlCde.Parameters.Add(new SqlParameter("@idcoll", SqlDbType.Int)).Value = ((ProjetForfait)pr).ChefDeProjet.CodeColl;
     }
     else
     {
         sqlCde.Parameters.Add(new SqlParameter("@tarifjournalier", SqlDbType.Money)).Value = ((ProjetRegie)pr).TarifJournalier;
         sqlCde.Parameters.Add(new SqlParameter("@idQualif", SqlDbType.TinyInt)).Value = ((ProjetRegie)pr).Qualification.CodeQualif;
     }
 }
        public static void UpdProjet(Projet pr)
        {
            // création connection
            using (SqlConnection sqlConnect = GetConnection())
            {
                // projet forfait
                using (SqlCommand sqlCde = new SqlCommand())
                {
                    //initialiser la connection de la commande
                    sqlCde.Connection = sqlConnect;
                    string strSql = "UpdProjet";
                    sqlCde.CommandText = strSql;

                    // Affectation des parametres à la commande
                    AffectParamCde(pr, sqlCde);

                    // ajout du code projet en entrée
                    sqlCde.Parameters.Add(new SqlParameter("@idprojet", SqlDbType.Int)).Value = pr.CodeProjet;

                    // exécution de la requete
                    //========================
                    try
                    {
                        int n = sqlCde.ExecuteNonQuery();
                        if (n != 1)
                            throw new DaoExceptionAfficheMessage("L'opération n'a pas été réalisée");
                    }
                    catch (SqlException se)
                    {
                        throw new DaoExceptionAfficheMessage("La mise à jour n'a pas été réalisée: \n" + se.Message);
                    }
                }
            }
        }
        public static int AddProjet(Projet pr)
        {
            // création connection
            using (SqlConnection sqlConnect = GetConnection())
            {
                // projet forfait
                using (SqlCommand sqlCde = new SqlCommand())
                {
                    //initialiser la connection de la commande
                    sqlCde.Connection = sqlConnect;
                    string strSql = "AddProjet";
                    sqlCde.CommandText = strSql;

                    // Affectation des parametres à la commande
                    AffectParamCde(pr, sqlCde);
                    // ajout du parametre typeprojet (uniquement en add)
                    sqlCde.Parameters.Add(new SqlParameter("@idTypeP", SqlDbType.TinyInt)).Value = 1;

                    // ajout du code projet en sortie 
                    SqlParameter pOut = new SqlParameter("@idProjet", SqlDbType.Int);
                    pOut.Direction = ParameterDirection.Output;
                    sqlCde.Parameters.Add(pOut);
                    
                    // exécution de la requete
                    //========================
                    try
                    {
                        int n = sqlCde.ExecuteNonQuery();
                        if (n != 1)
                            throw new DaoExceptionAfficheMessage("L'opération n'a pas été réalisée");
                        return (int)pOut.Value;
                    }
                    catch (SqlException se)
                    {
                        throw new DaoExceptionAfficheMessage("L'opération n'a pas été réalisée: \n" + se.Message, se);
                    }
                }
            }
        }