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); }
/// <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); }