Ejemplo n.º 1
0
        public override CResultAErreur BeforeSave(CContexteSauvegardeObjetsDonnees contexte, IDataAdapter adapter, DataRowState etatsAPrendreEnCompte)
        {
            CResultAErreur result = base.BeforeSave(contexte, adapter, etatsAPrendreEnCompte);

            if (!result)
            {
                return(result);
            }

            DataTable table = contexte.ContexteDonnee.Tables[GetNomTable()];

            if (table == null)
            {
                return(result);
            }

            ArrayList lstRows = new System.Collections.ArrayList(table.Rows);

            foreach (DataRow row in lstRows)
            {
                if (row.RowState == DataRowState.Added)
                {
                    // Recherche du BindingId lorsqu'il est négatif
                    CSpvLienAccesAlarme spvLienAccesAlarme = new CSpvLienAccesAlarme(row);
                    int?nLienId = spvLienAccesAlarme.BindingId;
                    if (nLienId < 0)    // il faut le trouver
                    {
                        if (spvLienAccesAlarme.AccesAlarmeOne.SpvEquip != null)
                        {
                            spvLienAccesAlarme.BindingId = spvLienAccesAlarme.AccesAlarmeOne.SpvEquip.Id;
                        }
                        else if (spvLienAccesAlarme.AccesAlarmeOne.SpvSite != null)
                        {
                            spvLienAccesAlarme.BindingId = spvLienAccesAlarme.AccesAlarmeOne.SpvSite.Id;
                        }
                        else if (spvLienAccesAlarme.AccesAlarmeOne.SpvLiai != null)
                        {
                            spvLienAccesAlarme.BindingId = spvLienAccesAlarme.AccesAlarmeOne.SpvLiai.Id;
                        }
                        else
                        {
                            spvLienAccesAlarme.BindingId = null;    // pas normal
                        }
                    }

                    if (spvLienAccesAlarme.AccesAlarmeOne != spvLienAccesAlarme.SpvAccesAlarmeSysteme0())
                    {
                        // Création du message pour EmessEM
                        CSpvMessem spvMessem = new CSpvMessem(contexte.ContexteDonnee);
                        spvMessem.CreateNewInCurrentContexte();
                        if (!spvMessem.FormatMessAccesAlarme(spvLienAccesAlarme, row.RowState))
                        {
                            spvMessem.CancelCreate();
                        }
                    }
                }
            }
            return(result);
        }
Ejemplo n.º 2
0
        public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte)
        {
            CResultAErreur result = base.TraitementAvantSauvegarde(contexte);

            if (!result)
            {
                return(result);
            }

            DataTable table = contexte.Tables[GetNomTable()];

            if (table == null)
            {
                return(result);
            }

            ArrayList lstRows = new System.Collections.ArrayList(table.Rows);

            foreach (DataRow row in lstRows)
            {
                if (row.RowState == DataRowState.Modified)
                {
                    CSpvTypeq spvTypeq = new CSpvTypeq(row);
                    if ((string)row[CSpvTypeq.c_champTYPEQ_NOM, DataRowVersion.Original] !=
                        spvTypeq.Libelle)
                    {
                        foreach (CSpvEquip spvEquip in spvTypeq.Equipements)
                        {
                            spvEquip.LibelleTypeEquipement = spvTypeq.Libelle;
                        }
                    }

                    if ((bool)row[CSpvTypeq.c_champTYPEQ_TOSURV, DataRowVersion.Original] !=
                        spvTypeq.ASurveiller)
                    {
                        CSpvMessem spvMessem = new CSpvMessem(contexte);
                        spvMessem.CreateNewInCurrentContexte();
                        spvMessem.FormatMessModTypeq(spvTypeq.Id, spvTypeq.ASurveiller);
                    }
                }
                else if (row.RowState == DataRowState.Deleted)
                {
                    Int32 nId = (Int32)row[CSpvTypeq.c_champTYPEQ_ID, DataRowVersion.Original];
                    if (nId == CSpvTypeq.c_TypeEquipMediationId)
                    {
                        result.EmpileErreur(I.T("EQUIP MEDIATION is a system equipment type, we cannot erase it|50018"));
                    }
                    else
                    {
                        CSpvMessem spvMessem = new CSpvMessem(contexte);
                        spvMessem.CreateNewInCurrentContexte();
                        spvMessem.FormatMessDelTypeq(nId);
                    }
                }
            }
            return(result);
        }
Ejemplo n.º 3
0
		///////////////////////////////////////////////////////////////
		public override CResultAErreur VerifieDonnees ( CObjetDonnee objet )
		{
			CResultAErreur result = CResultAErreur.True;
			try
			{
				//TODO : Insérer la logique de vérification de donnée
                CSpvMessem spvMessem = objet as CSpvMessem;
                if (spvMessem.Message == null || spvMessem.Message.Length == 0 || spvMessem.Message == "")
                    result.EmpileErreur(I.T("Message for EmessEM could not be Empty|50021"));
			}
			catch ( Exception e )
			{
				result.EmpileErreur( new CErreurException ( e ) );
			}
			return result;
		}
Ejemplo n.º 4
0
        public override CResultAErreur TraitementApresSauvegarde(CContexteDonnee contexte, bool bOperationReussie)
        {
            CResultAErreur result = base.TraitementApresSauvegarde(contexte, bOperationReussie);

            if (!result)
            {
                return(result);
            }

            DataTable table = contexte.Tables[GetNomTable()];

            if (table == null)
            {
                return(result);
            }

            List <DataRow> lstCrees = (List <DataRow>)table.ExtendedProperties[CDivers.c_cleRowCrees];

            if (lstCrees == null)
            {
                return(result);
            }

            foreach (DataRow row in lstCrees)
            {
                CSpvEquip spvEquip = new CSpvEquip(row);
                if (spvEquip.ASuperviser)
                {
                    // Création du message dans MessEm
                    CSpvMessem spvMessem = new CSpvMessem(spvEquip.ContexteDonnee);
                    spvMessem.CreateNewInCurrentContexte();
                    spvMessem.FormatMessCreEquip(spvEquip.Id);
                }
            }

            return(result);
        }
Ejemplo n.º 5
0
        public override CResultAErreur TraitementApresSauvegarde(CContexteDonnee contexte, bool bOperationReussie)
        {
            CResultAErreur result = base.TraitementApresSauvegarde(contexte, bOperationReussie);

            if (!result)
            {
                return(result);
            }

            DataTable table = contexte.Tables[GetNomTable()];

            if (table == null)
            {
                return(result);
            }

            List <DataRow> lstCrees = (List <DataRow>)table.ExtendedProperties[CDivers.c_cleRowCrees];

            if (lstCrees == null)
            {
                return(result);
            }

            foreach (DataRow row in lstCrees)
            {
                CSpvSite spvSite = new CSpvSite(row);
                using (CContexteDonnee newContexte = new CContexteDonnee(IdSession, true, false))
                {
                    CSpvMessem messEM = new CSpvMessem(newContexte);
                    messEM.CreateNewInCurrentContexte();
                    messEM.FormatMessCreSite(spvSite.Id);
                    result = newContexte.SaveAll(true);
                }
            }
            return(result);
        }
Ejemplo n.º 6
0
        ////////////////////////////////////////////////////////////////////
        public static void PropagerCEquipement(CContexteDonnee contexte, Hashtable tableData, ref CResultAErreur result)
        {
            // Traitement CEquipementLogique
            DataTable dt = contexte.Tables[CEquipementLogique.c_nomTable];

            if (dt != null)
            {
                ArrayList rows = new ArrayList(dt.Rows);
                CSpvEquip spvEquip;

                foreach (DataRow row in rows)
                {
                    if (row.RowState != DataRowState.Unchanged)
                    {
                        switch (row.RowState)
                        {
                        case DataRowState.Added:
                        case DataRowState.Modified:
                            spvEquip = CSpvEquipServeur.GetSpvEquip(row);
                            if (spvEquip == null)
                            {
                                continue;
                            }

                            break;

                        default:
                            break;
                        }
                    }
                } //foreach (DataRow row in rows)
            }     // if (dt != null)

            // Traitement CSpvEquip
            DataTable table = contexte.Tables[CSpvEquip.c_nomTable];

            if (table == null)
            {
                return;
            }

            List <DataRow> lstCrees = (List <DataRow>)table.ExtendedProperties[CDivers.c_cleRowCrees];

            if (lstCrees != null)
            {
                table.ExtendedProperties.Clear();
            }

            lstCrees = new List <DataRow>();

            ArrayList lstRows = new System.Collections.ArrayList(table.Rows);

            foreach (DataRow row in lstRows)
            {
                // Stockage temporaire des enregistrements dans une liste
                // pour traitement dans AfterSave (messages pour
                // EmessEM). Car à ce niveau, on ne dispose pas de l'ID de l'équipement
                CSpvEquip spvEquip;
                if (row.RowState == DataRowState.Added)
                {
                    spvEquip = new CSpvEquip(row);
                    if (spvEquip.ASuperviser)
                    {
                        lstCrees.Add(row);
                    }

                    spvEquip.TraitementMetier(row.RowState);
                }
                else if (row.RowState == DataRowState.Modified)
                {
                    spvEquip = new CSpvEquip(row);
                    spvEquip.TraitementMetier(row.RowState);

                    if (((bool)spvEquip.Row[CSpvEquip.c_champEQUIP_TOSURV, DataRowVersion.Original] == true &&
                         !spvEquip.ASuperviser) || (
                            (bool)spvEquip.Row[CSpvEquip.c_champEQUIP_TOSURV, DataRowVersion.Original] == true &&
                            spvEquip.ASuperviser && (
                                spvEquip.Row[CSpvEquip.c_champEQUIP_ADDRIP, DataRowVersion.Original] !=
                                spvEquip.Row[CSpvEquip.c_champEQUIP_ADDRIP] || (
                                    spvEquip.Row[CSpvEquip.c_champEQUIP_EMNAME, DataRowVersion.Original] !=
                                    spvEquip.Row[CSpvEquip.c_champEQUIP_EMNAME]))))
                    {
                        // Message pour EmessEM
                        CSpvMessem spvMessem = new CSpvMessem(spvEquip.ContexteDonnee);
                        spvMessem.CreateNewInCurrentContexte();
                        spvMessem.FormatMessDelEquip(spvEquip.Id,
                                                     (string)spvEquip.Row[CSpvEquip.c_champEQUIP_ADDRIP, DataRowVersion.Original],
                                                     (string)spvEquip.Row[CSpvEquip.c_champEQUIP_EMNAME, DataRowVersion.Original],
                                                     spvEquip.ASuperviser);
                    }

                    if (((bool)spvEquip.Row[CSpvEquip.c_champEQUIP_TOSURV, DataRowVersion.Original] == false &&
                         spvEquip.ASuperviser) || (
                            (bool)spvEquip.Row[CSpvEquip.c_champEQUIP_TOSURV, DataRowVersion.Original] == true &&
                            spvEquip.ASuperviser && (
                                spvEquip.Row[CSpvEquip.c_champEQUIP_ADDRIP, DataRowVersion.Original] !=
                                spvEquip.Row[CSpvEquip.c_champEQUIP_ADDRIP] || (
                                    spvEquip.Row[CSpvEquip.c_champEQUIP_EMNAME, DataRowVersion.Original] !=
                                    spvEquip.Row[CSpvEquip.c_champEQUIP_EMNAME]))))
                    {
                        // Message pour EmessEM
                        CSpvMessem spvMessem = new CSpvMessem(spvEquip.ContexteDonnee);
                        spvMessem.CreateNewInCurrentContexte();
                        spvMessem.FormatMessCreEquip(spvEquip.Id);
                    }
                }
                else if (row.RowState == DataRowState.Deleted)
                {
                    spvEquip = new CSpvEquip(row);
                    if ((bool)spvEquip.Row[CSpvEquip.c_champEQUIP_TOSURV, DataRowVersion.Original] == true)
                    {
                        // Message pour EmessEM
                        CSpvMessem spvMessem = new CSpvMessem(spvEquip.ContexteDonnee);
                        spvMessem.CreateNewInCurrentContexte();
                        spvMessem.FormatMessDelEquip(
                            (Int32)spvEquip.Row[CSpvEquip.c_champEQUIP_ID, DataRowVersion.Original],
                            (string)spvEquip.Row[CSpvEquip.c_champEQUIP_ADDRIP, DataRowVersion.Original],
                            (string)spvEquip.Row[CSpvEquip.c_champEQUIP_EMNAME, DataRowVersion.Original],
                            (bool)spvEquip.Row[CSpvEquip.c_champEQUIP_TOSURV, DataRowVersion.Original]);
                    }

                    if ((string)spvEquip.Row[CSpvEquip.c_champTYPEQ_NOM, DataRowVersion.Original] == CSpvTypeq.c_strTypeEquipMediation)
                    {
                        spvEquip.SuppressionTestEM(
                            (string)spvEquip.Row[CSpvEquip.c_champSITE_EQUIP_COMMENT, DataRowVersion.Original],
                            (string)spvEquip.Row[CSpvEquip.c_champEQUIP_INDEXSNMP, DataRowVersion.Original]);
                        CSpvTestem testEM = new CSpvTestem(spvEquip.ContexteDonnee);
                    }
                }
            }
            table.ExtendedProperties.Add(CDivers.c_cleRowCrees, lstCrees);
        }
Ejemplo n.º 7
0
        /*     public override IDataAdapter GetDataAdapter(DataRowState rowsPriseEnCharge, params string[] champsExclus)
         *   {
         *       IDataAdapter adapter = base.GetDataAdapter(rowsPriseEnCharge, champsExclus);
         *       C2iOracleDataAdapter oracleAdapter = adapter as C2iOracleDataAdapter;
         *       if (oracleAdapter != null)
         *       {
         *           oracleAdapter.RowUpdated += new OracleRowUpdatedEventHandler(OnRowUpdated);
         *       }
         *       return oracleAdapter;
         *   }
         *
         *   void OnRowUpdated(object sender, OracleRowUpdatedEventArgs e)
         *   {
         *       if (e.StatementType == StatementType.Insert)
         *       {
         *           CSpvLienAccesAlarme accesAccesc = new CSpvLienAccesAlarme(e.Row);
         *           OracleCommand cmd = e.Command.Connection.CreateCommand();
         *           cmd.Transaction = e.Command.Transaction;
         *           if (accesAccesc.Surveiller == false && accesAccesc.SpvAlarmgeree != null)
         *           {
         *               cmd.CommandText = "Begin SetMaskAdmAccess (" +
         *                   accesAccesc.Id + ",2); end;";
         *               cmd.ExecuteScalar();
         *           }
         *       }
         *   }*/

        public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte)
        {
            CResultAErreur result = base.TraitementAvantSauvegarde(contexte);

            if (!result)
            {
                return(result);
            }

            DataTable table = contexte.Tables[GetNomTable()];

            if (table == null)
            {
                return(result);
            }

            try
            {
                ArrayList lstRows = new System.Collections.ArrayList(table.Rows);
                foreach (DataRow row in lstRows)
                {
                    if (row.RowState == DataRowState.Modified)
                    {
                        Int32 acces1OriginalId = (Int32)row[CSpvLienAccesAlarme.c_champACCES1_ID, DataRowVersion.Original];
                        Int32 acces1CurrentId  = (Int32)row[CSpvLienAccesAlarme.c_champACCES1_ID, DataRowVersion.Current];
                        Int32 acces2OriginalId = (Int32)row[CSpvLienAccesAlarme.c_champACCES2_ID, DataRowVersion.Original];
                        Int32 acces2CurrentId  = (Int32)row[CSpvLienAccesAlarme.c_champACCES2_ID, DataRowVersion.Current];

                        if (acces1OriginalId != acces1CurrentId)
                        {
                            CSpvAccesAlarme acces1Original = new CSpvAccesAlarme(contexte);
                            if (acces1Original.ReadIfExists(acces1OriginalId))
                            {
                                acces1Original.AccesEtat = acces1Original.AccesEtat & 0xE;
                            }
                        }

                        if (acces2OriginalId != acces2CurrentId)
                        {
                            CSpvAccesAlarme acces2Original = new CSpvAccesAlarme(contexte);
                            if (acces2Original.ReadIfExists(acces2OriginalId))
                            {
                                acces2Original.AccesEtat = acces2Original.AccesEtat & 0xE;
                            }
                        }

                        // Mise à jour de la redondance de gravité dans l'enregistrement xxx_Rep.
                        CSpvLienAccesAlarme spvLienAccesAlarme = new CSpvLienAccesAlarme(row);
                        foreach (CSpvLienAccesAlarme_Rep spvLienAccesAlarmeRep in spvLienAccesAlarme.Acces_Accesc_Rep)
                        {
                            spvLienAccesAlarmeRep.CodeAlarmGrave = spvLienAccesAlarme.CodeGravite;
                        }

                        // Création du message à destination des IS lorsque la tempo
                        // de l'accès est modifiée
                        Int32?nOldDuree = (Int32?)row[CSpvLienAccesAlarme.c_champALARMGEREE_MIN, DataRowVersion.Original];
                        Int32?nNewDuree = spvLienAccesAlarme.DureeMin;
                        if (nOldDuree != null && nNewDuree != null && nOldDuree != nNewDuree &&
                            spvLienAccesAlarme.AccesAlarmeTwo.SpvEquip != null &&
                            spvLienAccesAlarme.AccesAlarmeTwo.SpvEquip.TypeEquipement.Id == CSpvTypeq.c_TypeCarteGTRId)
                        {
                            CSpvMessalrm spvMessAlrm = new CSpvMessalrm(contexte);
                            spvMessAlrm.CreateNewInCurrentContexte();
                            spvMessAlrm.MessageModifTempoPourSaturneIS(
                                spvLienAccesAlarme.AccesAlarmeTwo.SpvEquip.CommentairePourSituer,
                                spvLienAccesAlarme.AccesAlarmeTwo.NomAcces);
                        }
                    }

                    if (row.RowState == DataRowState.Added || row.RowState == DataRowState.Modified)
                    {
                        CSpvLienAccesAlarme spvLienAccesAlarme = new CSpvLienAccesAlarme(row);

                        CSpvAccesAlarme acces1 = new CSpvAccesAlarme(contexte);
                        CSpvAccesAlarme acces2 = new CSpvAccesAlarme(contexte);

                        if (acces1.ReadIfExists(spvLienAccesAlarme.AccesAlarmeOne.Id))
                        {
                            acces1.AccesEtat = acces1.AccesEtat | 1;
                        }

                        if (acces2.ReadIfExists(spvLienAccesAlarme.AccesAlarmeTwo.Id))
                        {
                            acces2.AccesEtat = acces2.AccesEtat | 1;
                        }


                        if (row.RowState == DataRowState.Added)
                        {
                            /*
                             * if (acces1.ReadIfExists(spvAccesAccesc.AccesAlarmeOne.Id))
                             *  spvAccesAccesc.SpvAlarmgeree = acces1.AlarmeGeree();*/

                            /* Sans doute ajouté pour le cas particulier des équipements de médiation
                             * à revoir car perturbe tous les autres cas
                             * if (spvLienAccesAlarme.AccesAlarmeOne != spvLienAccesAlarme.SpvAccesAlarmeSysteme0())
                             * {
                             *  spvLienAccesAlarme.SpvAlarmgeree = spvLienAccesAlarme.AccesAlarmeOne.AlarmeGeree();
                             *  spvLienAccesAlarme.BindingId = -3;  // Rechercher l'ID dans le before save
                             * }*/

                            CSpvLienAccesAlarme_Rep lienTest = new CSpvLienAccesAlarme_Rep(contexte);
                            if (!lienTest.ReadIfExists(spvLienAccesAlarme.Id))
                            {
                                CSpvLienAccesAlarme_Rep spvLienAccesAlarmeRep = new CSpvLienAccesAlarme_Rep(contexte);
                                if (!spvLienAccesAlarmeRep.ReadIfExists(spvLienAccesAlarme.Id))
                                {
                                    spvLienAccesAlarmeRep.LienAccesAlarmes = spvLienAccesAlarme;
                                    spvLienAccesAlarmeRep.CodeAlarmGrave   = spvLienAccesAlarme.CodeGravite;
                                    spvLienAccesAlarmeRep.CreateNewInCurrentContexte(new object[] { spvLienAccesAlarme.Id });

                                    if (spvLienAccesAlarme.SpvEquip != null &&
                                        spvLienAccesAlarme.SpvEquip.TypeEquipement.Id == CSpvTypeq.c_TypeEquipMediationId)
                                    {
                                        // Ne pas revalider la propriété AlarmCategory sur CSpvLienAccesAlarme_Rep
                                        // elle pose problème avec la contrainte check lorsque le framework
                                        // la remplit automatiquement avec espace lorsqu'elle est null.
                                        spvLienAccesAlarmeRep.Row[CSpvLienAccesAlarme_Rep.c_champALARM_CL] = CSpvEvenementReseau.c_strClasseSYST;
                                        int nAlarmNumObj = Convert.ToInt32(spvLienAccesAlarme.SpvEquip.IndexSnmp);
                                        spvLienAccesAlarmeRep.AlarmNumObj = nAlarmNumObj;
                                        spvLienAccesAlarmeRep.AlarmNumAl  = spvLienAccesAlarme.SpvEquip.CommentairePourSituer;
                                        //Vérifier que les alarmes système fonctionnent sans la mise à jour
                                        //ci-dessous
                                        //spvLienAccesAlarmeRep.EQUIP_ID = spvLienAccesAlarme.SpvEquip.Id;
                                    }
                                }
                            }
                        }
                        else if (row.RowState == DataRowState.Modified)
                        {
                            // Constitution du message pour EmessEM
                            bool  bOldASurveiller = (bool)row[CSpvLienAccesAlarme.c_champALARMGEREE_TOSURV, DataRowVersion.Original];
                            bool  bNewASurveiller = spvLienAccesAlarme.Surveiller;
                            Int32?nOldDureeMin    = (Int32?)row[CSpvLienAccesAlarme.c_champALARMGEREE_MIN, DataRowVersion.Original];
                            Int32?nNewDureeMin    = spvLienAccesAlarme.DureeMin;
                            Int32?nOldFreqPeriode = (Int32?)row[CSpvLienAccesAlarme.c_champALARMGEREE_FREQD, DataRowVersion.Original];
                            Int32?nNewFreqPeriode = spvLienAccesAlarme.FreqPeriod;
                            Int32?nOldFreqNb      = (Int32?)row[CSpvLienAccesAlarme.c_champALARMGEREE_FREQN, DataRowVersion.Original];
                            Int32?nNewFreqNb      = spvLienAccesAlarme.FreqNb;

                            if (bOldASurveiller != bNewASurveiller ||
                                nOldDureeMin != nNewDureeMin ||
                                nOldFreqPeriode != nNewFreqPeriode ||
                                nOldFreqNb != nNewFreqNb)
                            {
                                CSpvMessem spvMessem = new CSpvMessem(contexte);
                                spvMessem.CreateNewInCurrentContexte();
                                if (!spvMessem.FormatMessAccesAlarme(spvLienAccesAlarme, row.RowState))
                                {
                                    spvMessem.CancelCreate();
                                }
                            }
                        }
                    }

                    if (row.RowState == DataRowState.Deleted)
                    {
                        Int32 acces1OriginalId = (Int32)row[CSpvLienAccesAlarme.c_champACCES1_ID, DataRowVersion.Original];
                        Int32 acces2OriginalId = (Int32)row[CSpvLienAccesAlarme.c_champACCES2_ID, DataRowVersion.Original];

                        CSpvAccesAlarme acces1Original = new CSpvAccesAlarme(contexte);
                        if (acces1Original.ReadIfExists(acces1OriginalId))
                        {
                            acces1Original.AccesEtat = acces1Original.AccesEtat & 0xE;
                        }

                        CSpvAccesAlarme acces2Original = new CSpvAccesAlarme(contexte);
                        if (acces2Original.ReadIfExists(acces2OriginalId))
                        {
                            acces2Original.AccesEtat = acces2Original.AccesEtat & 0xE;
                        }

                        Int32 nMaskBriMin =
                            (Int32)row[CSpvLienAccesAlarme.c_champMSKBRI_MIN, DataRowVersion.Original];

                        Int32 nMaskAdmMin =
                            (Int32)row[CSpvLienAccesAlarme.c_champMSKADM_MIN, DataRowVersion.Original];


                        // Construction des messages de démasquage accès alarme
                        if (nMaskBriMin > 0 || nMaskAdmMin > 0)
                        {
                            Int32 nSiteId = -1;
                            if (row[CSpvLienAccesAlarme.c_champSITE_ID, DataRowVersion.Original] != DBNull.Value)
                            {
                                nSiteId = (Int32)row[CSpvLienAccesAlarme.c_champSITE_ID, DataRowVersion.Original];
                            }

                            Int32 nEquipId = -1;
                            if (row[CSpvLienAccesAlarme.c_champEQUIP_ID, DataRowVersion.Original] != DBNull.Value)
                            {
                                nEquipId = (Int32)row[CSpvLienAccesAlarme.c_champEQUIP_ID, DataRowVersion.Original];
                            }

                            Int32 nLiaiId = -1;
                            if (row[CSpvLienAccesAlarme.c_champLIAI_ID, DataRowVersion.Original] != DBNull.Value)
                            {
                                nLiaiId = (Int32)row[CSpvLienAccesAlarme.c_champLIAI_ID, DataRowVersion.Original];
                            }

                            Int32 nAccesAccescId =
                                (Int32)row[CSpvLienAccesAlarme.c_champACCES_ACCESC_ID, DataRowVersion.Original];

                            CSpvMessalrm spvMessAlrm;
                            if (nMaskBriMin > 0)
                            {
                                spvMessAlrm = new CSpvMessalrm(contexte);
                                spvMessAlrm.CreateNewInCurrentContexte();
                                spvMessAlrm.MessageMasquageAlarme(" ", 0, nAccesAccescId.ToString(),
                                                                  (int)EEvenementMasquage.FinMasquageBrigadier, nSiteId, nEquipId, nLiaiId, "");
                            }
                            else
                            {
                                spvMessAlrm = new CSpvMessalrm(contexte);
                                spvMessAlrm.CreateNewInCurrentContexte();
                                spvMessAlrm.MessageMasquageAlarme(" ", 0, nAccesAccescId.ToString(),
                                                                  (int)EEvenementMasquage.FinMasquageAdministrateur, nSiteId, nEquipId, nLiaiId, "");
                            }
                        }

                        // Construction des messages à destination de EmessEM
                        CSpvLienAccesAlarme spvLienAccesAlarme = new CSpvLienAccesAlarme(row);
                        spvLienAccesAlarme.VersionToReturn = DataRowVersion.Original;
                        CSpvMessem spvMessem = new CSpvMessem(contexte);
                        spvMessem.CreateNewInCurrentContexte();
                        if (!spvMessem.FormatMessAccesAlarme(spvLienAccesAlarme, DataRowState.Deleted))
                        {
                            spvMessem.CancelCreate();
                        }
                    }
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(e.Message);
            }
            return(result);
        }
Ejemplo n.º 8
0
        public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte)
        {
            CResultAErreur result = base.TraitementAvantSauvegarde(contexte);

            if (!result)
            {
                return(result);
            }

            DataTable table = contexte.Tables[GetNomTable()];

            if (table == null)
            {
                return(result);
            }

            List <DataRow> lstCrees = (List <DataRow>)table.ExtendedProperties[CDivers.c_cleRowCrees];

            if (lstCrees != null)
            {
                table.ExtendedProperties.Clear();
            }

            lstCrees = new List <DataRow>();

            ArrayList lstRows = new System.Collections.ArrayList(table.Rows);

            foreach (DataRow row in lstRows)
            {
                if (row.RowState != DataRowState.Unchanged)
                {
                    CSpvSite spvSite = new CSpvSite(row);
                    if (row.RowState == DataRowState.Added)
                    {
                        CSpvSite_Rep spvSiteRep = new CSpvSite_Rep(contexte);
                        if (!spvSiteRep.ReadIfExists(spvSite.Id))
                        {
                            spvSiteRep.CreateNewInCurrentContexte(new object[] { spvSite.Id });
                            spvSiteRep.CodeEtatOperationnel = (Int32?)EEtatOperationnel.OK;
                            spvSiteRep.SpvSite = spvSite;
                            lstCrees.Add(row);
                        }
                    }
                    else if (row.RowState == DataRowState.Modified)
                    {
                        string oldDomaine = CDivers.DbNullValue(row[CSpvSite.c_champSITE_DOMAINE, DataRowVersion.Original], null);
                        string oldEM      = CDivers.DbNullValue(row[CSpvSite.c_champSITE_EMNAME, DataRowVersion.Original], null);
                        string newDomaine = spvSite.DomaineIP;
                        string newEM      = spvSite.EmName;

                        if (((oldDomaine == null || oldEM == null) && newDomaine != null && newEM != null) ||
                            (oldDomaine != newDomaine || oldEM != newEM) ||
                            ((newDomaine == null || newEM == null) && oldDomaine != null && oldEM != null))
                        {
                            CSpvMessem messEM = new CSpvMessem(contexte);
                            messEM.CreateNewInCurrentContexte();
                            messEM.FormatMessModSite(spvSite.Id);
                        }
                    }
                    else if (row.RowState == DataRowState.Deleted)
                    {
                        Int32 nId = (Int32)spvSite.Row[CSpvSite.c_champSITE_ID, DataRowVersion.Original];
                        if (nId == CSpvSite.c_SiteFuturocom)
                        {
                            result.EmpileErreur(I.T("FUTUROCOM site could not be deleted|50017"));
                        }

                        if (result)
                        {
                            CSpvMessem messEM = new CSpvMessem(contexte);
                            messEM.CreateNewInCurrentContexte();
                            messEM.FormatMessDelSite((Int32)row[CSpvSite.c_champSITE_ID, DataRowVersion.Original]);
                        }
                    }
                }
            }

            table.ExtendedProperties.Add(CDivers.c_cleRowCrees, lstCrees);

            return(result);
        }