// 2 - Descend selon le type et la coordonnee private static int FindFilsACoor(EObjetACoordonnee tPere, string coor) { //On prends les ID des elements actuel (pères) //On va (en fonction de leur type) rechercher les fils //Ayant la coordonnée int totauxPossibles = 0; switch (tPere) { case EObjetACoordonnee.EntiteOrganisationnelle: // > EOs totauxPossibles += GetChildren(tPere, EObjetACoordonnee.EntiteOrganisationnelle, coor); if (!FirstSearch) { // > Sites totauxPossibles += GetChildren(tPere, EObjetACoordonnee.Site, coor); } break; case EObjetACoordonnee.Site: // > Sites totauxPossibles += GetChildren(tPere, EObjetACoordonnee.Site, coor); if (!FirstSearch) { // > Stocks totauxPossibles += GetChildren(tPere, EObjetACoordonnee.Stock, coor); // > Equipements totauxPossibles += GetChildren(tPere, EObjetACoordonnee.Equipement, coor); } break; case EObjetACoordonnee.Stock: // > Equipements totauxPossibles += GetChildren(tPere, EObjetACoordonnee.Equipement, coor); break; case EObjetACoordonnee.Equipement: // > Equipements totauxPossibles += GetChildren(tPere, EObjetACoordonnee.Equipement, coor); break; default: break; } return(totauxPossibles); }
// 5 - Ajout des Objets en Stand By au resultat final private static void AddIObjetACoorOfIDs(ref List <IObjetACoordonnees> objs, EObjetACoordonnee tObj) { List <CObjetACoordonneesPossible> lstObjsPoss = GetListObjsPoss(tObj); string strIDs = ""; foreach (CObjetACoordonneesPossible obj in lstObjsPoss) { strIDs += obj.IDObjet + ","; } if (strIDs.Length == 0) { return; } else { strIDs = strIDs.Substring(0, strIDs.Length - 1); } CFiltreData filtreIds = null; CListeObjetsDonnees lstObjs = null; switch (tObj) { case EObjetACoordonnee.EntiteOrganisationnelle: filtreIds = new CFiltreData(CEntiteOrganisationnelle.c_champId + " in (" + strIDs + ")"); lstObjs = new CListeObjetsDonnees(m_ctx, typeof(CEntiteOrganisationnelle), filtreIds); break; case EObjetACoordonnee.Site: filtreIds = new CFiltreData(CSite.c_champId + " in (" + strIDs + ")"); lstObjs = new CListeObjetsDonnees(m_ctx, typeof(CSite), filtreIds); break; case EObjetACoordonnee.Stock: filtreIds = new CFiltreData(CStock.c_champId + " in (" + strIDs + ")"); lstObjs = new CListeObjetsDonnees(m_ctx, typeof(CStock), filtreIds); break; case EObjetACoordonnee.Equipement: filtreIds = new CFiltreData(CEquipement.c_champId + " in (" + strIDs + ")"); lstObjs = new CListeObjetsDonnees(m_ctx, typeof(CEquipement), filtreIds); break; default: break; } foreach (CObjetDonnee o in lstObjs) { objs.Add((IObjetACoordonnees)o); } }
private static bool MiseEnStandBy(EObjetACoordonnee tobjs, List <string> levelsuivants) { List <CObjetACoordonneesPossible> lst0bjsPoss = GetListObjsPoss(tobjs); List <CObjetACoordonneesEnStandBy> lstObjsStandBy = GetListObjsEnStandBy(tobjs); for (int cpt = lst0bjsPoss.Count; cpt > 0; cpt--) { CObjetACoordonneesPossible o = lst0bjsPoss[cpt - 1]; CObjetACoordonneesEnStandBy obj = new CObjetACoordonneesEnStandBy(tobjs, o, levelsuivants); if (obj.Valide) { lstObjsStandBy.Add(obj); } } return(true); }
private static List <CObjetACoordonneesEnStandBy> GetListObjsEnStandBy(EObjetACoordonnee tobj) { List <CObjetACoordonneesEnStandBy> lstObjs = new List <CObjetACoordonneesEnStandBy>(); switch (tobj) { case EObjetACoordonnee.EntiteOrganisationnelle: lstObjs = lstEOsEnStandBy; break; case EObjetACoordonnee.Site: lstObjs = lstSitesEnStandBy; break; case EObjetACoordonnee.Stock: lstObjs = lstStocksEnStandBy; break; case EObjetACoordonnee.Equipement: lstObjs = lstEquipementsEnStandBy; break; default: break; } return(lstObjs); }
private static List <CObjetACoordonneesPossible> GetListObjsPoss(EObjetACoordonnee tobj) { List <CObjetACoordonneesPossible> lstObjs = new List <CObjetACoordonneesPossible>(); switch (tobj) { case EObjetACoordonnee.EntiteOrganisationnelle: lstObjs = lstEOsPoss; break; case EObjetACoordonnee.Site: lstObjs = lstSitesPoss; break; case EObjetACoordonnee.Stock: lstObjs = lstStocksPoss; break; case EObjetACoordonnee.Equipement: lstObjs = lstEquipementsPoss; break; default: break; } return(lstObjs); }
private static List <string> GetListIDsPere(EObjetACoordonnee tobj) { List <string> idsPeres = new List <string>(); switch (tobj) { case EObjetACoordonnee.EntiteOrganisationnelle: idsPeres = IDsEOsParent; break; case EObjetACoordonnee.Site: idsPeres = IDsSitesParent; break; case EObjetACoordonnee.Stock: idsPeres = IDsStocksParent; break; case EObjetACoordonnee.Equipement: idsPeres = IDsEqtsParent; break; default: break; } return(idsPeres); }
public CObjetACoordonneesEnStandBy(EObjetACoordonnee tobj, CObjetACoordonneesPossible o, List <string> levelsSuivants) { m_objPoss = o; m_typeobj = tobj; m_valide = true; if (m_objPoss.Coordonnee.Trim().Replace(CSystemeCoordonnees.c_separateurNumerotations.ToString(), "").Length == 0) { m_valide = false; } //On split sa coordonnée m_levels = m_objPoss.Coordonnee.Split(CSystemeCoordonnees.c_separateurNumerotations); m_nlevels = m_levels.Length; m_levelActuel = 0; //On vérifie que la coordonnée correspond if (levelsSuivants.Count < m_nlevels) { m_valide = false; } else if (m_nlevels > 1) { int cpt = 1; foreach (string lv in levelsSuivants) { if (lv != m_levels[cpt]) { m_valide = false; break; } cpt++; } } }
public List <IObjetACoordonnees> GetResultatsRecherche() { m_criteresRecherche = 0; if (m_chklstCriteres.GetItemChecked(0)) { m_criteresRecherche = m_criteresRecherche | EObjetACoordonnee.EntiteOrganisationnelle; } if (m_chklstCriteres.GetItemChecked(1)) { m_criteresRecherche = m_criteresRecherche | EObjetACoordonnee.Site; } if (m_chklstCriteres.GetItemChecked(2)) { m_criteresRecherche = m_criteresRecherche | EObjetACoordonnee.Stock; } if (m_chklstCriteres.GetItemChecked(3)) { m_criteresRecherche = m_criteresRecherche | EObjetACoordonnee.Equipement; } if (m_criteresRecherche == 0) { CFormAlerte.Afficher(I.T("You must select at least one research domain|30121"), EFormAlerteType.Exclamation); return(null); } if (m_txtBoxCoordonnee.Text == "" || m_txtBoxCoordonnee.Text == null) { CFormAlerte.Afficher(I.T("You must enter a coordinate|30122"), EFormAlerteType.Exclamation); return(null); } List <IObjetACoordonnees> lstResult = CUtilObjetACoordonnees.FindObjetsACoordonnees(m_txtBoxCoordonnee.Text.ToUpper(), m_criteresRecherche, m_objetRacine, m_ctx); return(lstResult); }
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); }
private static void WakeUpObjs(EObjetACoordonnee tobjs, string coor) { switch (tobjs) { case EObjetACoordonnee.EntiteOrganisationnelle: IDsEOsParent = new List <string>(); for (int n = lstEOsEnStandBy.Count; n > 0; n--) { CObjetACoordonneesEnStandBy obj = lstEOsEnStandBy[n - 1]; obj.NextLevel(); if (!obj.ModeStandBy) { IDsEOsParent.Add(obj.IDObjet); lstEOsEnStandBy.RemoveAt(n - 1); } } break; case EObjetACoordonnee.Site: IDsSitesParent = new List <string>(); for (int n = lstSitesEnStandBy.Count; n > 0; n--) { CObjetACoordonneesEnStandBy obj = lstSitesEnStandBy[n - 1]; obj.NextLevel(); if (!obj.ModeStandBy) { IDsSitesParent.Add(obj.IDObjet); lstSitesEnStandBy.RemoveAt(n - 1); } } break; case EObjetACoordonnee.Stock: IDsStocksParent = new List <string>(); for (int n = lstStocksEnStandBy.Count; n > 0; n--) { CObjetACoordonneesEnStandBy obj = lstStocksEnStandBy[n - 1]; obj.NextLevel(); if (!obj.ModeStandBy) { IDsStocksParent.Add(obj.IDObjet); lstStocksEnStandBy.RemoveAt(n - 1); } } break; case EObjetACoordonnee.Equipement: IDsEqtsParent = new List <string>(); for (int n = lstEquipementsEnStandBy.Count; n > 0; n--) { CObjetACoordonneesEnStandBy obj = lstEquipementsEnStandBy[n - 1]; obj.NextLevel(); if (!obj.ModeStandBy) { IDsEqtsParent.Add(obj.IDObjet); lstEquipementsEnStandBy.RemoveAt(n - 1); } } break; default: break; } }
private static CFiltreDataAvance GetFiltreForFindChildren(EObjetACoordonnee tPere, EObjetACoordonnee tChildren, string coor) { CFiltreDataAvance filtre = null; List <string> idsPeres = GetListIDsPere(tPere); string strIDsPere = ""; foreach (string sid in idsPeres) { strIDsPere += sid + ","; } if (strIDsPere.Length > 0) { strIDsPere = strIDsPere.Substring(0, strIDsPere.Length - 1); } else { return(filtre); } switch (tPere) { case EObjetACoordonnee.EntiteOrganisationnelle: if (tChildren == EObjetACoordonnee.EntiteOrganisationnelle) { filtre = new CFiltreDataAvance( CEntiteOrganisationnelle.c_nomTable, "(" + CEntiteOrganisationnelle.c_champCoordonnee + " = @1 " + "OR " + CEntiteOrganisationnelle.c_champCoordonnee + " like @2 " + ")" + "AND" + "(" + "EntiteParente." + CEntiteOrganisationnelle.c_champId + " in (" + strIDsPere + ")" + ")" , coor, coor + ".%"); } else if (tChildren == EObjetACoordonnee.Site) { filtre = new CFiltreDataAvance( CSite.c_nomTable, "(" + CSite.c_champCoordonnee + " = @1 " + "OR " + CSite.c_champCoordonnee + " like @2 " + ")" + "AND" + "(" + "EOdeCoordonnee." + CEntiteOrganisationnelle.c_champId + " in (" + strIDsPere + ")" + ")" , coor, coor + ".%"); } break; case EObjetACoordonnee.Site: if (tChildren == EObjetACoordonnee.Site) { filtre = new CFiltreDataAvance( CSite.c_nomTable, "(" + CSite.c_champCoordonnee + " = @1 " + "OR " + CSite.c_champCoordonnee + " like @2 " + ")" + "AND" + "(" + CSite.c_champIdParent + " in (" + strIDsPere + ")" + ")" , coor, coor + ".%"); } else if (tChildren == EObjetACoordonnee.Stock) { filtre = new CFiltreDataAvance( CStock.c_nomTable, "(" + CStock.c_champCoordonnee + " = @1 " + "OR " + CStock.c_champCoordonnee + " like @2 " + ")" + "AND" + "(" + "Site." + CSite.c_champId + " in (" + strIDsPere + ")" + ")" , coor, coor + ".%"); } else if (tChildren == EObjetACoordonnee.Equipement) { filtre = new CFiltreDataAvance( CEquipement.c_nomTable, "(" + CEquipement.c_champCoordonnee + " = @1 " + "OR " + CEquipement.c_champCoordonnee + " like @2 " + ")" + "AND" + "(" + "EmplacementSite." + CSite.c_champId + " in (" + strIDsPere + ")" + ")" , coor, coor + ".%"); } break; case EObjetACoordonnee.Stock: if (tChildren == EObjetACoordonnee.Equipement) { filtre = new CFiltreDataAvance( CEquipement.c_nomTable, "(" + CEquipement.c_champCoordonnee + " = @1 " + "OR " + CEquipement.c_champCoordonnee + " like @2 " + ")" + "AND" + "(" + "EmplacementStock." + CStock.c_champId + " in (" + strIDsPere + ")" + ")" , coor, coor + ".%"); } break; case EObjetACoordonnee.Equipement: if (tChildren == EObjetACoordonnee.Equipement) { filtre = new CFiltreDataAvance( CEquipement.c_nomTable, "(" + CEquipement.c_champCoordonnee + " = @1 " + "OR " + CEquipement.c_champCoordonnee + " like @2 " + ")" + "AND" + "(" + "EquipementContenant." + CEquipement.c_champId + " in (" + strIDsPere + ")" + ")" , coor, coor + ".%"); } break; default: break; } return(filtre); }
// ---- FILTRES ---- private static CFiltreDataAvance GetFiltreForFindHead(EObjetACoordonnee tSouhaite, string coor) { CFiltreDataAvance filtre = null; switch (tSouhaite) { #region Entites Organisationnelles //L'EO doit avoir la coordonnée //L'EO ne doit pas être dans une EO //OU ne doit pas être dans une EO qui a un type EO qui lui affecte un parametrage case EObjetACoordonnee.EntiteOrganisationnelle: filtre = new CFiltreDataAvance( CEntiteOrganisationnelle.c_nomTable, "(" + CEntiteOrganisationnelle.c_champCoordonnee + " = @1 " + "OR " + CEntiteOrganisationnelle.c_champCoordonnee + " like @3 " + ")" + "AND " + "(" + "(" + //CEntiteOrganisationnelle.c_champIdParent + " is null " + "hasno(" + CEntiteOrganisationnelle.c_champIdParent + ")" + ")" + "OR" + "(" + "(" + "EntiteParente." + CEntiteOrganisationnelle.c_champCoordonnee + " =@2" + ")" + "OR" + "(" + //"EntiteParente." + CEntiteOrganisationnelle.c_champCoordonnee + " is null " + "hasno(" + "EntiteParente." + CEntiteOrganisationnelle.c_champCoordonnee + ")" + ")" + ")" + ")" //"AND " + //CEntiteOrganisationnelle.c_champCoordonnee + " =@1 AND (" + //CEntiteOrganisationnelle.c_champIdParent + " is null OR HASNO(" + //"EntiteParente." + CTypeEntiteOrganisationnelle.c_nomTable + "." + //CParametrageSystemeCoordonnees.c_nomTable + "." + CParametrageSystemeCoordonnees.c_champId + ")", , coor, "", coor + ".%"); break; #endregion #region Sites //Le site doit avoir la coordonnée //Le site ne doit pas être dans un site qui a une coor //Le site ne doit pas être dans une EO qui a une coor case EObjetACoordonnee.Site: filtre = new CFiltreDataAvance( CSite.c_nomTable, "(" + CSite.c_champCoordonnee + " = @1 " + "OR " + CSite.c_champCoordonnee + " like @3 " + ")" + "AND " + "(" + "(" + //CSite.c_champIdParent + " is null " + "hasno(" + CSite.c_champIdParent + ")" + ")" + "OR" + "(" + "(" + "SiteParent." + CSite.c_champCoordonnee + " =@2" + //"SiteParent." + CSite.c_nomTable + "." + CSite.c_champCoordonnee + " =@2 " + ")" + "OR" + "(" + "hasno(SiteParent." + CSite.c_champCoordonnee + ")" + //"hasno(" + "SiteParent." + CSite.c_nomTable + "." + CSite.c_champCoordonnee + ")" + ")" + ")" + ")" + "AND " + "(" + "(" + //CSite.c_champEOCoor + " is null " + "hasno(" + CSite.c_champEOCoor + ")" + ")" + "OR" + "(" + "(" + //"EOdeCoordonnee." + CEntiteOrganisationnelle.c_nomTable + "." + CEntiteOrganisationnelle.c_champCoordonnee + " =@2" + "EOdeCoordonnee." + CEntiteOrganisationnelle.c_champCoordonnee + " =@2" + ")" + "OR" + "(" + "hasno(" + "EOdeCoordonnee." + CEntiteOrganisationnelle.c_champCoordonnee + ")" + //"EOdeCoordonnee." + CEntiteOrganisationnelle.c_champCoordonnee + " is null " + //"hasno(" + "EOdeCoordonnee." + CEntiteOrganisationnelle.c_nomTable + "." + CEntiteOrganisationnelle.c_champCoordonnee + ")" + ")" + ")" + ")" //+" AND (" + //CSite.c_champIdParent + " is null OR HASNO(" + //"EntiteParente." + CTypeEntiteOrganisationnelle.c_nomTable + "." + //CParametrageSystemeCoordonnees.c_nomTable + "." + CParametrageSystemeCoordonnees.c_champId + ")" , coor, "", coor + ".%"); break; #endregion #region Stock //Le stock doit avoir la coordonnée //Le stock ne doit pas être dans un site d'un type site lié à un parametrage //Le stock ne doit pas etre dans un site lié à un parametrage case EObjetACoordonnee.Stock: filtre = new CFiltreDataAvance( CStock.c_nomTable, "(" + CStock.c_champCoordonnee + " = @1 " + "OR " + CStock.c_champCoordonnee + " like @3 " + ")" + "AND " + "(" + "(" + //CSite.c_champId + " is null " + "hasno(" + CSite.c_champId + ")" + ")" + "OR" + "(" + "(" + "Site." + CSite.c_champCoordonnee + " = @2 " + ")" + "OR" + "(" + //"Site." + CSite.c_champCoordonnee + " is null " + "hasno(" + "Site." + CSite.c_champCoordonnee + ")" + ")" + ")" + ")" //"HASNO(" + //"Site." + CTypeSite.c_nomTable + "." + //CParametrageSystemeCoordonnees.c_nomTable + "." + CParametrageSystemeCoordonnees.c_champId + ")" + //" AND HASNO(Site." //+ CParametrageSystemeCoordonnees.c_nomTable + "." + CParametrageSystemeCoordonnees.c_champId + ")" , coor, "", coor + ".%"); break; #endregion #region Equipement //L'equipement doit avoir la coordonnée //ET //L'equipement ne doit pas etre dans un Stock //OU //L'equipement ne doit pas être dans un stock lié à un parametrage //ET //L'equipement ne doit pas etre dans un Site //OU //L'equipement ne doit pas être dans un site lié à un parametrage //L'equipement ne doit pas être dans un site avec un type site lié à un parametrage //ET //L'equipement ne doit pas être dans un Equipement //OU //L'equipement ne doit pas être dans un Equipement lie à un parametrage //L'equipement ne doit pas être dans un Equipement avec un type equipement lié à un parametrage case EObjetACoordonnee.Equipement: filtre = new CFiltreDataAvance( CEquipement.c_nomTable, "(" + CEquipement.c_champCoordonnee + " = @1 " + "OR " + CEquipement.c_champCoordonnee + " like @3 " + ")" + "AND" + "(" + "(" + //CStock.c_champId + " is null " + "hasno(" + CStock.c_champId + ")" + ")" + "OR " + "(" + "(" + "EmplacementStock." + CStock.c_champCoordonnee + " = @2 " + ")" + "OR " + "(" + //"EmplacementStock." + CStock.c_champCoordonnee + " is null" + "hasno(" + "EmplacementStock." + CStock.c_champCoordonnee + ")" + ")" + ")" + ")" + "AND" + "(" + "(" + //CSite.c_champId + " is null " + "hasno(" + CSite.c_champId + ")" + ")" + "OR" + "(" + "(" + "EmplacementSite." + CSite.c_champCoordonnee + " = @2 " + ")" + "OR " + "(" + //"EmplacementSite." + CSite.c_champCoordonnee + " is null" + "hasno(" + "EmplacementSite." + CSite.c_champCoordonnee + ")" + ")" + ")" + ")" + "AND" + "(" + "(" + //CEquipement.c_champIdEquipementContenant + " is null " + "hasno(" + CEquipement.c_champIdEquipementContenant + ")" + ")" + "OR " + "(" + "(" + "EquipementContenant." + CEquipement.c_champCoordonnee + " = @2 " + ")" + "OR " + "(" + //"EquipementContenant." + CEquipement.c_champCoordonnee + " is null" + "hasno(" + "EquipementContenant." + CEquipement.c_champCoordonnee + ")" + ")" + ")" + ")" , coor, "", coor + ".%"); break; #endregion default: break; } return(filtre); }
// 3 - Creation Filtre + Execution Requete et Ajout aux possibles private static int GetChildren(EObjetACoordonnee tPeres, EObjetACoordonnee tFils, string coor) { List <string> idsPeres = GetListIDsPere(tPeres); if (idsPeres.Count == 0 && !FirstSearch) { return(0); } CFiltreDataAvance filtre = null; if (!FirstSearch) { filtre = GetFiltreForFindChildren(tPeres, tFils, coor); } else { filtre = GetFiltreForFindHead(tPeres, coor); } List <CObjetACoordonneesPossible> lstObjsPoss = GetListObjsPoss(tFils); string nomTable = ""; string colID = ""; string colCoor = ""; switch (tFils) { case EObjetACoordonnee.EntiteOrganisationnelle: nomTable = CEntiteOrganisationnelle.c_nomTable; colID = CEntiteOrganisationnelle.c_champId; colCoor = CEntiteOrganisationnelle.c_champCoordonnee; break; case EObjetACoordonnee.Site: nomTable = CSite.c_nomTable; colID = CSite.c_champId; colCoor = CSite.c_champCoordonnee; break; case EObjetACoordonnee.Stock: nomTable = CStock.c_nomTable; colID = CStock.c_champId; colCoor = CStock.c_champCoordonnee; break; case EObjetACoordonnee.Equipement: nomTable = CEquipement.c_nomTable; colID = CEquipement.c_champId; colCoor = CEquipement.c_champCoordonnee; break; default: break; } if (nomTable == "" || colID == "") { return(0); } CResultAErreur result = CResultAErreur.True; C2iRequeteAvancee requete = new C2iRequeteAvancee(-1); requete.TableInterrogee = nomTable; C2iChampDeRequete champID = new C2iChampDeRequete( "Id", new CSourceDeChampDeRequete(colID), typeof(int), OperationsAgregation.None, false); C2iChampDeRequete champCoor = new C2iChampDeRequete( "Coor", new CSourceDeChampDeRequete(colCoor), typeof(string), OperationsAgregation.None, false); requete.ListeChamps.Add(champID); requete.ListeChamps.Add(champCoor); requete.FiltreAAppliquer = filtre; result = requete.ExecuteRequete(m_ctx.IdSession); if (result) { DataTable table = (DataTable)result.Data; foreach (DataRow row in table.Rows) { lstObjsPoss.Add(new CObjetACoordonneesPossible(((int)row["Id"]).ToString().Trim(), (string)row["Coor"])); } return(table.Rows.Count); } else { return(0); } }