Пример #1
0
 /// <summary>
 /// Retourne une liste d'objet correspondant à la coordonnée souhaitée
 /// </summary>
 /// <param name="coor"></param>
 /// <param name="ctx"></param>
 /// <returns></returns>
 public static List <IObjetACoordonnees> FindObjetsACoordonnees(
     string coor,
     IObjetACoordonnees parent,
     CContexteDonnee ctx)
 {
     return(FindObjetsACoordonnees(coor, null, parent, ctx));
 }
Пример #2
0
        //------------------------------------------------
        public void Init(IObjetAFilsACoordonnees parent, IObjetACoordonnees fils)
        {
            m_parent = parent;
            if (parent != null)
            {
                EOptionControleCoordonnees?option = parent.OptionsControleCoordonneesApplique;
                if (option == null)
                {
                    option = COptionCoordonnéeGlobale.GetOptionType(fils.ContexteDonnee.IdSession, parent.GetType());
                }
                if (!SObjetAvecFilsAvecCoordonnees.IsAppliquable(option.Value, fils))
                {
                    LockEdition = true;
                }
                else
                {
                    LockEdition = !m_gestionnaireModeEdition.ModeEdition;
                }
            }

            m_fils        = fils;
            m_strCoorBase = fils.CoordonneeParente;
            if (m_strCoorBase.Length > 0)
            {
                m_strCoorBase += CSystemeCoordonnees.c_separateurNumerotations;
            }
            m_txtDebut.Text         = m_strCoorBase;
            m_txtDebut.LockEdition  = true;
            m_txtBoxCoordonnee.Text = fils.Coordonnee;

            VerifieDonnees();
        }
Пример #3
0
 public static bool IsAppliquable(EOptionControleCoordonnees optionControle, IObjetACoordonnees fils)
 {
     if (fils.GetType() == typeof(CEquipement))
     {
         if ((optionControle & EOptionControleCoordonnees.IgnorerLesEquipements) == EOptionControleCoordonnees.IgnorerLesEquipements)
         {
             return(false);
         }
     }
     if (fils.GetType() == typeof(CSite))
     {
         if ((optionControle & EOptionControleCoordonnees.IgnorerLesSites) == EOptionControleCoordonnees.IgnorerLesSites)
         {
             return(false);
         }
     }
     if (fils.GetType() == typeof(CStock))
     {
         if ((optionControle & EOptionControleCoordonnees.IgnorerLesStocks) == EOptionControleCoordonnees.IgnorerLesStocks)
         {
             return(false);
         }
     }
     return(true);
 }
Пример #4
0
        //---------------------------------------
        private bool PlaceFilsACoordonnées(IObjetACoordonnees fils, CNiveauCoordonnee[] niveaux)
        {
            if (niveaux == null || niveaux.Length == 0)
            {
                return(false);
            }
            C2iComposant3D composant = fils.GetComposantPhysique();

            if (composant == null)
            {
                return(false);
            }
            IEnumerable <IComposantPourObjetACoordonnées> lstPossibles = GetTousLesFilsPourElementsACoordonnées(niveaux[0].Prefixe);

            if (lstPossibles.Count() > 0)
            {
                IComposantPourObjetACoordonnées composantParent = lstPossibles.ElementAt(0);
                if (niveaux.Length == 1)
                {
                    return(composantParent.AddFilsWithIndex(composant, niveaux[0].Index));
                }
                else
                {
                    List <CNiveauCoordonnee> lst = new List <CNiveauCoordonnee>(niveaux);
                    lst.RemoveAt(0);
                    return(composant.PlaceFilsACoordonnées(fils, lst.ToArray()));
                }
            }
            return(false);
        }
Пример #5
0
        public void Init(CContexteDonnee contexteFonctionnement, IObjetACoordonnees objetRacine, EObjetACoordonnee critere)
        {
            m_objetRacine = objetRacine;

            m_ctx = contexteFonctionnement;
            m_txtBoxCoordonnee.ForeColor = Color.Blue;
            m_chklstCriteres.SetItemChecked(0, true);
            m_chklstCriteres.SetItemChecked(1, true);
            m_chklstCriteres.SetItemChecked(2, true);
            m_chklstCriteres.SetItemChecked(3, true);
        }
Пример #6
0
        //---------------------------------------
        public virtual bool PlaceFilsACoordonnées(IObjetACoordonnees fils)
        {
            IObjetAFilsACoordonnees parent = fils.ConteneurFilsACoordonnees;

            if (parent == null)
            {
                return(false);
            }
            CParametrageSystemeCoordonnees paramCoord = parent.ParametrageCoordonneesApplique;

            if (paramCoord == null)
            {
                return(false);
            }
            CNiveauCoordonnee[] niveaux = paramCoord.DecodeCoordonnee(fils.Coordonnee);
            return(PlaceFilsACoordonnées(fils, niveaux));
        }
        public static void NaviguerVersObjetACoordonnee(IObjetACoordonnees obj)
        {
            Type t = typeof(string);

            CReferenceTypeForm refTypeForm = null;

            if (obj is CEntiteOrganisationnelle)
            {
                //t = CFormFinder.GetTypeFormToEdit(typeof(CEntiteOrganisationnelle));
                refTypeForm = CFormFinder.GetRefFormToEdit(typeof(CEntiteOrganisationnelle));
            }
            else if (obj is CSite)
            {
                //t = CFormFinder.GetTypeFormToEdit(typeof(CSite));
                refTypeForm = CFormFinder.GetRefFormToEdit(typeof(CSite));
            }
            else if (obj is CStock)
            {
                //t = CFormFinder.GetTypeFormToEdit(typeof(CStock));
                refTypeForm = CFormFinder.GetRefFormToEdit(typeof(CStock));
            }
            else if (obj is CEquipement)
            {
                //t = CFormFinder.GetTypeFormToEdit(typeof(CEquipement));
                refTypeForm = CFormFinder.GetRefFormToEdit(typeof(CEquipement));
            }

            //if (typeof(IFormNavigable).IsAssignableFrom(t))
            //{
            //    IFormNavigable iformnav = (IFormNavigable)Activator.CreateInstance(t, new object[] { obj });
            //    CTimosApp.Navigateur.AffichePage(iformnav);
            //}
            if (refTypeForm != null)
            {
                IFormNavigable iformnav = refTypeForm.GetForm((CObjetDonneeAIdNumeriqueAuto)obj) as IFormNavigable;
                if (iformnav != null)
                {
                    CTimosApp.Navigateur.AffichePage(iformnav);
                }
            }
        }
Пример #8
0
        //----------------------------------------------------------------------
        public static bool EditeCoordonnee(
            Point ptSouris,
            IObjetAFilsACoordonnees parent,
            IObjetACoordonnees fils,
            ref string strCoordonnee)
        {
            if (parent == null)
            {
                return(false);
            }
            if (fils == null)
            {
                return(false);
            }
            if (parent.ParametrageCoordonneesApplique == null)
            {
                CFormAlerte.Afficher(I.T("No coordinate system defined|30124"), EFormAlerteType.Erreur);
                return(false);
            }
            CFormPopupSaisieCoordonnee form = new CFormPopupSaisieCoordonnee();

            form.m_parent        = parent;
            form.m_fils          = fils;
            form.m_strCoordonnee = strCoordonnee;

            if (ptSouris.X + form.Width > Screen.PrimaryScreen.WorkingArea.Width)
            {
                ptSouris.X = Screen.PrimaryScreen.WorkingArea.Width - form.Width;
            }

            form.Location = ptSouris;

            bool bResult = form.ShowDialog() == DialogResult.OK;

            if (bResult)
            {
                strCoordonnee = form.m_strCoordonnee;
            }
            return(bResult);
        }
Пример #9
0
        /// <summary>
        /// Vérifie que la coordonnée demandée est valide pour le fils demandé dans le
        /// parent demandé
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="fils"></param>
        /// <param name="strCoordonnee"></param>
        /// <returns></returns>
        public static CResultAErreur VerifieCoordonneeFils(IObjetAFilsACoordonnees parent, IObjetACoordonnees fils, string strCoordonnee)
        {
            CResultAErreur result = CResultAErreur.True;

            ///Vérifie qu'on a ce qu'il faut pour bosser !!
            if (parent == null)
            {
                result.EmpileErreur(I.T("Impossible to check the coordinates of an object which is not positioned|259"));
                return(result);
            }
            if (fils == null)
            {
                return(result);
            }
            CParametrageSystemeCoordonnees parametrage = parent.ParametrageCoordonneesApplique;

            if (parametrage == null || parametrage.SystemeCoordonnees == null)
            {
                return(result);
            }

            EOptionControleCoordonnees?optionControle = parent.OptionsControleCoordonneesApplique;

            if (optionControle == null)
            {
                optionControle = COptionCoordonnéeGlobale.GetOptionType(fils.ContexteDonnee.IdSession, parent.GetType());
            }

            if (!IsAppliquable(optionControle.Value, fils))
            {
                return(result);
            }

            //Test Coordonnée vide
            if (strCoordonnee == "")
            {
                if ((optionControle & EOptionControleCoordonnees.IgnorerLesFilsSansCoordonnees) == EOptionControleCoordonnees.IgnorerLesFilsSansCoordonnees)
                {
                    return(result);
                }
                else
                {
                    result.EmpileErreur(I.T("Mandatory coordinate|258"));
                    return(result);
                }
            }

            ///Vérifie que la coordonnée  a le bon format
            result = parametrage.VerifieCoordonnee(strCoordonnee);
            if (!result)
            {
                return(result);
            }
            string strCoordonneeFin = strCoordonnee;

            COccupationCoordonnees occupation = fils.OccupationCoordonneeAppliquee;

            //Prend en compte l'occupation
            if ((optionControle & EOptionControleCoordonnees.IgnorerLoccupation) != EOptionControleCoordonnees.IgnorerLoccupation)
            {
                if (occupation == null)
                {
                    result.EmpileErreur(I.T("No occupation defined : control is impossible|256"));
                    return(result);
                }
                if (occupation.NbUnitesOccupees < 1)
                {
                    result.EmpileErreur(I.T("Incorrect number of occupied units|257"));
                    return(result);
                }
                if (occupation.NbUnitesOccupees != 1)                //1->coord fin = coord début !
                {
                    result = parametrage.SystemeCoordonnees.AjouteDansNiveau(strCoordonnee, occupation.NbUnitesOccupees - 1);
                    if (!result)
                    {
                        return(result);
                    }
                    strCoordonneeFin = (string)result.Data;
                    //Vérifie que la coordonnée de fin est correcte
                    result = parametrage.VerifieCoordonnee(strCoordonneeFin);
                    if (!result)
                    {
                        return(result);
                    }
                }
            }

            //Vérifie que l'unité est cohérente
            if ((optionControle & EOptionControleCoordonnees.IgnorerLesUnites) != EOptionControleCoordonnees.IgnorerLesUnites &&
                !fils.IgnorerUnite)
            {
                if (occupation == null)
                {
                    result.EmpileErreur(I.T("No occupation defined  : control is impossible|256"));
                    return(result);
                }
                result = parametrage.SystemeCoordonnees.VerifieUnite(strCoordonnee, occupation.Unite);
                if (!result)
                {
                    return(result);
                }
            }

            //Vérifie que la coordonnée n'est pas déjà occupée
            if ((optionControle & EOptionControleCoordonnees.AutoriserPlusieursFilsSurLaMemeCoordonnee) != EOptionControleCoordonnees.AutoriserPlusieursFilsSurLaMemeCoordonnee)
            {
                List <IObjetACoordonnees> lstobj = new List <IObjetACoordonnees>();
                lstobj = parent.FilsACoordonnees;

                //On exclu l'objet actuel si il est déjà présent car il ne peut pas rentrer en conflit avec lui même
                if (lstobj.Contains(fils))
                {
                    lstobj.Remove(fils);
                }

                result = parametrage.Test_Interactions(strCoordonnee, strCoordonneeFin, lstobj);
            }
            result.Data = null;
            return(result);
        }
Пример #10
0
 //-----------------------------------------
 public CResultAErreur IsCoordonneeValide(string strCoordonnee, IObjetACoordonnees objet)
 {
     return(SObjetAvecFilsAvecCoordonnees.VerifieCoordonneeFils(this, objet, strCoordonnee));
 }
Пример #11
0
        /// <summary>
        /// Retourne une liste d'objet correspondant à la coordonnée souhaitée
        /// selon un critère de recherche
        /// </summary>
        /// <param name="coor"></param>
        /// <param name="criteresTypeObjets"></param>
        /// <param name="ctx"></param>
        /// <returns></returns>
        public static List <IObjetACoordonnees> FindObjetsACoordonnees(
            string coor,
            EObjetACoordonnee?criteresTypeObjets,
            IObjetACoordonnees parent,
            CContexteDonnee ctx)
        {
            m_ctx = ctx;

            List <IObjetACoordonnees> lstObjACoor = new List <IObjetACoordonnees>();

            IDsEOsParent            = new List <string>();
            IDsSitesParent          = new List <string>();
            IDsStocksParent         = new List <string>();
            IDsEqtsParent           = new List <string>();
            lstEOsEnStandBy         = new List <CObjetACoordonneesEnStandBy>();
            lstSitesEnStandBy       = new List <CObjetACoordonneesEnStandBy>();
            lstStocksEnStandBy      = new List <CObjetACoordonneesEnStandBy>();
            lstEquipementsEnStandBy = new List <CObjetACoordonneesEnStandBy>();
            lstEOsPoss         = new List <CObjetACoordonneesPossible>();
            lstSitesPoss       = new List <CObjetACoordonneesPossible>();
            lstStocksPoss      = new List <CObjetACoordonneesPossible>();
            lstEquipementsPoss = new List <CObjetACoordonneesPossible>();


            bool EOsExists    = true;
            bool SitesExists  = true;
            bool StocksExists = true;
            bool EqtsExists   = true;

            FirstSearch = true;

            #region 1 - Determination des critères (ou domaine) de recherche
            if (!((criteresTypeObjets & EObjetACoordonnee.EntiteOrganisationnelle) == EObjetACoordonnee.EntiteOrganisationnelle) ||
                criteresTypeObjets == null)
            {
                EOsExists = false;
            }

            if (!((criteresTypeObjets & EObjetACoordonnee.Site) == EObjetACoordonnee.Site) ||
                criteresTypeObjets == null)
            {
                SitesExists = false;
            }

            if (!((criteresTypeObjets & EObjetACoordonnee.Stock) == EObjetACoordonnee.Stock) ||
                criteresTypeObjets == null)
            {
                StocksExists = false;
            }

            if (!((criteresTypeObjets & EObjetACoordonnee.Equipement) == EObjetACoordonnee.Equipement) ||
                criteresTypeObjets == null)
            {
                EqtsExists = false;
            }
            #endregion

            #region  2 - Recherche des IObjetACoordonnees en descendant niveau par niveau
            string[] levels = coor.Split(CSystemeCoordonnees.c_separateurNumerotations);

            if (levels.Length == 0)
            {
                return(lstObjACoor);
            }

            if (parent != null)
            {
                CObjetACoordonneesPossible obj = new CObjetACoordonneesPossible(((IObjetDonneeAIdNumerique)parent).Id.ToString(), parent.Coordonnee);
                if (parent.GetType() == typeof(CEntiteOrganisationnelle))
                {
                    m_lstEOsPoss.Add(obj);
                }
                if (parent.GetType() == typeof(CSite))
                {
                    m_lstSitesPoss.Add(obj);
                }
                if (parent.GetType() == typeof(CStock))
                {
                    m_lstStocksPoss.Add(obj);
                }
                if (parent.GetType() == typeof(CEquipement))
                {
                    m_lstEqtsPoss.Add(obj);
                }
                FirstSearch = false;
            }


            for (int level = 0; level < levels.Length; level++)
            {
                int nbEOs    = 0;
                int nbSites  = 0;
                int nbStocks = 0;
                int nbEqts   = 0;

                lstEOsPoss         = new List <CObjetACoordonneesPossible>();
                lstSitesPoss       = new List <CObjetACoordonneesPossible>();
                lstStocksPoss      = new List <CObjetACoordonneesPossible>();
                lstEquipementsPoss = new List <CObjetACoordonneesPossible>();

                //WakeUp
                WakeUpObjs(levels[level]);

                //EOs
                nbEOs += FindFilsACoor(EObjetACoordonnee.EntiteOrganisationnelle, levels[level]);

                //Sites
                nbSites += FindFilsACoor(EObjetACoordonnee.Site, levels[level]);

                //Stocks
                nbStocks += FindFilsACoor(EObjetACoordonnee.Stock, levels[level]);

                //Equipements
                nbEqts += FindFilsACoor(EObjetACoordonnee.Equipement, levels[level]);


                FirstSearch = false;



                //Mise en Stand By
                int nextLevel = level + 1;
                if (nextLevel < levels.Length)
                {
                    List <string> LevelsSuivants = new List <string>();
                    for (int nl = nextLevel; nl < levels.Length; nl++)
                    {
                        LevelsSuivants.Add(levels[nl]);
                    }

                    MiseEnStandBy(LevelsSuivants);
                }


                //if (nbEOs == 0 && lstEOsEnStandBy.Count == 0)
                //    EOsExists = false;
                //if (nbEqts == 0 && lstEquipementsEnStandBy.Count == 0)
                //    EqtsExists = false;
                //if (nbStocks == 0 && lstStocksEnStandBy.Count == 0)
                //    StocksExists = false;
                //if (nbSites == 0 && lstStocksEnStandBy.Count == 0)
                //    SitesExists = false;

                if (!(EOsExists && SitesExists && StocksExists && EqtsExists))
                {
                    return(lstObjACoor);
                }
            }
            #endregion

            // 3 - On ajoute les objets restant en stand by
            // 3 - Ajout des IObjetACoordonnees trouvés à la liste
            if (EOsExists)
            {
                foreach (CObjetACoordonneesEnStandBy o in lstEOsEnStandBy)
                {
                    lstEOsPoss.Add(new CObjetACoordonneesPossible(o));
                }

                if (lstEOsPoss.Count > 0)
                {
                    AddIObjetACoorOfIDs(ref lstObjACoor, EObjetACoordonnee.EntiteOrganisationnelle);
                }
            }
            if (SitesExists)
            {
                foreach (CObjetACoordonneesEnStandBy o in lstSitesEnStandBy)
                {
                    lstSitesPoss.Add(new CObjetACoordonneesPossible(o));
                }

                if (lstSitesPoss.Count > 0)
                {
                    AddIObjetACoorOfIDs(ref lstObjACoor, EObjetACoordonnee.Site);
                }
            }
            if (StocksExists)
            {
                foreach (CObjetACoordonneesEnStandBy o in lstStocksEnStandBy)
                {
                    lstStocksPoss.Add(new CObjetACoordonneesPossible(o));
                }

                if (lstStocksPoss.Count > 0)
                {
                    AddIObjetACoorOfIDs(ref lstObjACoor, EObjetACoordonnee.Stock);
                }
            }
            if (EqtsExists)
            {
                foreach (CObjetACoordonneesEnStandBy o in lstEquipementsEnStandBy)
                {
                    lstEquipementsPoss.Add(new CObjetACoordonneesPossible(o));
                }

                if (lstEquipementsPoss.Count > 0)
                {
                    AddIObjetACoorOfIDs(ref lstObjACoor, EObjetACoordonnee.Equipement);
                }
            }

            return(lstObjACoor);
        }