public void UploadFile(Stream stream, string workflowId_)
        {
            var parser = MultipartFormDataParser.Parse(stream);

            string typology = parser.GetParameterValue("typology");                 //separate by ,
            string clients  = parser.GetParameterValue("clients");                  // separate by ,
            bool   standard = bool.Parse(parser.GetParameterValue("packStandard")); //string "true" "false"

            // Files are stored in a list:
            FilePart file     = parser.Files.First();
            string   FileName = file.FileName;

            int workflowId = int.Parse(workflowId_);

            //EST CE QUE LE DOSSIER TEMP EXISTE
            if (Directory.Exists(ParamAppli.DossierTemporaire) == false)
            {
                Directory.CreateDirectory(ParamAppli.DossierTemporaire);
            }

            string FilePath = Path.Combine(ParamAppli.DossierTemporaire, FileName);

            using (FileStream fileStream = File.Create(FilePath))
            {
                file.Data.Seek(0, SeekOrigin.Begin);
                file.Data.CopyTo(fileStream);
            }

            GereMDBDansBDD gestionMDBdansBDD = new GereMDBDansBDD();

            //AJOUT DU ZIP DE MDB DANS LA BDD
            gestionMDBdansBDD.AjouteZipBDD(FilePath, workflowId, ParamAppli.ConnectionStringBaseAppli);
            string clientToLaunch = "";

            //Bring all client
            if ((String.IsNullOrEmpty(clients) || clients == "undefined") && !String.IsNullOrEmpty(typology))
            {
                //REQUETE
                int typologyId = Int32.Parse(typology);
                IEnumerable <InfoClient> listClient = RequestTool.getClientsWithTypologies(typologyId);
                foreach (InfoClient client in listClient)
                {
                    clientToLaunch = clientToLaunch + client.ID_CLIENT + ",";
                }
                clientToLaunch = clientToLaunch.Remove(clientToLaunch.Length - 1);
            }
            else if (!String.IsNullOrEmpty(clients) && !String.IsNullOrEmpty(typology))
            {
                //Récupérer les clients du front
                clientToLaunch = clients;
            }
            else
            {
                //GENERATE EXCEPTION
                throw new Exception();
            }

            //Launch process
            LaunchProcess(ParamAppli.ProcessControlePacks, workflowId, clientToLaunch);

            //SUPPRESSION DU FICHIER
            File.Delete(FilePath);
        }
        /// <summary>
        /// Méthode effectuant le contrôle.
        /// <returns>Retourne un booléen, vrai si le contrôle est concluant et sinon faux.</returns>
        /// </summary>
        public string  MakeControl()
        {
            string          bResultat          = ParamAppli.StatutOk;
            string          sRequete           = string.Empty;
            List <string>   lListeCCTManquants = new List <string>();
            List <TacheCCT> lTacheCCT          = new List <TacheCCT>();

            DataManagerSQLServer dataManagerSQLServer;

            try
            {
                // Chargement de la liste des tâche CCT de niveau 2 depuis la base de référence
                dataManagerSQLServer = new DataManagerSQLServer();
                sRequete             = "SELECT DEP_CCT_TASK_ID, DEP_CCT_OBJECT_TYPE, DEP_CCT_OBJECT_ID, DEP_CCT_PARENT_OBJ_ID from PNPU_DEP_REF where NIV_DEP = '2' AND ID_H_WORKFLOW = " + Process.WORKFLOW_ID;
                DataSet dsDataSet = dataManagerSQLServer.GetData(sRequete, ParamAppli.ConnectionStringBaseAppli);

                sRequete = "SELECT B.CCT_TASK_ID,A.ID_PACKAGE,A.DT_LAUNCHED from M4RDL_RAM_PACKS A,M4RDL_PACKAGES B where A.ID_PACKAGE = B.ID_PACKAGE AND B.CCT_TASK_ID IN (";
                bool   bPremier = true;
                string sCCT;

                if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                {
                    foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                    {
                        sCCT = drRow[0].ToString();
                        if (lListeCCTManquants.Contains(sCCT) == false)
                        {
                            lListeCCTManquants.Add(sCCT);
                        }
                        if (bPremier == true)
                        {
                            bPremier = false;
                        }
                        else
                        {
                            sRequete += ",";
                        }
                        sRequete += "'" + sCCT + "'";
                        lTacheCCT.Add(new TacheCCT(drRow[0].ToString(), drRow[1].ToString(), drRow[2].ToString(), drRow[3].ToString()));
                    }
                }
                sRequete += ")";

                // Recherche sur la base du client si les tâches ont été installées
                if (bPremier == false)
                {
                    dsDataSet = dataManagerSQLServer.GetData(sRequete, ParamAppli.ListeInfoClient[Process.CLIENT_ID].ConnectionStringQA1);
                    if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                    {
                        foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                        {
                            sCCT = drRow[0].ToString();
                            if (lListeCCTManquants.Contains(sCCT) == true)
                            {
                                lListeCCTManquants.Remove(sCCT);
                                for (int cpt = 0; cpt < lTacheCCT.Count; cpt++)
                                {
                                    if (lTacheCCT[cpt].CCT_TASK_ID == sCCT)
                                    {
                                        lTacheCCT.RemoveAt(cpt);
                                        cpt--;
                                    }
                                }
                            }
                        }
                    }
                }

                //POUR TEST

                /*lListeCCTManquants.Clear();
                 * lListeCCTManquants.Add("PLFR_74326");
                 * lListeCCTManquants.Add("PLFR_137306");*/
                //FIN POUR TEST

                // Recherche si la tâche CCT a été installée via une tâche générée par l'outil PNPU
                if (lListeCCTManquants.Count > 0)
                {
                    Dictionary <string, string> dCorrespondanceCCT = new Dictionary <string, string>();
                    sRequete = "SELECT CCT_TASK_ID,CCT_TASK_ID_ORG FROM PNPU_H_CCT WHERE CLIENT_ID='" + Process.CLIENT_ID + "' AND LEVEL_DEPENDANCE = 1 AND CCT_TASK_ID_ORG IN (";
                    bPremier = true;
                    foreach (string sTacheCCT in lListeCCTManquants)
                    {
                        if (bPremier == true)
                        {
                            bPremier = false;
                        }
                        else
                        {
                            sRequete += ",";
                        }
                        sRequete += "'" + sTacheCCT + "'";
                    }
                    sRequete += ")";

                    dsDataSet = dataManagerSQLServer.GetData(sRequete, ParamAppli.ConnectionStringBaseAppli);
                    if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                    {
                        sRequete = "SELECT B.CCT_TASK_ID,A.ID_PACKAGE,A.DT_LAUNCHED from M4RDL_RAM_PACKS A,M4RDL_PACKAGES B where A.ID_PACKAGE = B.ID_PACKAGE AND B.CCT_TASK_ID IN (";
                        bPremier = true;
                        foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                        {
                            dCorrespondanceCCT.Add(drRow[0].ToString(), drRow[1].ToString());
                            if (bPremier == true)
                            {
                                bPremier = false;
                            }
                            else
                            {
                                sRequete += ",";
                            }
                            sRequete += "'" + drRow[0].ToString() + "'";
                        }
                        sRequete += ")";

                        dsDataSet = dataManagerSQLServer.GetData(sRequete, ParamAppli.ListeInfoClient[Process.CLIENT_ID].ConnectionStringQA1);
                        {
                            foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                            {
                                sCCT = drRow[0].ToString();
                                if (lListeCCTManquants.Contains(dCorrespondanceCCT[sCCT]) == true)
                                {
                                    lListeCCTManquants.Remove(dCorrespondanceCCT[sCCT]);
                                    for (int cpt = 0; cpt < lTacheCCT.Count; cpt++)
                                    {
                                        if (lTacheCCT[cpt].CCT_TASK_ID == dCorrespondanceCCT[sCCT])
                                        {
                                            lTacheCCT.RemoveAt(cpt);
                                            cpt--;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

                //POUR TEST
                lListeCCTManquants.Clear();
                lListeCCTManquants.Add("SFR_152319");
                lTacheCCT.Clear();
                lTacheCCT.Add(new TacheCCT("SFR_152319", "ITEM", "CFR_CALC_IJSS", "CFR_H_HR_ABSENCES_PAIE"));
                //FIN POUR TEST

                // La liste ne doit contenir que les tâches CCT non instalées sur le client
                if (lListeCCTManquants.Count > 0)
                {
                    List <string> lListeTacheCrees = new List <string>();
                    if (DupliqueTachesCCTN2(lListeCCTManquants, lTacheCCT, "PNPUN2_" + Process.WORKFLOW_ID.ToString("########0") + "_" + Process.CLIENT_ID, ref lListeTacheCrees) == false)
                    {
                        bResultat = ResultatErreur;
                    }
                    else if (lListeTacheCrees.Count > 0)
                    {
                        string              sName          = "TEST";
                        GereMDBDansBDD      gereMDBDansBDD = new GereMDBDansBDD();
                        PNPUTools.RamdlTool ramdlTool      = new RamdlTool(Process.CLIENT_ID, Process.WORKFLOW_ID);
                        ramdlTool.GeneratePackFromCCT(sName, lListeTacheCrees.ToArray());
                        Process.AjouteRapport("Génération du fichier MDB.");
                        sName = ParamAppli.GeneratePackPath + "\\" + Process.WORKFLOW_ID + "_" + Process.CLIENT_ID + "\\" + sName + ".mdb";
                        if (gereMDBDansBDD.AjouteFichiersMDBBDD(new string[] { sName }, Process.WORKFLOW_ID, ParamAppli.DossierTemporaire, ParamAppli.ConnectionStringBaseAppli, Process.CLIENT_ID, 2) == 0)
                        {
                            Process.AjouteRapport("Ajout du fichier MDB en base de données.");
                        }
                        else
                        {
                            Process.AjouteRapport("Erreur lors de l'ajout du fichier MDB en base de données.");
                            Logger.Log(Process, this, ParamAppli.StatutError, "Erreur lors de l'ajout du fichier MDB en base de données.");
                            bResultat = ParamAppli.StatutError;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Log(Process, this, ParamAppli.StatutError, ex.Message);
                bResultat = ParamAppli.StatutError;
            }

            return(bResultat);
        }