示例#1
0
        public static string CreateWorkflow(PNPU_WORKFLOW input)
        {
            string[] requests   = { "INSERT INTO PNPU_WORKFLOW ( WORKFLOW_LABEL) VALUES( @WORKFLOW_LABEL)" };
            string[] parameters = new string[] { "@WORKFLOW_LABEL", input.WORKFLOW_LABEL };

            return(DataManagerSQLServer.ExecuteSqlTransaction(requests, "PNPU_WORKFLOW", parameters, true));

            /*using (var conn = new System.Data.SqlClient.SqlConnection(ParamAppli.ConnectionStringBaseAppli))
             * {
             *  string LastInsertedPK = "";
             *  try
             *  {
             *      conn.Open();
             *      using (var cmd = new System.Data.SqlClient.SqlCommand("INSERT INTO PNPU_WORKFLOW ( WORKFLOW_LABEL) VALUES( @WORKFLOW_LABEL)", conn))
             *      {
             *          cmd.Parameters.Add("@WORKFLOW_LABEL", SqlDbType.VarChar, 254).Value = input.WORKFLOW_LABEL;
             *          int rowsAffected = cmd.ExecuteNonQuery();
             *          if (rowsAffected > 0)
             *          {
             *              LastInsertedPK = DataManagerSQLServer.GetLastInsertedPK("PNPU_WORKFLOW", ParamAppli.ConnectionStringBaseAppli);
             *          }
             *      }
             *  }
             *  catch (SqlException ex)
             *  {
             *      return ex.ToString();
             *  }
             *  return LastInsertedPK;
             * }*/
        }
示例#2
0
        public static string AffectWorkflowsProcesses(PNPU_STEP input, string workflowID)
        {
            string[] requests   = { "INSERT INTO PNPU_STEP ( ORDER_ID, ID_PROCESS, WORKFLOW_ID) VALUES( @ORDER_ID, @ID_PROCESS, @WORKFLOW_ID)" };
            string[] parameters = new string[] { "@ORDER_ID", input.ID_ORDER.ToString(), "@ID_PROCESS", input.ID_PROCESS.ToString(), "@WORKFLOW_ID", input.ID_WORKFLOW };

            return(DataManagerSQLServer.ExecuteSqlTransaction(requests, "PNPU_STEP", parameters, false));

            /*using (var conn = new System.Data.SqlClient.SqlConnection(ParamAppli.ConnectionStringBaseAppli))
             * {
             *  try
             *  {
             *      conn.Open();
             *      using (var cmd = new System.Data.SqlClient.SqlCommand("INSERT INTO PNPU_STEP ( ORDER_ID, ID_PROCESS, WORKFLOW_ID) VALUES( @ORDER_ID, @ID_PROCESS, @WORKFLOW_ID)", conn))
             *      {
             *          cmd.Parameters.Add("@ORDER_ID", SqlDbType.Int).Value = input.ID_ORDER;
             *          cmd.Parameters.Add("@ID_PROCESS", SqlDbType.VarChar, 254).Value = input.ID_PROCESS;
             *          cmd.Parameters.Add("@WORKFLOW_ID", SqlDbType.VarChar, 254).Value = input.ID_WORKFLOW;
             *          int rowsAffected = cmd.ExecuteNonQuery();
             *      }
             *  }
             *  catch (SqlException ex)
             *  {
             *      return ex.ToString();
             *  }
             *  return "Requête traitée avec succès et création d’un document.";
             * }*/
        }
示例#3
0
        public static string ModifyWorkflow(PNPU_WORKFLOW input, string workflowID)
        {
            string[] requests   = { "UPDATE PNPU_WORKFLOW SET WORKFLOW_LABEL = @WORKFLOW_LABEL WHERE WORKFLOW_ID = @WORKFLOW_ID " };
            string[] parameters = new string[] { "@WORKFLOW_ID", workflowID, "@WORKFLOW_LABEL", input.WORKFLOW_LABEL };

            return(DataManagerSQLServer.ExecuteSqlTransaction(requests, "PNPU_WORKFLOW", parameters, false));

            /*using (var conn = new System.Data.SqlClient.SqlConnection(ParamAppli.ConnectionStringBaseAppli))
             * {
             *  try
             *  {
             *      conn.Open();
             *      using (var cmd = new System.Data.SqlClient.SqlCommand("UPDATE PNPU_WORKFLOW SET WORKFLOW_LABEL = @WORKFLOW_LABEL WHERE WORKFLOW_ID = @WORKFLOW_ID ", conn))
             *      {
             *          cmd.Parameters.Add("@WORKFLOW_ID", SqlDbType.Int).Value = workflowID;
             *          cmd.Parameters.Add("@WORKFLOW_LABEL", SqlDbType.VarChar, 254).Value = input.WORKFLOW_LABEL;
             *          int rowsAffected = cmd.ExecuteNonQuery();
             *      }
             *  }
             *  catch (SqlException ex)
             *  {
             *      return ex.ToString();
             *  }
             *  return "Requête traitée avec succès et création d’un document.";
             * }*/
        }
示例#4
0
        public string SaveReportInBDD(string json, IProcess process)
        {
            string[] requests   = { "INSERT INTO PNPU_H_REPORT (ITERATION, WORKFLOW_ID, ID_PROCESS, CLIENT_ID, JSON_TEMPLATE) VALUES(@ITERATION, @WORKFLOW_ID, @ID_PROCESS, @CLIENT_ID, @JSON_TEMPLATE)" };
            string[] parameters = new string[] { "@ITERATION", "1", "@WORKFLOW_ID", process.WORKFLOW_ID.ToString(), "@ID_PROCESS", process.PROCESS_ID.ToString(), "@CLIENT_ID", process.CLIENT_ID, "@JSON_TEMPLATE", json.Replace("\r\n", "") };

            return(DataManagerSQLServer.ExecuteSqlTransaction(requests, "PNPU_H_REPORT", parameters, false));

            /*using (var conn = new System.Data.SqlClient.SqlConnection(ParamAppli.ConnectionStringBaseAppli))
             * {
             *  try
             *  {
             *      conn.Open();
             *      using (var cmd = new System.Data.SqlClient.SqlCommand("INSERT INTO PNPU_H_REPORT (ITERATION, WORKFLOW_ID, ID_PROCESS, CLIENT_ID, JSON_TEMPLATE) VALUES(@ITERATION, @WORKFLOW_ID, @ID_PROCESS, @CLIENT_ID, @JSON_TEMPLATE)", conn))
             *      {
             *          cmd.Parameters.Add("@ITERATION", SqlDbType.Int, 10).Value = 1;
             *          cmd.Parameters.Add("@WORKFLOW_ID", SqlDbType.Int, 15).Value = process.WORKFLOW_ID;
             *          cmd.Parameters.Add("@ID_PROCESS", SqlDbType.Int, 15).Value = process.PROCESS_ID;
             *          cmd.Parameters.Add("@CLIENT_ID", SqlDbType.VarChar, 64).Value = process.CLIENT_ID;
             *          cmd.Parameters.Add("@JSON_TEMPLATE", SqlDbType.Text).Value = json.Replace("\r\n", "");
             *          int rowsAffected = cmd.ExecuteNonQuery();
             *      }
             *  }
             *  catch (SqlException ex)
             *  {
             *      string msgError = "L'insertion du report du client " + process.CLIENT_ID + ", process " + process.PROCESS_ID + " ,workflow " + process.WORKFLOW_ID + " a échoué !";
             *      Console.WriteLine(msgError);
             *      return false;
             *  }
             *  return true;
             * }*/
        }
示例#5
0
        static string getAllInfoClient()
        {
            DataSet result = DataManagerSQLServer.GetDatas(requestAllClient, connectionStringSupport);
            string  json   = JsonConvert.SerializeObject(result, Formatting.Indented);

            return(json);
        }
示例#6
0
        public static string DeleteWorkflow(string workflowID)
        {
            string[] requests   = { "DELETE FROM PNPU_WORKFLOW WHERE WORKFLOW_ID = @WORKFLOW_ID " };
            string[] parameters = new string[] { "@WORKFLOW_ID", workflowID };

            return(DataManagerSQLServer.ExecuteSqlTransaction(requests, "PNPU_WORKFLOW", parameters, false));

            /* using (var conn = new System.Data.SqlClient.SqlConnection(ParamAppli.ConnectionStringBaseAppli))
             * {
             *  try
             *  {
             *      conn.Open();
             *      using (var cmd = new System.Data.SqlClient.SqlCommand("DELETE FROM PNPU_WORKFLOW WHERE WORKFLOW_ID = @WORKFLOW_ID ", conn))
             *      {
             *          cmd.Parameters.Add("@WORKFLOW_ID", SqlDbType.Int).Value = workflowID;
             *          int rowsAffected = cmd.ExecuteNonQuery();
             *      }
             *      using (var cmd = new System.Data.SqlClient.SqlCommand("DELETE FROM PNPU_STEP WHERE WORKFLOW_ID = @WORKFLOW_ID", conn))
             *      {
             *          cmd.Parameters.Add("@WORKFLOW_ID", SqlDbType.Int).Value = workflowID;
             *          int rowsAffected = cmd.ExecuteNonQuery();
             *      }
             *  }
             *  catch (SqlException ex)
             *  {
             *      return ex.ToString();
             *  }
             *  return "Requête traitée avec succès et création d’un document.";
             * }*/
        }
示例#7
0
        public static string ModifyProcessus(PNPU_PROCESS input, string processID)
        {
            string[] requests   = { "UPDATE PNPU_PROCESS SET PROCESS_LABEL = @PROCESS_LABEL, IS_LOOPABLE = @IS_LOOPABLE WHERE ID_PROCESS = @ID_PROCESS" };
            string[] parameters = new string[] { "@ID_PROCESS", processID, "@PROCESS_LABEL", input.PROCESS_LABEL, "@IS_LOOPABLE", input.IS_LOOPABLE };

            return(DataManagerSQLServer.ExecuteSqlTransaction(requests, "PNPU_PROCESS", parameters, false));

            /*using (var conn = new System.Data.SqlClient.SqlConnection(ParamAppli.ConnectionStringBaseAppli))
             * {
             *  try
             *  {
             *      conn.Open();
             *      using (var cmd = new System.Data.SqlClient.SqlCommand("UPDATE PNPU_PROCESS SET PROCESS_LABEL = @PROCESS_LABEL, IS_LOOPABLE = @IS_LOOPABLE WHERE ID_PROCESS = @ID_PROCESS", conn))
             *      {
             *          cmd.Parameters.Add("@ID_PROCESS", SqlDbType.Int).Value = processID;
             *          cmd.Parameters.Add("@PROCESS_LABEL", SqlDbType.VarChar, 254).Value = input.PROCESS_LABEL;
             *          cmd.Parameters.Add("@IS_LOOPABLE", SqlDbType.VarChar, 254).Value = input.IS_LOOPABLE;
             *          int rowsAffected = cmd.ExecuteNonQuery();
             *      }
             *  }
             *  catch (SqlException ex)
             *  {
             *      return ex.ToString();
             *  }
             *  return "Requête traitée avec succès et création d’un document.";
             * }*/
        }
示例#8
0
        public static PNPU_WORKFLOW getWorkflow(string workflowId)
        {
            DataSet   result = DataManagerSQLServer.GetDatas(requestOneWorkflow + "'" + workflowId + "'", ParamAppli.ConnectionStringBaseAppli);
            DataTable table  = result.Tables[0];

            IEnumerable <PNPU_WORKFLOW> listTest = table.DataTableToList <PNPU_WORKFLOW>();

            return(listTest.First());
        }
        /// <summary>
        /// Méthode chargeant la liste des M4O et des présentation hérités en standard.
        /// </summary>
        private void ChargeM4OPresHerites()
        {
            string  sRequete  = string.Empty;
            DataSet dsDataSet = null;
            DataManagerSQLServer dmaManagersqlServer = null;

            lObjetsHeritesSTD   = new List <string[]>();
            lPresentsHeritesSTD = new List <string[]>();

            try
            {
                if (ConnectionStringBaseRef != string.Empty)
                {
                    dmaManagersqlServer = new DataManagerSQLServer();
                    /* Récupération des M4O hérités au niveau standard */
                    sRequete  = "select OS.ID_T3 AS ID_T3, PMS.ID_PROJECT AS ID_PROJECT, PMS.ID_INSTANCE AS ID_INSTANCE FROM SPR_DIN_OBJECTS OS inner join M4RDM_OS_PROJ_MEMS PMS on (OS.ID = PMS.ID_INSTANCE and PMS.ID_CLASS = 'DIN_OBJECT' AND PMS.ID_PROJECT IN ('STANDARD','_M4ROOT'))";
                    dsDataSet = dmaManagersqlServer.GetData(sRequete, ConnectionStringBaseRef);

                    if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                    {
                        foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                        {
                            lObjetsHeritesSTD.Add(new string[] { drRow[0].ToString(), drRow[1].ToString(), drRow[2].ToString() });
                            if (sListeID_T3 != string.Empty)
                            {
                                sListeID_T3 += ",";
                            }
                            sListeID_T3 += "'" + drRow[0].ToString() + "'";
                        }
                        dsDataSet.Clear();
                    }

                    /* Récupération des présentations héritées au niveau standard */
                    sRequete  = "select PS.ID_PRESENTATION,PMS.ID_PROJECT,PMS.ID_INSTANCE FROM SPR_DIN_PRESENTS  PS inner join M4RDM_OS_PROJ_MEMS PMS on (PS.ID = PMS.ID_INSTANCE and PMS.ID_CLASS = 'DIN_PRESENT' AND PMS.ID_PROJECT IN ('STANDARD','_M4ROOT'))";
                    dsDataSet = dmaManagersqlServer.GetData(sRequete, ConnectionStringBaseRef);

                    if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                    {
                        foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                        {
                            lPresentsHeritesSTD.Add(new string[] { drRow[0].ToString(), drRow[1].ToString(), drRow[2].ToString() });
                            if (sListeID_PRES != string.Empty)
                            {
                                sListeID_PRES += ",";
                            }
                            sListeID_PRES += "'" + drRow[0].ToString() + "'";
                        }
                        dsDataSet.Clear();
                    }
                }
            }
            catch (Exception ex)
            {
                // TODO, loguer l'exception
            }
        }
示例#10
0
        public static IEnumerable <PNPU_STEP> GetAllStep()
        {
            DataSet   result = DataManagerSQLServer.GetDatas(requestAllStep, ParamAppli.ConnectionStringBaseAppli);
            DataTable table  = result.Tables[0];


            IEnumerable <PNPU_STEP> listTest = table.DataTableToList <PNPU_STEP>();

            return(listTest);
        }
示例#11
0
        public static PNPU_PROCESS GetProcess(string processId)
        {
            DataSet   result = DataManagerSQLServer.GetDatas(requestOneProcess + processId, ParamAppli.ConnectionStringBaseAppli);
            DataTable table  = result.Tables[0];


            IEnumerable <PNPU_PROCESS> listTest = table.DataTableToList <PNPU_PROCESS>();

            return(listTest.First());
        }
示例#12
0
        public static string GetInfoOneClient(string clientName)
        {
            DataSet result  = DataManagerSQLServer.GetDatas(requestOneClient + "'" + clientName + "'", ParamAppli.ConnectionStringSupport);
            string  json    = JsonConvert.SerializeObject(result, Formatting.Indented);
            var     regex   = new Regex(Regex.Escape("Table"));
            var     newJson = regex.Replace(json, "Clients", 1);

            newJson = newJson.Replace("\r\n", "");
            return(newJson);
        }
示例#13
0
        public static IEnumerable <PNPU_WORKFLOW> GetAllWorkFLow()
        {
            DataSet   result = DataManagerSQLServer.GetDatas(requestAllWorkflow, ParamAppli.ConnectionStringBaseAppli);
            DataTable table  = result.Tables[0];


            IEnumerable <PNPU_WORKFLOW> listTest = table.DataTableToList <PNPU_WORKFLOW>();

            return(listTest);
        }
示例#14
0
        public static IEnumerable <PNPU_WORKFLOWPROCESSES> GetWorkflowProcesses(string workflowId)
        {
            string OrderBy = " ORDER BY PS.ORDER_ID";

            DataSet   result = DataManagerSQLServer.GetDatas(requestGetWorkflowProcesses + workflowId + OrderBy, ParamAppli.ConnectionStringBaseAppli);
            DataTable table  = result.Tables[0];

            IEnumerable <PNPU_WORKFLOWPROCESSES> listTest = table.DataTableToList <PNPU_WORKFLOWPROCESSES>();

            return(listTest);
        }
示例#15
0
        public static InfoClient getClientsById(string idClient)
        {
            string    finalRequest = string.Format(requestClientById, idClient);
            DataSet   result       = DataManagerSQLServer.GetDatas(finalRequest, ParamAppli.connectionStringSupport);
            DataTable table        = result.Tables[0];


            IEnumerable <InfoClient> listTest = table.DataTableToList <InfoClient>();

            return(listTest.First());
        }
示例#16
0
        public static IEnumerable <InfoClient> getClientsWithTypologies()
        {
            string    finalRequest = requestListClientAll;
            DataSet   result       = DataManagerSQLServer.GetDatas(finalRequest, ParamAppli.connectionStringSupport);
            DataTable table        = result.Tables[0];


            IEnumerable <InfoClient> listTest = table.DataTableToList <InfoClient>();

            return(listTest);
        }
示例#17
0
        /// <summary>
        /// Methode permettant de récupérer dynamiquement la liste des contrôles à lancer en fonction du process, de la typologie client et du type de pack (standard ou non).
        /// </summary>
        /// <param name="listControl">Au retour de l'appel contient la liste des contrôles à exécuter dans le process</param>
        protected void GetListControle(ref List <IControle> listControl)
        {
            DataManagerSQLServer dmsDataManager = new DataManagerSQLServer();
            DataSet dsDataSet;
            string  sRequete = "SELECT ID_CONTROLE, CONTROLE_LABEL, TYPOLOGY, RUN_STANDARD, ID_PROCESS, ERROR_TYPE, TOOLTIP FROM PNPU_CONTROLE WHERE ID_PROCESS =" + this.PROCESS_ID.ToString();

            if ((this.CLIENT_ID != string.Empty) && (this.CLIENT_ID != "ALL"))
            {
                try
                {
                    string sClient_ID;
                    if (this.CLIENT_ID.Contains(",") == true)
                    {
                        sClient_ID = this.CLIENT_ID.Split(',')[0];
                    }
                    else
                    {
                        sClient_ID = this.CLIENT_ID;
                    }
                    this.TYPOLOGY = ParamAppli.ListeInfoClient[sClient_ID].TYPOLOGY_ID;
                    if (this.TYPOLOGY != string.Empty)
                    {
                        sRequete += " AND ((TYPOLOGY IS NULL) OR (TYPOLOGY LIKE '%*" + this.TYPOLOGY + "*%'))";
                    }
                }
                catch (Exception)
                { }
            }

            /*else if (this.TYPOLOGY != string.Empty)
             * {
             *  sRequete += " AND ((TYPOLOGY IS NULL) OR (TYPOLOGY LIKE '%*" + this.TYPOLOGY + "*%'))";
             * }
             */
            if (this.STANDARD == false)
            {
                sRequete += " AND ((RUN_STANDARD IS NULL) OR (RUN_STANDARD <> 'YES'))";
            }

            listControl.Clear();
            dsDataSet = dmsDataManager.GetData(sRequete, ParamAppli.ConnectionStringBaseAppli);

            if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
            {
                foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                {
                    string    sControle = drRow[0].ToString();
                    IControle iControle = (IControle)Activator.CreateInstance(Type.GetType(sControle), this, drRow);
                    listControl.Add(iControle);
                }
            }
        }
示例#18
0
        public static string CreateProcess(PNPU_PROCESS input)
        {
            string[] requests   = { "INSERT INTO PNPU_PROCESS ( PROCESS_LABEL, IS_LOOPABLE) VALUES( @PROCESS_LABEL, @IS_LOOPABLE)" };
            string[] parameters = new string[] { "@PROCESS_LABEL", input.PROCESS_LABEL, "@IS_LOOPABLE", input.IS_LOOPABLE };

            return(DataManagerSQLServer.ExecuteSqlTransaction(requests, "PNPU_PROCESS", parameters, true));

            /*string sRequest = "INSERT INTO PNPU_PROCESS ( PROCESS_LABEL, IS_LOOPABLE) VALUES( @PROCESS_LABEL, @IS_LOOPABLE)";
             * string sTable = "PNPU_PROCESS";
             * string result = DataManagerSQLServer.SendTransactionWithGetLastPKid(sRequest, input, sTable);
             *
             * return result;*/
        }
示例#19
0
        public static IEnumerable <PNPU_H_REPORT> getReport(decimal idProcess, decimal workflowId, string clientId)
        {
            String sRequest = "SELECT PHR.ITERATION, PHR.WORKFLOW_ID, PHR.ID_PROCESS, PHR.CLIENT_ID, PHR.JSON_TEMPLATE FROM PNPU_H_REPORT PHR, PNPU_PROCESS PR ";

            sRequest += " WHERE PHR.ID_PROCESS = @ID_PROCESS AND PHR.WORKFLOW_ID = @WORKFLOW_ID AND PHR.ID_PROCESS =  PR.ID_PROCESS  AND ";
            sRequest += " ( PHR.CLIENT_ID = @CLIENT_ID OR PR.IS_GLOBAL = '1') ";

            DataSet   result = DataManagerSQLServer.GetDatasWithParams(sRequest, ParamAppli.ConnectionStringBaseAppli, idProcess, workflowId, clientId);
            DataTable table  = result.Tables[0];


            IEnumerable <PNPU_H_REPORT> listTest = table.DataTableToList <PNPU_H_REPORT>();

            return(listTest);
        }
示例#20
0
        public static PNPU_H_STEP getStepHistoric(PNPU_H_STEP step)
        {
            DataSet   result = DataManagerSQLServer.GetDatas(string.Format(requestGetStepHistoric, step.WORKFLOW_ID, step.CLIENT_ID, step.ID_PROCESS, step.ITERATION), ParamAppli.ConnectionStringBaseAppli);
            DataTable table  = result.Tables[0];

            IEnumerable <PNPU_H_STEP> listTest = table.DataTableToList <PNPU_H_STEP>();

            if (listTest.Count() >= 1)
            {
                return(listTest.First());
            }
            else
            {
                return(null);
            }
        }
示例#21
0
        public static PNPU_H_WORKFLOW getWorkflowHistoric(int workflowId)
        {
            DataSet   result = DataManagerSQLServer.GetDatas(requestOneWorkflowHistoric + "'" + workflowId + "'", ParamAppli.ConnectionStringBaseAppli);
            DataTable table  = result.Tables[0];

            IEnumerable <PNPU_H_WORKFLOW> listTest = table.DataTableToList <PNPU_H_WORKFLOW>();

            if (listTest.Count() >= 1)
            {
                return(listTest.First());
            }
            else
            {
                return(null);
            }
        }
示例#22
0
        public static int GetNextProcess(decimal wORKFLOW_ID, int processId)
        {
            string    finalRequest = string.Format(requestGetNextProcess, wORKFLOW_ID, processId);
            DataSet   result       = DataManagerSQLServer.GetDatas(finalRequest, ParamAppli.ConnectionStringBaseAppli);
            DataTable table        = result.Tables[0];



            IEnumerable <PNPU_STEP> listTest = table.DataTableToList <PNPU_STEP>();

            if (listTest.Count() == 0)
            {
                return(ParamAppli.ProcessFinished);
            }
            else
            {
                return(listTest.First().ID_PROCESS);
            }
        }
示例#23
0
        public static string CreateUpdateWorkflowHistoric(PNPU_H_WORKFLOW input)
        {
            int workFlowId = Decimal.ToInt32(input.WORKFLOW_ID);

            if (historicWorkflowExist(workFlowId))
            {
                //Update for the moment do nothing
                return("Requête traitée avec succès et création/mis à jour d'un historique de workflow");
            }
            else
            {
                string[] requests   = { "INSERT INTO PNPU_H_WORKFLOW ( CLIENT_ID, WORKFLOW_ID, LAUNCHING_DATE, ENDING_DATE, STATUT_GLOBAL) VALUES (@CLIENT_ID, @WORKFLOW_ID, @LAUNCHING_DATE, @ENDING_DATE, @STATUT)" };
                string[] parameters = new string[] { "@CLIENT_ID", input.CLIENT_ID, "@WORKFLOW_ID", input.WORKFLOW_ID.ToString(), "@LAUNCHING_DATE", input.LAUNCHING_DATE.ToString("MM/dd/yyyy HH:mm:ss"), "@ENDING_DATE", input.ENDING_DATE.ToString("MM/dd/yyyy HH:mm:ss"), "@STATUT", input.STATUT_GLOBAL };

                return(DataManagerSQLServer.ExecuteSqlTransaction(requests, "PNPU_H_WORKFLOW", parameters, true));

                /*using (var conn = new System.Data.SqlClient.SqlConnection(ParamAppli.ConnectionStringBaseAppli))
                 * {
                 *  try
                 *  {
                 *
                 *      conn.Open();
                 *
                 *      using (var cmd = new System.Data.SqlClient.SqlCommand("insert into PNPU_H_WORKFLOW ( CLIENT_ID, WORKFLOW_ID, LAUNCHING_DATE, ENDING_DATE, STATUT_GLOBAL) values (@CLIENT_ID, @WORKFLOW_ID, @LAUNCHING_DATE, @ENDING_DATE, @STATUT)", conn))
                 *      {
                 *          cmd.Parameters.Add("@WORKFLOW_ID", SqlDbType.Int).Value = input.WORKFLOW_ID;
                 *          cmd.Parameters.Add("@CLIENT_ID", SqlDbType.VarChar, 254).Value = input.CLIENT_ID;
                 *          cmd.Parameters.Add("@LAUNCHING_DATE", SqlDbType.DateTime).Value = input.LAUNCHING_DATE;
                 *          cmd.Parameters.Add("@STATUT", SqlDbType.VarChar, 254).Value = input.STATUT_GLOBAL;
                 *          cmd.Parameters.Add("@ENDING_DATE", SqlDbType.DateTime).Value = input.ENDING_DATE;
                 *
                 *          int rowsAffected = cmd.ExecuteNonQuery();
                 *      }
                 *  }
                 *  catch (SqlException ex)
                 *  {
                 *      return ex.ToString();
                 *  }
                 *  return "Requête traitée avec succès et création/mis à jour d'un historique de workflow";
                 * }*/
            }
        }
示例#24
0
        public static IEnumerable <InfoClientStep> GetAllInfoClient(decimal WORKFLOW_ID)
        {
            // Par défault on charge sur le dashboard le dernier Workflow en cours
            string defaultWorkflowID = "(SELECT TOP(1) PHW.WORKFLOW_ID FROM PNPU_H_WORKFLOW PHW, PNPU_H_WORKFLOW PHW2 WHERE PHW.ID_H_WORKFLOW = PHW2.ID_H_WORKFLOW AND PHW.LAUNCHING_DATE = (SELECT MAX(PHW2.LAUNCHING_DATE) FROM PNPU_H_WORKFLOW PHW2))";

            string filtre = (WORKFLOW_ID == 0) ? defaultWorkflowID : WORKFLOW_ID.ToString();

            string request = "SELECT PHS.ITERATION, PHS.WORKFLOW_ID, PHS.LAUNCHING_DATE, PHS.ENDING_DATE, PHS.ID_STATUT, PHS.CLIENT_ID, PHS.CLIENT_NAME, PHS.TYPOLOGY, PS.ORDER_ID, ";

            request += "PS.ID_PROCESS / (SELECT MAX(PS.ID_PROCESS) AS NB_PROCESS FROM PNPU_WORKFLOW PW INNER JOIN PNPU_STEP PS ON PW.WORKFLOW_ID = PS.WORKFLOW_ID WHERE PW.WORKFLOW_ID = " + filtre + " GROUP BY PS.WORKFLOW_ID) *100 AS PERCENTAGE_COMPLETUDE ";
            request += "FROM PNPU_H_STEP PHS, PNPU_STEP PS, PNPU_STEP PS2 WHERE PHS.LAUNCHING_DATE = (SELECT MAX(PHS2.LAUNCHING_DATE) FROM PNPU_H_STEP PHS2 WHERE PHS.WORKFLOW_ID = PHS2.WORKFLOW_ID AND PHS.CLIENT_ID = PHS2.CLIENT_ID) AND PHS.WORKFLOW_ID = " + filtre + " ";
            request += " AND PS.ORDER_ID = PS2.ORDER_ID AND PS.ID_PROCESS = PS2.ID_PROCESS AND PS.WORKFLOW_ID = PS2.WORKFLOW_ID AND PS.WORKFLOW_ID = PHS.WORKFLOW_ID AND PS.ID_PROCESS = PHS.ID_PROCESS ";
            request += "GROUP BY  PHS.ITERATION, PHS.WORKFLOW_ID, PHS.LAUNCHING_DATE, PHS.ENDING_DATE, PHS.ID_STATUT, PHS.CLIENT_ID, PHS.CLIENT_NAME, PHS.TYPOLOGY, PHS.ID_PROCESS, PS.ID_PROCESS, PS.ORDER_ID ORDER BY PHS.CLIENT_ID";

            DataSet   result = DataManagerSQLServer.GetDatas(request, ParamAppli.ConnectionStringBaseAppli);
            DataTable table  = result.Tables[0];

            IEnumerable <InfoClientStep> listTest = table.DataTableToList <InfoClientStep>();

            return(listTest);
        }
示例#25
0
        /// <summary>
        /// Le but de cette fonction est de déterminer les dépendances de de niveau 1 pour les packs livrés dans le HF.
        /// On détecte les tâches CCT dépendantes car au niveau 1 on va récupérer tout le contenu des tâches dépendantes qui manquent sur l'environnement client.
        /// </summary>
        /// <param name="lTacheDepN2">Ce paramètre contient au retour de l'appel toutes les tâches</param>
        /// <returns></returns>
        private bool RechercheDepN1(ref List <string> lTacheDepN2)
        {
            bool bResultat = true;
            DataManagerAccess    dmaManagerAccess = null;
            DataManagerSQLServer dmsManagerSQL    = null;
            List <string>        lTacheCCTHF;
            List <string>        lTacheDepN1;
            string  sRequete;
            bool    bPremierElement = true;
            DataSet dsDataSet       = null;
            string  sNomMdb;
            string  sTacheCCT;
            string  sListeTacheCCT = string.Empty;

            try
            {
                lTacheDepN2.Clear();
                dmaManagerAccess = new DataManagerAccess();
                dmsManagerSQL    = new DataManagerSQLServer();
                lTacheCCTHF      = new List <string>();
                lTacheDepN1      = new List <string>();

                // Récupération de toutes les tâches CCT livrées dans le HF
                sRequete = "SELECT DISTINCT(CCT_TASK_ID) FROM M4RDL_PACKAGES";
                foreach (string sPathMdb in Process.listMDB)
                {
                    sNomMdb   = Path.GetFileName(sPathMdb);
                    dsDataSet = dmaManagerAccess.GetData(sRequete, sPathMdb);

                    if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                    {
                        foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                        {
                            sTacheCCT = drRow[0].ToString();
                            if (lTacheCCTHF.Contains(sTacheCCT) == false)
                            {
                                lTacheCCTHF.Add(sTacheCCT);
                                if (bPremierElement == true)
                                {
                                    bPremierElement = false;
                                }
                                else
                                {
                                    sListeTacheCCT += ",";
                                }

                                sListeTacheCCT += "'" + sTacheCCT + "'";
                            }
                        }
                    }
                }

                if (lTacheCCTHF.Count > 0)
                {
                    sRequete  = "SELECT CCT_TASK_ID, DEP_CCT_TASK_ID from M4CFR_VW_CCT_DEPENDANCES where ";
                    sRequete += "CCT_TASK_ID IN (" + sListeTacheCCT + ") ";
                    sRequete += "AND DEP_CCT_TASK_ID NOT IN (" + sListeTacheCCT + ") ";
                    sRequete += "AND DEP_CCT_TASK_ID not like '%DEF%' ";
                    sRequete += "AND CCT_OBJECT_TYPE+CCT_OBJECT_ID NOT IN ('PRESENTATIONSFR_DP_PAYROLL_CHANNEL','PRESENTATIONSCO_DP_PAYROLL_CHANNEL')";

                    dsDataSet = dmsManagerSQL.GetData(sRequete, ConnectionStringBaseRef);
                    if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                    {
                        using (var conn = new System.Data.SqlClient.SqlConnection(ParamAppli.ConnectionStringBaseAppli))
                        {
                            conn.Open();
                            using (var cmd = new System.Data.SqlClient.SqlCommand("INSERT INTO PNPU_DEPN1_REF (ID_H_WORKFLOW, CCT_TASK_ID, DEP_CCT_TASK_ID) VALUES( @WORKFLOW_ID, @CCT_TASK_ID,@DEP_CCT_TASK_ID)", conn))
                            {
                                cmd.Parameters.Add("@WORKFLOW_ID", SqlDbType.Int);
                                cmd.Parameters.Add("@CCT_TASK_ID", SqlDbType.VarChar, 30);
                                cmd.Parameters.Add("@DEP_CCT_TASK_ID", SqlDbType.VarChar, 30);

                                foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                                {
                                    sTacheCCT = drRow[0].ToString() + "*" + drRow[1].ToString();
                                    if (lTacheDepN1.Contains(sTacheCCT) == false)
                                    {
                                        lTacheDepN1.Add(sTacheCCT);
                                        if (lTacheDepN2.Contains(drRow[1].ToString()) == false)
                                        {
                                            lTacheDepN2.Add(drRow[1].ToString());
                                        }
                                        cmd.Parameters[0].Value = Process.WORKFLOW_ID;
                                        cmd.Parameters[1].Value = drRow[0].ToString();
                                        cmd.Parameters[2].Value = drRow[1].ToString();
                                        int rowsAffected = cmd.ExecuteNonQuery();
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Log(Process, this, ParamAppli.StatutError, ex.Message);
                bResultat = false;
            }

            return(bResultat);
        }
示例#26
0
        /// <summary>
        /// Le but de cette fonction est de déterminer les dépendances de de niveau 1 pour les packs livrés dans le HF.
        /// On détecte les tâches CCT dépendantes car au niveau 1 on va récupérer tout le contenu des tâches dépendantes qui manquent sur l'environnement client.
        /// </summary>
        /// <param name="iNiveau">Niveau de dépendance recherché.</param>
        /// <param name="sFiltreNiveauxPrec">Liste des tâches CCT des niveaux précédents, pour ne pas avoir de dépendance cyclique</param>
        /// <param name="sFiltreNiveauN">Liste des tâche CCT pour lesquelles on cherche les dépendances</param>
        /// <param name="sFiltreNiveauN1">Au retour contient la liste des tâches CCT dépendantes</param>
        /// <returns></returns>
        private bool RechercheDependances(int iNiveau, string sFiltreNiveauxPrec, string sFiltreNiveauN, ref string sFiltreNiveauN1)
        {
            bool   bResultat = true;
            string sTacheCCT;

            DataManagerSQLServer dmsManagerSQL = null;
            List <string>        lTacheCCT;
            string       sRequete;
            bool         bPremierElement;
            DataSet      dsDataSet           = null;
            const string CCT_OBJECT_TYPE_INT = "'WEB FILE','WEB LITERAL SOC'";



            string sListeTacheCCT = string.Empty;

            try
            {
                dmsManagerSQL = new DataManagerSQLServer();
                lTacheCCT     = new List <string>();



                if (sFiltreNiveauN != string.Empty)
                {
                    sRequete  = "SELECT A.CCT_TASK_ID,A.CCT_OBJECT_TYPE,A.CCT_OBJECT_ID,A.CCT_PARENT_OBJ_ID,A.DEP_CCT_TASK_ID,A.DEP_CCT_OBJECT_TYPE,A.DEP_CCT_OBJECT_ID,A.DEP_CCT_PARENT_OBJ_ID,A.DEP_CCT_ACTION_TYPE,A.DEP_CCT_PACK_TYPE,A.DEP_CCT_COMMAND_TYPE ";
                    sRequete += "FROM M4CFR_VW_CCT_DEPENDANCES A ";
                    sRequete += "INNER JOIN M4RDL_PACKAGES B ON (A.DEP_CCT_TASK_ID = B.CCT_TASK_ID) ";
                    sRequete += "INNER JOIN M4RDL_RAM_PACKS C ON (C.ID_PACKAGE = B.ID_PACKAGE) ";
                    sRequete += "WHERE A.CCT_TASK_ID IN (" + sFiltreNiveauN + ") ";
                    sRequete += "AND A.DEP_CCT_TASK_ID NOT IN (" + sFiltreNiveauN + ") ";
                    if (sFiltreNiveauxPrec != string.Empty)
                    {
                        sRequete += "AND A.DEP_CCT_TASK_ID NOT IN (" + sFiltreNiveauxPrec + ") ";
                    }
                    if (CCT_OBJECT_TYPE_INT != String.Empty)
                    {
                        sRequete += "AND A.CCT_OBJECT_TYPE NOT IN (" + CCT_OBJECT_TYPE_INT + ") ";
                    }
                    sRequete += "AND A.DEP_CCT_TASK_ID not like '%DEF%' ";
                    sRequete += "AND A.CCT_OBJECT_TYPE+A.CCT_OBJECT_ID NOT IN ('PRESENTATIONSFR_DP_PAYROLL_CHANNEL','PRESENTATIONSCO_DP_PAYROLL_CHANNEL') ";


                    dsDataSet = dmsManagerSQL.GetData(sRequete, ConnectionStringBaseRef);
                    if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                    {
                        using (var conn = new System.Data.SqlClient.SqlConnection(ParamAppli.ConnectionStringBaseAppli))
                        {
                            conn.Open();
                            sRequete = "DELETE FROM PNPU_DEP_REF WHERE ID_H_WORKFLOW = " + Process.WORKFLOW_ID.ToString() + " AND  NIV_DEP = " + iNiveau.ToString();
                            using (var cmd = new System.Data.SqlClient.SqlCommand(sRequete, conn))
                            {
                                int rowsAffected = cmd.ExecuteNonQuery();
                            }

                            sRequete  = "INSERT INTO PNPU_DEP_REF (";
                            sRequete += "ID_H_WORKFLOW";
                            sRequete += ",NIV_DEP";
                            sRequete += ",CCT_TASK_ID";
                            sRequete += ",CCT_OBJECT_TYPE";
                            sRequete += ",CCT_OBJECT_ID";
                            sRequete += ",CCT_PARENT_OBJ_ID";
                            sRequete += ",DEP_CCT_TASK_ID";
                            sRequete += ",DEP_CCT_OBJECT_TYPE";
                            sRequete += ",DEP_CCT_OBJECT_ID";
                            sRequete += ",DEP_CCT_PARENT_OBJ_ID";
                            sRequete += ",DEP_CCT_ACTION_TYPE";
                            sRequete += ",DEP_CCT_PACK_TYPE";
                            sRequete += ",DEP_CCT_COMMAND_TYPE";
                            sRequete += ") VALUES (";
                            sRequete += "@ID_H_WORKFLOW";
                            sRequete += ",@NIV_DEP";
                            sRequete += ",@CCT_TASK_ID";
                            sRequete += ",@CCT_OBJECT_TYPE";
                            sRequete += ",@CCT_OBJECT_ID";
                            sRequete += ",@CCT_PARENT_OBJ_ID";
                            sRequete += ",@DEP_CCT_TASK_ID";
                            sRequete += ",@DEP_CCT_OBJECT_TYPE";
                            sRequete += ",@DEP_CCT_OBJECT_ID";
                            sRequete += ",@DEP_CCT_PARENT_OBJ_ID";
                            sRequete += ",@DEP_CCT_ACTION_TYPE";
                            sRequete += ",@DEP_CCT_PACK_TYPE";
                            sRequete += ",@DEP_CCT_COMMAND_TYPE ";
                            sRequete += ")";

                            using (var cmd = new System.Data.SqlClient.SqlCommand(sRequete, conn))
                            {
                                cmd.Parameters.Add("@ID_H_WORKFLOW", SqlDbType.Int);
                                cmd.Parameters.Add("@NIV_DEP", SqlDbType.Int);
                                cmd.Parameters.Add("@CCT_TASK_ID", SqlDbType.VarChar, 30);
                                cmd.Parameters.Add("@CCT_OBJECT_TYPE", SqlDbType.VarChar, 30);
                                cmd.Parameters.Add("@CCT_OBJECT_ID", SqlDbType.VarChar, 255);
                                cmd.Parameters.Add("@CCT_PARENT_OBJ_ID", SqlDbType.VarChar, 255);
                                cmd.Parameters.Add("@DEP_CCT_TASK_ID", SqlDbType.VarChar, 30);
                                cmd.Parameters.Add("@DEP_CCT_OBJECT_TYPE", SqlDbType.VarChar, 30);
                                cmd.Parameters.Add("@DEP_CCT_OBJECT_ID", SqlDbType.VarChar, 255);
                                cmd.Parameters.Add("@DEP_CCT_PARENT_OBJ_ID", SqlDbType.VarChar, 255);
                                cmd.Parameters.Add("@DEP_CCT_ACTION_TYPE", SqlDbType.VarChar, 10);
                                cmd.Parameters.Add("@DEP_CCT_PACK_TYPE", SqlDbType.VarChar, 255);
                                cmd.Parameters.Add("@DEP_CCT_COMMAND_TYPE ", SqlDbType.Decimal);

                                bPremierElement = true;
                                sFiltreNiveauN1 = string.Empty;
                                foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                                {
                                    sTacheCCT = drRow[4].ToString();
                                    if (lTacheCCT.Contains(sTacheCCT) == false)
                                    {
                                        lTacheCCT.Add(sTacheCCT);
                                        if (bPremierElement == true)
                                        {
                                            bPremierElement = false;
                                        }
                                        else
                                        {
                                            sFiltreNiveauN1 += ",";
                                        }

                                        sFiltreNiveauN1 += "'" + sTacheCCT + "'";
                                    }

                                    cmd.Parameters[0].Value = Process.WORKFLOW_ID;
                                    cmd.Parameters[1].Value = iNiveau;
                                    for (int iCpt = 0; iCpt < 11; iCpt++)
                                    {
                                        cmd.Parameters[iCpt + 2].Value = drRow[iCpt];
                                    }

                                    int rowsAffected = cmd.ExecuteNonQuery();
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Log(Process, this, ParamAppli.StatutError, ex.Message);
                bResultat = false;
            }

            return(bResultat);
        }
示例#27
0
        /// <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          sPathMdb         = Process.MDBCourant;
            string          sRequete         = string.Empty;
            DataSet         dsDataSet        = null;
            List <string[]> lListeITEMS      = new List <string[]>();
            string          sRequeteControle = string.Empty;
            bool            bPremierElement;
            bool            bItemTrouve;

            DataManagerAccess    dmaManagerAccess = null;
            DataManagerSQLServer dmsManagerSQL    = null;

            try
            {
                if (ConnectionStringBaseRef != string.Empty)
                {
                    dmaManagerAccess = new DataManagerAccess();

                    sRequeteControle = "SELECT ID_DMD_COMPONENT, ID_DMD_GROUP FROM M4RCH_DMD_GRP_CMP WHERE ID_DMD_GROUP<> 'DMD_INC_VAL_MSS' AND ID_DMD_COMPONENT IN (";
                    bPremierElement  = true;

                    // Recherche des items de paie livrés
                    sRequete = "SELECT A.ID_PACKAGE AS ID_PACKAGE, A.ID_OBJECT AS ID_OBJECT, B.ID_DMD_COMPONENT AS ID_DMD_COMPONENT FROM M4RDL_PACK_CMDS A, M4RCH_ITEMS B WHERE A.ID_PACKAGE LIKE '%_L' AND A.ID_CLASS='ITEM' AND (A.ID_OBJECT LIKE '%HRPERIOD_CALC.%' OR A.ID_OBJECT LIKE '%HRROLE_CALC.%') AND A.CMD_ACTIVE = -1 AND B.ID_TI + '.' + B.ID_ITEM = A.ID_OBJECT ";

                    dsDataSet = dmaManagerAccess.GetData(sRequete, sPathMdb);

                    if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                    {
                        foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                        {
                            if (bPremierElement == true)
                            {
                                bPremierElement = false;
                            }
                            else
                            {
                                sRequeteControle += ",";
                            }

                            if (drRow[2].ToString() != string.Empty)
                            {
                                sRequeteControle += "'" + drRow[2].ToString() + "'";
                            }
                            else
                            {
                                sRequeteControle += "'" + drRow[1].ToString().Substring(drRow[1].ToString().LastIndexOf(".") + 1) + "'";
                            }

                            bItemTrouve = false;
                            for (int elt = 0; elt < lListeITEMS.Count && bItemTrouve == false; elt++)
                            {
                                if (lListeITEMS[elt][0] == drRow[1].ToString())
                                {
                                    lListeITEMS[elt][1] += " / " + drRow[0].ToString();
                                    bItemTrouve          = true;
                                }
                            }

                            if (bItemTrouve == false)
                            {
                                string sDMD_COMPONENT = string.Empty;


                                if (drRow[2].ToString() != string.Empty)
                                {
                                    sDMD_COMPONENT = drRow[2].ToString();
                                }
                                else
                                {
                                    sDMD_COMPONENT = drRow[1].ToString().Substring(drRow[1].ToString().LastIndexOf(".") + 1);
                                }

                                lListeITEMS.Add(new string[] { drRow[1].ToString(), drRow[0].ToString(), sDMD_COMPONENT, string.Empty, string.Empty });
                            }
                        }
                        dsDataSet.Clear();
                    }

                    // Recherche des payroll items livrés
                    sRequete  = "SELECT A.ID_PACKAGE AS ID_PACKAGE, B.ID_TI + '.' + B.ID_ITEM AS ID_OBJECT, B.ID_DMD_COMPONENT AS ID_DMD_COMPONENT FROM M4RDL_PACK_CMDS A, M4RCH_ITEMS B, M4RCH_PICOMPONENTS C WHERE A.ID_PACKAGE LIKE '%_L' AND A.ID_CLASS='PAYROLL ITEM' AND A.CMD_ACTIVE = -1 AND C.ID_T3 + '.' + C.ID_PAYROLL_ITEM = A.ID_OBJECT AND B.ID_TI =C.ID_TI AND B.ID_ITEM=C.ID_ITEM";
                    dsDataSet = dmaManagerAccess.GetData(sRequete, sPathMdb);

                    if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                    {
                        foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                        {
                            if (bPremierElement == true)
                            {
                                bPremierElement = false;
                            }
                            else
                            {
                                sRequeteControle += ",";
                            }

                            if (drRow[2].ToString() != string.Empty)
                            {
                                sRequeteControle += "'" + drRow[2].ToString() + "'";
                            }
                            else
                            {
                                sRequeteControle += "'" + drRow[1].ToString().Substring(drRow[1].ToString().LastIndexOf(".") + 1) + "'";
                            }

                            bItemTrouve = false;
                            for (int elt = 0; elt < lListeITEMS.Count && bItemTrouve == false; elt++)
                            {
                                if (lListeITEMS[elt][0] == drRow[1].ToString())
                                {
                                    lListeITEMS[elt][1] += " / " + drRow[0].ToString();
                                    bItemTrouve          = true;
                                }
                            }

                            if (bItemTrouve == false)
                            {
                                string sDMD_COMPONENT = string.Empty;


                                if (drRow[2].ToString() != string.Empty)
                                {
                                    sDMD_COMPONENT = drRow[2].ToString();
                                }
                                else
                                {
                                    sDMD_COMPONENT = drRow[1].ToString().Substring(drRow[1].ToString().LastIndexOf(".") + 1);
                                }

                                lListeITEMS.Add(new string[] { drRow[1].ToString(), drRow[0].ToString(), sDMD_COMPONENT, string.Empty, string.Empty });
                            }
                        }
                        dsDataSet.Clear();
                    }

                    // Recherche des niveaux de saisie dans le mdb
                    if (bPremierElement == false)
                    {
                        sRequeteControle += ") ORDER BY ID_DMD_COMPONENT, ID_DMD_GROUP";

                        dsDataSet = dmaManagerAccess.GetData(sRequeteControle, sPathMdb);

                        if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                        {
                            foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                            {
                                bItemTrouve = false;
                                for (int elt = 0; elt < lListeITEMS.Count && bItemTrouve == false; elt++)
                                {
                                    if (lListeITEMS[elt][2] == drRow[0].ToString())
                                    {
                                        if (lListeITEMS[elt][3] == string.Empty)
                                        {
                                            lListeITEMS[elt][3] = "*";
                                        }
                                        lListeITEMS[elt][3] += drRow[1].ToString() + "*";
                                        bItemTrouve          = true;
                                    }
                                }
                            }
                        }

                        // Recherche des niveaux de saisie dans la base de référence ou la base client
                        dmsManagerSQL = new DataManagerSQLServer();
                        if (Process.PROCESS_ID == ParamAppli.ProcessControlePacks)
                        {
                            dsDataSet = dmsManagerSQL.GetData(sRequeteControle, ConnectionStringBaseRef);
                        }
                        else
                        {
                            dsDataSet = dmsManagerSQL.GetData(sRequeteControle, ParamAppli.ListeInfoClient[Process.CLIENT_ID].ConnectionStringQA1);
                        }

                        if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                        {
                            foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                            {
                                bItemTrouve = false;
                                for (int elt = 0; elt < lListeITEMS.Count && bItemTrouve == false; elt++)
                                {
                                    if (lListeITEMS[elt][2] == drRow[0].ToString())
                                    {
                                        if (lListeITEMS[elt][4] == string.Empty)
                                        {
                                            lListeITEMS[elt][4] = "*";
                                        }
                                        lListeITEMS[elt][4] += drRow[1].ToString() + "*";
                                        bItemTrouve          = true;
                                    }
                                }
                            }
                        }

                        for (int elt = 0; elt < lListeITEMS.Count; elt++)
                        {
                            if ((lListeITEMS[elt][3] != lListeITEMS[elt][4]) && (lListeITEMS[elt][4] != string.Empty))
                            {
                                string sListeElement = VerifieListe(lListeITEMS[elt][4], lListeITEMS[elt][3]);

                                if (sListeElement != string.Empty)
                                {
                                    if (sListeElement.IndexOf(",") > -1)
                                    {
                                        Process.AjouteRapport("Perte des niveaux de saisie " + sListeElement + " pour l'item " + lListeITEMS[elt][0] + " (DMD_COMPONENT " + lListeITEMS[elt][2] + ") livré dans le(s) pack(s) " + lListeITEMS[elt][1]);
                                    }
                                    else
                                    {
                                        Process.AjouteRapport("Perte du niveau de saisie " + sListeElement + " pour l'item " + lListeITEMS[elt][0] + " (DMD_COMPONENT " + lListeITEMS[elt][2] + ") livré dans le(s) pack(s) " + lListeITEMS[elt][1]);
                                    }
                                    bResultat = ResultatErreur;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Log(Process, this, ParamAppli.StatutError, ex.Message);
                bResultat = ParamAppli.StatutError;
            }

            return(bResultat);
        }
示例#28
0
        /// <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 sPathMdb  = Process.MDBCourant;
            string sID_SYNONYM;
            Dictionary <string, string> dicListItems = new Dictionary <string, string>();
            bool   bItemAControler   = false;
            string sRequeteSqlServer = string.Empty;

            DataManagerAccess dmaManagerAccess = null;

            try
            {
                dmaManagerAccess = new DataManagerAccess();
                DataSet dsDataSet = dmaManagerAccess.GetData("select ID_ITEM, ID_SYNONYM FROM M4RCH_ITEMS WHERE (ID_TI LIKE '%HRPERIOD%CALC' OR ID_TI LIKE '%HRROLE%CALC') AND ID_TI NOT LIKE '%DIF%' AND  ID_SYNONYM <> 0", sPathMdb);

                if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                {
                    sRequeteSqlServer = "select ID_ITEM, ID_SYNONYM FROM M4RCH_ITEMS WHERE (ID_TI LIKE '%HRPERIOD%CALC' OR ID_TI LIKE '%HRROLE%CALC') ";
                    // Ne faire que si pack standard
                    sRequeteSqlServer += "AND(ID_TI LIKE 'SCO%' OR ID_TI LIKE 'SFR%' OR ID_TI LIKE 'CFR%') ";

                    sRequeteSqlServer += "AND ID_TI NOT LIKE '%DIF%' AND (";

                    foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                    {
                        sID_SYNONYM = drRow[1].ToString();
                        if (dicListItems.ContainsKey(sID_SYNONYM) == false)
                        {
                            dicListItems.Add(sID_SYNONYM, drRow[0].ToString());
                            if (bItemAControler == false)
                            {
                                bItemAControler = true;
                            }
                            else
                            {
                                sRequeteSqlServer += "OR ";
                            }

                            sRequeteSqlServer += " (ID_SYNONYM = " + drRow[1].ToString() + " AND ID_ITEM <> '" + drRow[0].ToString() + "') ";
                        }
                    }

                    if (bItemAControler == true)
                    {
                        sRequeteSqlServer += ")";
                        DataManagerSQLServer dmasqlManagerSQL = new DataManagerSQLServer();

                        // Contrôle sur la base de référence si pack standard, sinon sur base client
                        if (Process.STANDARD == true)
                        {
                            dsDataSet = dmasqlManagerSQL.GetData(sRequeteSqlServer, ParamAppli.ConnectionStringBaseRef[Process.TYPOLOGY]);
                        }
                        else
                        {
                            dsDataSet = dmasqlManagerSQL.GetData(sRequeteSqlServer, ParamAppli.ListeInfoClient[Process.CLIENT_ID].ConnectionStringQA1);
                        }

                        if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                        {
                            bResultat = ResultatErreur;
                            foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                            {
                                Process.AjouteRapport("L'ID_SYNONYM de l'item " + dicListItems[drRow[1].ToString()] + "(" + drRow[1].ToString() + ") est déja utilisé pour l'item " + drRow[0].ToString() + ".");
                            }
                        }
                    }
                }
            }

            catch (Exception ex)
            {
                Logger.Log(Process, this, ParamAppli.StatutError, ex.Message);
                bResultat = ParamAppli.StatutError;
            }

            return(bResultat);
        }
        /// <summary>
        /// Méthode vérifiant que les M4O modifiés par un pack ne sont pas des objets technos.
        /// <returns>Retourne un booléen, vrai si le contrôle est concluant et sinon faux.</returns>
        /// <param name="lListeM4O">Contient la liste des M4O livrés et des M4O des NODES livrés.</param>
        /// <param name="lListeNODESTRUCTURE">Contient la liste des NODE STRUCTURES livrées et des NODES STRUCTURES des ITEM livrés.</param>
        /// <param name="sIDPackageCourant">Contient le nom du pack courant.</param>
        /// </summary>
        private bool ControleM4OModifiesPack(List <string> lListeM4O, List <string> lListeNODESTRUCTURE, string sIDPackageCourant)
        {
            DataManagerAccess    dmaManagerAccess = null;
            DataManagerSQLServer dmsManagerSQL    = null;
            bool    bPremier  = true;
            string  sRequete  = string.Empty;
            string  sPathMdb  = Process.MDBCourant;
            DataSet dsDataSet = null;
            bool    bResultat = true;

            try
            {
                dmsManagerSQL    = new DataManagerSQLServer();
                dmaManagerAccess = new DataManagerAccess();

                // Si la liste n'est pas vide on va rechercher les M4O à partir des NODE STRUCTURES modifiées.
                if (lListeNODESTRUCTURE.Count > 0)
                {
                    sRequete = "select ID_T3,ID_TI from M4RCH_NODES where ID_TI IN (";
                    bPremier = true;
                    foreach (string s in lListeNODESTRUCTURE)
                    {
                        if (bPremier == true)
                        {
                            bPremier = false;
                        }
                        else
                        {
                            sRequete += ",";
                        }

                        sRequete += "'" + s + "'";
                    }
                    sRequete += ") UNION select ID_NODE_T3 AS ID_T3,ID_TI from M4RCH_OVERWRITE_NO where ID_TI IN (";
                    bPremier  = true;
                    foreach (string s in lListeNODESTRUCTURE)
                    {
                        if (bPremier == true)
                        {
                            bPremier = false;
                        }
                        else
                        {
                            sRequete += ",";
                        }

                        sRequete += "'" + s + "'";
                    }
                    sRequete += ")";


                    dsDataSet = dmaManagerAccess.GetData(sRequete, sPathMdb);
                    if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                    {
                        foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                        {
                            lListeNODESTRUCTURE.Remove(drRow[1].ToString()); // Je supprime les NS dont on trouve le M4O dans le MDB
                            if (lListeM4O.Contains(drRow[0].ToString()) == false)
                            {
                                lListeM4O.Add(drRow[0].ToString());
                            }
                        }
                        dsDataSet.Clear();
                    }

                    // S'il reste des NODE STRUCTURES pour lesquelles nous n'avons pas trouvé le M4O dans le MDB on recherche dans la base de ref.
                    if (lListeNODESTRUCTURE.Count > 0)
                    {
                        sRequete = "select ID_T3,ID_TI from M4RCH_NODES where ID_TI IN (";
                        bPremier = true;
                        foreach (string s in lListeNODESTRUCTURE)
                        {
                            if (bPremier == true)
                            {
                                bPremier = false;
                            }
                            else
                            {
                                sRequete += ",";
                            }

                            sRequete += "'" + s + "'";
                        }
                        sRequete += ") UNION select ID_NODE_T3 AS ID_T3,ID_TI from M4RCH_OVERWRITE_NO where ID_TI IN (";
                        bPremier  = true;
                        foreach (string s in lListeNODESTRUCTURE)
                        {
                            if (bPremier == true)
                            {
                                bPremier = false;
                            }
                            else
                            {
                                sRequete += ",";
                            }

                            sRequete += "'" + s + "'";
                        }
                        sRequete += ")";

                        if (ConnectionStringBaseRef != string.Empty)
                        {
                            dsDataSet = dmsManagerSQL.GetData(sRequete, ConnectionStringBaseRef);
                            if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                            {
                                foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                                {
                                    lListeNODESTRUCTURE.Remove(drRow[1].ToString()); // Je supprime les NS dont on trouve le M4O dans le MDB
                                    if (lListeM4O.Contains(drRow[0].ToString()) == false)
                                    {
                                        lListeM4O.Add(drRow[0].ToString());
                                    }
                                }
                                dsDataSet.Clear();
                            }
                        }
                    }
                }

                // On va rechercher les M4O de la liste pour vérifier si ce sont des objets technos.

                // On cherche déja dans le MDB
                if (lListeM4O.Count > 0)
                {
                    sRequete = "select ID_T3, N_T3FRA, OWNER_FLAG from M4RCH_T3S where ID_T3 IN (";
                    bPremier = true;
                    foreach (string s in lListeM4O)
                    {
                        if (bPremier == true)
                        {
                            bPremier = false;
                        }
                        else
                        {
                            sRequete += ",";
                        }

                        sRequete += "'" + s + "'";
                    }
                    sRequete += ")";

                    dsDataSet = dmaManagerAccess.GetData(sRequete, sPathMdb);
                    if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                    {
                        foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                        {
                            lListeM4O.Remove(drRow[0].ToString()); // Je supprime les M4O trouvés dans le MDB

                            // Controle si c'est un objet techno
                            if ((drRow[2].ToString() == "1") || (drRow[0].ToString().Substring(0, 4) == "SRTC"))
                            {
                                Process.AjouteRapport("Modification de l'objet techno " + drRow[0].ToString() + " dans le pack " + sIDPackageCourant + ".");
                                bResultat = false;
                            }
                        }
                    }

                    // S'il reste des M4O non trouvés dans le MDB on va chercher dans la base de ref.
                    if (lListeM4O.Count > 0)
                    {
                        sRequete = "select ID_T3, N_T3FRA, OWNER_FLAG from M4RCH_T3S where ID_T3 IN (";
                        bPremier = true;
                        foreach (string s in lListeM4O)
                        {
                            if (bPremier == true)
                            {
                                bPremier = false;
                            }
                            else
                            {
                                sRequete += ",";
                            }

                            sRequete += "'" + s + "'";
                        }
                        sRequete += ")";

                        if (ConnectionStringBaseRef != string.Empty)
                        {
                            dsDataSet = dmsManagerSQL.GetData(sRequete, ConnectionStringBaseRef);
                            if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                            {
                                foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                                {
                                    lListeM4O.Remove(drRow[0].ToString()); // Je supprime les M4O trouvés dans le MDB

                                    // Controle si c'est un objet techno
                                    if ((drRow[2].ToString() == "1") || (drRow[0].ToString().Substring(0, 4) == "SRTC"))
                                    {
                                        Process.AjouteRapport("Modification de l'objet techno " + drRow[0].ToString() + " dans le pack " + sIDPackageCourant + ".");
                                        bResultat = false;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                // TODO, loguer l'exception
                bResultat = true;
            }

            return(bResultat);
        }
        /// <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          sPathMdb  = Process.MDBCourant;
            string          sRequete;
            List <string[]> lListeAControler = new List <string[]>();
            bool            bPremierElement  = true;
            string          sItem;
            DataSet         dsDataSet;

            string sListeItemsLivres = string.Empty;

            DataManagerAccess dmaManagerAccess = null;

            try
            {
                dmaManagerAccess = new DataManagerAccess();


                // Recherche des items de paie livrés dans les packs du mdb
                sRequete  = "SELECT ID_OBJECT FROM M4RDL_PACK_CMDS WHERE ID_CLASS = 'ITEM' AND CMD_ACTIVE=-1 AND ID_OBJECT LIKE '%HR%CALC%' AND ID_OBJECT NOT LIKE '%DIF%'";
                dsDataSet = dmaManagerAccess.GetData(sRequete, sPathMdb);
                if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                {
                    foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                    {
                        if (sListeItemsLivres != string.Empty)
                        {
                            sListeItemsLivres += ",";
                        }
                        sListeItemsLivres += "'" + drRow[0].ToString() + "'";
                    }
                }


                sRequete = "select ID_TI, ID_ITEM, ID_ITEM_USED_TI, ID_ITEM_USED FROM M4RCH_TOTAL_REF A";
                // On livre le total
                sRequete += " WHERE (A.ID_TI+'.'+A.ID_ITEM IN (" + sListeItemsLivres + ")) ";
                sRequete += " AND  (A.ID_ITEM_USED_TI+'.'+ID_ITEM_USED NOT IN (" + sListeItemsLivres + ")) ";

                // Et il existe des items du total qu'on ne livre pas
                sRequete += " AND (EXISTS (SELECT * FROM M4RCH_TOTAL_REF C WHERE A.ID_TI=C.ID_TI AND A.ID_ITEM=C.ID_ITEM AND C.ID_ITEM_USED_TI+'.'+C.ID_ITEM_USED NOT IN (" + sListeItemsLivres + ")))";

                dsDataSet = dmaManagerAccess.GetData(sRequete, sPathMdb);

                if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                {
                    sRequete = "SELECT ID_TI + '.' + ID_ITEM FROM M4RCH_ITEMS WHERE ID_TI + '.' + ID_ITEM IN (";

                    // Recherche les items utilisés dans les totaux
                    foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                    {
                        sItem = drRow[2].ToString() + "." + drRow[3].ToString();

                        lListeAControler.Add(new string[] { sItem, drRow[0].ToString() + "." + drRow[1].ToString() });

                        if (bPremierElement == true)
                        {
                            bPremierElement = false;
                        }
                        else
                        {
                            sRequete += ",";
                        }

                        sRequete += "'" + sItem + "'";
                    }
                    sRequete += ")";
                }

                // Recherche des items sur la base de ref
                if (lListeAControler.Count > 0)
                {
                    DataManagerSQLServer dmsManagerSQL = new DataManagerSQLServer();
                    dsDataSet = dmsManagerSQL.GetData(sRequete, ConnectionStringBaseRef);
                    if ((dsDataSet != null) && (dsDataSet.Tables[0].Rows.Count > 0))
                    {
                        foreach (DataRow drRow in dsDataSet.Tables[0].Rows)
                        {
                            for (int iCpt = 0; iCpt < lListeAControler.Count; iCpt++)
                            {
                                if (lListeAControler[iCpt][0] == drRow[0].ToString())
                                {
                                    lListeAControler.RemoveAt(iCpt);
                                    iCpt--;
                                }
                            }
                        }
                    }

                    if (lListeAControler.Count > 0)
                    {
                        bResultat = ResultatErreur;
                        foreach (string[] sElements  in lListeAControler)
                        {
                            Process.AjouteRapport("Le total " + sElements[1] + " utilise un item inexistant (" + sElements[0] + ").");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Log(Process, this, ParamAppli.StatutError, ex.Message);
                bResultat = ParamAppli.StatutError;
            }

            return(bResultat);
        }