/// ///////////////////////////////////////////////////////// public CRestrictionUtilisateurSurType GetRestriction(Type tp) { if (m_bIsAdministrateur) { return(new CRestrictionUtilisateurSurType(tp)); } CRestrictionUtilisateurSurType rest = (CRestrictionUtilisateurSurType)m_tableRestrictions[tp]; if (rest == null) { rest = new CRestrictionUtilisateurSurType(tp); } object[] attribs = tp.GetCustomAttributes(typeof(RestrictionHeriteeAttribute), true); CRestrictionUtilisateurSurType restClone = (CRestrictionUtilisateurSurType)rest.Clone(); if (attribs != null && attribs.Length > 0) { Type newTp = tp.BaseType; if (tp != null) { restClone.Combine(GetRestriction(newTp)); } } if (SeuilAnnulationPriorites != null) { restClone.SurchageComplete = true; restClone.Priorite = (int)SeuilAnnulationPriorites; } return(restClone); }
/// ///////////////////////////////////////////////////////// public void AddRestriction(CRestrictionUtilisateurSurType restriction) { if (restriction == null) { return; } Type tp = restriction.TypeAssocie; CRestrictionUtilisateurSurType resEx = GetRestriction(tp); if (SeuilAnnulationPriorites == null || resEx.Priorite >= (int)SeuilAnnulationPriorites) { if (resEx != null && resEx.HasRestrictions) { m_tableRestrictions[tp] = CRestrictionUtilisateurSurType.Combine(resEx, restriction); } else { m_tableRestrictions[tp] = (CRestrictionUtilisateurSurType)restriction.Clone(); } } }
/// /////////////////////////////////////////// public static CRestrictionUtilisateurSurType Combine(CRestrictionUtilisateurSurType restriction1, CRestrictionUtilisateurSurType restriction2) { CRestrictionUtilisateurSurType rest = null; if (restriction1 == null && restriction2 == null || restriction1.TypeAssocie != restriction2.TypeAssocie) { return(null); } if (restriction1 == null) { return((CRestrictionUtilisateurSurType)restriction2.Clone()); } if (restriction2 == null) { return((CRestrictionUtilisateurSurType)restriction1.Clone()); } rest = (CRestrictionUtilisateurSurType)restriction1.Clone(); rest.Combine(restriction2); return(rest); }