예제 #1
0
        // 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);
        }
예제 #2
0
        // 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);
            }
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }
예제 #5
0
        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);
        }
예제 #6
0
        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);
        }
예제 #7
0
        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++;
                }
            }
        }
예제 #8
0
        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);
        }
예제 #9
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);
        }
예제 #10
0
        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;
            }
        }
예제 #11
0
        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);
        }
예제 #12
0
        // ---- 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);
        }
예제 #13
0
        // 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);
            }
        }