//------------------------------------------------------------------- public override CResultAErreur VerifieDonnees(CObjetDonnee objet) { CResultAErreur result = CResultAErreur.True; try { CTypeContrainte type_cont = (CTypeContrainte)objet; // Verifie le champ "Libelle" if (type_cont.Libelle == "") { result.EmpileErreur(I.T("Constraint Type label cannot be empty|10003")); } // Le champ "Libelle" doit être unique dans son parent seulement. if (type_cont.TypeContrainteParent != null) { // Liste des sites frères lst CListeObjetsDonnees lst = type_cont.TypeContrainteParent.TypesContraintesFils; lst.Filtre = new CFiltreData(CTypeContrainte.c_champLibelle + " = @1 AND " + CTypeContrainte.c_champId + " <> @2", type_cont.Libelle, type_cont.Id); if (lst.Count != 0) { result.EmpileErreur(I.T("The Constraint type '@1' already exists|239", type_cont.Libelle)); } } } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); } return(result); }
//------------------------------------------------------------------- public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte) { CResultAErreur result = CResultAErreur.True; result = base.TraitementAvantSauvegarde(contexte); if (!result) { return(result); } // Interdit le changement de type de contrainte s'il y a des clés associées DataTable table = contexte.Tables[GetNomTable()]; ArrayList lst = new ArrayList(table.Rows); foreach (DataRow row in lst) { if (row.RowState == DataRowState.Modified) { CContrainte contrainte = new CContrainte(row); // Sauvegarde de la version du DataRow DataRowVersion oldVer = contrainte.VersionToReturn; // Type de contrainte après modif CTypeContrainte modifTypeCont = contrainte.TypeContrainte; // Changement de version contrainte.VersionToReturn = DataRowVersion.Original; // Type de contrainte avant modif CTypeContrainte originTypeCont = contrainte.TypeContrainte; // Retour à la version du DataRow contrainte.VersionToReturn = oldVer; if (modifTypeCont != originTypeCont && contrainte.RelationRessourceListe.Count != 0) { result.EmpileErreur(I.T( "The Constraint Type cannot be modified when there are resources are associated with it|128")); } } } return(result); }
public void AddRelation(CListeObjetsDonnees listeObjets, CTypeRessource newTypeRessource, CTypeContrainte newTypeContainte) { if (listeObjets == null || newTypeRessource == null || newTypeContainte == null) { return; } // Vérifie que la ralation n'es pas déjà créée listeObjets.Filtre = new CFiltreData(CTypeRessource.c_champId + " = @1 AND " + CTypeContrainte.c_champId + " = @2 ", newTypeRessource.Id, newTypeContainte.Id); if (listeObjets.Count != 0) { CFormAlerte.Afficher(I.T("This Relation is already added|286"), EFormAlerteType.Erreur); return; } //Créer une nouvelle relation CRelationTypeContrainte_TypeRessource rel = new CRelationTypeContrainte_TypeRessource(listeObjets.ContexteDonnee); rel.CreateNewInCurrentContexte(); rel.TypeContrainte = newTypeContainte; rel.TypeRessource = newTypeRessource; ListViewItem item = new ListViewItem(); m_listeRelations.Items.Add(item); m_listeRelations.UpdateItemWithObject(item, rel); }