public bool IsRessourceLevant(CRessourceMaterielle ressource) { if (ressource == null) { return(false); } // Est-ce que la ressource lève la contrainte de façon explicite (relation directe)? foreach (CRelationContrainte_Ressource rel in this.RelationRessourceListe) { if (rel.Ressource == ressource) { return(true); } } //Est-ce que le type de la ressource lève le type de la contrainte ? bool bTypeRessourceOk = false; string strRessource = ressource.Libelle; string strContrainte = Libelle; foreach (CRelationTypeContrainte_TypeRessource rel in TypeContrainte.RelationsTypesRessourcesListe) { if (rel.TypeRessource.Equals(ressource.TypeRessource)) { bTypeRessourceOk = true; break; } } if (!bTypeRessourceOk) { return(false); } //Vérifie maintenant les attributs Hashtable tableAttribs = new Hashtable(); foreach (CAttributContrainte attribut in AttributsListe) { if (attribut.AttributTypeContrainte != null) { tableAttribs[attribut.AttributTypeContrainte.Id] = false; } else { tableAttribs[attribut.Libelle] = true; } } bool bTousNecessaires = TypeContrainte.OptionTousAttributsRessourceLevant; foreach (CAttributRessource attribut in ressource.AttributsListe) { if (attribut.AttributTypeContrainte != null) { if (tableAttribs.Contains(attribut.AttributTypeContrainte.Id)) { tableAttribs[attribut.AttributTypeContrainte.Id] = true; if (!bTousNecessaires) { return(true); } } } else if (tableAttribs.Contains(attribut.Libelle)) { tableAttribs[attribut.Libelle] = true; if (!bTousNecessaires) { return(true); } } } foreach (bool bTrouve in tableAttribs.Values) { if (!bTrouve) { return(false); } } return(true); }
public CResultAErreur DeplaceRessource( string strInfoDeplacement, IPossesseurRessource emplacementDestination, CDonneesActeurUtilisateur utilisateur, DateTime dateDeplacement) { CResultAErreur result = CResultAErreur.True; if (emplacementDestination == null) { result.EmpileErreur(I.T("Movement must have a destination Place|248")); } if (utilisateur == null) { utilisateur = sc2i.workflow.CUtilSession.GetUserForSession(ContexteDonnee); if (utilisateur == null) { result.EmpileErreur(I.T("No user for movement|249")); } } if (!result) { return(result); } if (emplacementDestination.Equals(Emplacement)) { return(result); } CRessourceMaterielle ressourceToEdit = this; ressourceToEdit.BeginEdit(); CMouvementRessource mouvement = null; if (Emplacement != null) { mouvement = new CMouvementRessource(ressourceToEdit.ContexteDonnee); mouvement.CreateNewInCurrentContexte(); mouvement.RessourceDeplace = this; mouvement.EmplacementOrigine = Emplacement; mouvement.Info = strInfoDeplacement; mouvement.DateMouvement = dateDeplacement; mouvement.Utilisateur = utilisateur; } ressourceToEdit.SetEmplacementSansHistorique(emplacementDestination); // Déplace les ressources filles avec if (mouvement != null) { result = ressourceToEdit.VerifieDonnees(false); } if (result && mouvement != null) { result = mouvement.VerifieDonnees(false); } if (result) { result = ressourceToEdit.CommitEdit(); } else { ressourceToEdit.CancelEdit(); } return(result); }