Example #1
0
 //---------------------------------------------------
 public void AppliqueRestrictions(
     CRestrictionUtilisateurSurType restrictionSurObjetEdite,
     CListeRestrictionsUtilisateurSurType listeRestrictions,
     IGestionnaireReadOnlySysteme gestionnaireReadOnly)
 {
     m_panelSousFormulaire.AppliqueRestrictions(
         restrictionSurObjetEdite,
         listeRestrictions,
         gestionnaireReadOnly);
     m_restriction                = restrictionSurObjetEdite.Clone() as CRestrictionUtilisateurSurType;;
     m_listeRestrictions          = listeRestrictions.Clone() as CListeRestrictionsUtilisateurSurType;
     m_gestionnaireReadonlySystem = gestionnaireReadOnly;
 }
Example #2
0
        //---------------------------------------------------
        protected override CResultAErreur MyInitChamps(CCustomizableListItem item)
        {
            CResultAErreur result = base.MyInitChamps(item);

            if (item != null && item.Tag != null)
            {
                m_panelSousFormulaire.SetElementEdite(item.Tag);

                if (m_restriction != null && !IsCreatingImage)
                {
                    CRestrictionUtilisateurSurType rest = m_restriction.Clone() as CRestrictionUtilisateurSurType;
                    rest.ApplyToObjet(item.Tag);
                    m_panelSousFormulaire.AppliqueRestrictions(
                        rest,
                        m_listeRestrictions,
                        m_gestionnaireReadonlySystem);
                }


                //Stock l'aspect du formulaire à l'initialisation
                if (m_donneesAInitialisation == null)
                {
                    m_donneesAInitialisation = new CDonneesSpecifiquesControleDansCustomList();
                    CUtilDonneesSpecifiquesDansCustomList.SaveDonneesControle(this, m_donneesAInitialisation);
                }
                if (item.DonneesControles == null || item.DonneesControles.IsEmpty)
                {
                    item.DonneesControles = m_donneesAInitialisation;
                }
            }
            if (IsCreatingImage)
            {
                m_panelSousFormulaire.BackColor = ColorInactive;
            }
            else
            {
                m_panelSousFormulaire.BackColor = BackColor;
            }
            return(result);
        }
        ///////////////////////////////////////////////////
        public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte)
        {
            CResultAErreur result = base.TraitementAvantSauvegarde(contexte);

            CSessionClient session = CSessionClient.GetSessionForIdSession(IdSession);
            //Annule les modifications sur les champs interdits en modification
            DataTable table = contexte.Tables[GetNomTable()];
            //Objet témoin pour vérifier les valeurs non affectées
            CRelationElementAChamp_ChampCustom relTemoin = null;

            if (IdVersionDeTravail != null)            //Dans les versions, on ne stocke pas les créations de valeurs nulles
            {
                relTemoin = (CRelationElementAChamp_ChampCustom)contexte.GetNewObjetForTable(table);
                relTemoin.CreateNewInCurrentContexte();
            }
            if (table != null && session != null)
            {
                IInfoUtilisateur user = session.GetInfoUtilisateur();
                if (user != null)
                {
                    ArrayList       lst     = new ArrayList(table.Rows);
                    IElementAChamps lastElt = null;
                    CRestrictionUtilisateurSurType restDeBase    = null;
                    CRestrictionUtilisateurSurType restAppliquee = null;
                    foreach (DataRow row in lst)
                    {
                        CRelationElementAChamp_ChampCustom rel = (CRelationElementAChamp_ChampCustom)contexte.GetNewObjetForRow(row);
                        if (row.RowState == DataRowState.Added && relTemoin != null)
                        {
                            if (relTemoin.Valeur != null && relTemoin.Valeur.Equals(rel.Valeur) ||
                                relTemoin.Valeur == null && relTemoin.Valeur == null)
                            {
                                rel.CancelCreate();
                            }
                        }


                        if (row.RowState == DataRowState.Modified || row.RowState == DataRowState.Added)
                        {
                            if (restDeBase == null)
                            {
                                Type tp = rel.ElementAChamps.GetType();
                                restDeBase = user.GetRestrictionsSur(tp, contexte.IdVersionDeTravail);
                            }
                            if (restDeBase != null && rel.ElementAChamps.Equals(lastElt))
                            {
                                restAppliquee = restDeBase.Clone() as CRestrictionUtilisateurSurType;
                            }
                            //Vérifie qu'on a le droit
                            if (!rel.ElementAChamps.Equals(lastElt) && restAppliquee != null)
                            {
                                restAppliquee.ApplyToObjet(rel.ElementAChamps);
                            }
                            lastElt = rel.ElementAChamps;
                            if (restAppliquee != null)
                            {
                                ERestriction restChamp = restAppliquee.GetRestriction(rel.ChampCustom.CleRestriction);
                                if ((restChamp & ERestriction.ReadOnly) == ERestriction.ReadOnly)
                                {
                                    row.RejectChanges();
                                }
                            }
                        }
                    }
                }
            }
            if (relTemoin != null)
            {
                relTemoin.CancelCreate();
            }
            return(result);
        }