Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }