Ejemplo n.º 1
0
        //------------------------------------------------------------------------------------------------
        private CCaracteristiqueEntite[] GetDocumentsAttendus()
        {
            if (m_objetEdite == null)
            {
                return(null);
            }

            CObjetDonneeAIdNumerique objet = m_objetEdite as CObjetDonneeAIdNumerique;

            if (objet != null)
            {
                string strIdsDocumentsAttendus = CTimosWebAppRegistre.IdsTypesCaracteristiquesDocumentsAttendus;

                CFiltreData filtre;
                if (strIdsDocumentsAttendus.Length == 0)
                {
                    filtre = new CFiltreDataImpossible();
                }
                else
                {
                    filtre = new CFiltreData(CCaracteristiqueEntite.c_champTypeElement + "=@1 and " +
                                             CCaracteristiqueEntite.c_champIdElementLie + "=@2 and " + CTypeCaracteristiqueEntite.c_champId + " IN (" + strIdsDocumentsAttendus + ")",
                                             objet.GetType().ToString(),
                                             objet.Id);
                }
                CListeObjetsDonnees lst = new CListeObjetsDonnees(objet.ContexteDonnee, typeof(CCaracteristiqueEntite), filtre);
                int combien             = lst.Count;
                return(lst.ToArray <CCaracteristiqueEntite>());
            }

            return(null);
        }
Ejemplo n.º 2
0
        public override CResultAErreur MyInitChamps()
        {
            if (ObjetEdite is CSite)
            {
                m_spvSite = CSpvSite.GetObjetSpvFromObjetTimos(ObjetEdite as CSite) as CSpvSite;
            }
            CResultAErreur result = base.MyInitChamps();

            if (!result)
            {
                return(result);
            }

            if (m_spvSite == null)
            {
                CFiltreDataImpossible filtreImpossible = new CFiltreDataImpossible();
                CListeObjetsDonnees   listeVideProg    = new CListeObjetsDonnees(ObjetEdite.ContexteDonnee, typeof(CSpvSchemaReseau));
                listeVideProg.Filtre = filtreImpossible;

                m_PanelPrestations.InitFromListeObjets(
                    listeVideProg, typeof(CSpvSchemaReseau), null, null, "SpvSite");
            }
            else
            {
                m_PanelPrestations.InitFromListeObjets(
                    m_spvSite.PrestationsConcernees,
                    typeof(CSpvSchemaReseau),
                    typeof(CFormEditSpvProg), //to be changed
                    m_spvSite,
                    "SpvSite");
            }

            return(result);
        }
Ejemplo n.º 3
0
                public CListeObjetsDonnees GetRelations(ISatisfactionBesoin satisfaction)
                {
                    DateLastAcces = DateTime.Now;
                    CCacheRelation cache = null;
                    CFiltreData    filtre;

                    if (!m_dicCaches.TryGetValue(GetKey(satisfaction), out cache))
                    {
                        filtre = new CFiltreData(
                            CRelationBesoin_Satisfaction.c_champTypeElement + "=@1 and " +
                            CRelationBesoin_Satisfaction.c_champIdElement + "=@2",
                            satisfaction.GetType().ToString(),
                            satisfaction.Id);
                        CListeObjetsDonnees liste = new CListeObjetsDonnees(satisfaction.ContexteDonnee, typeof(CRelationBesoin_Satisfaction), filtre);
                        liste.PreserveChanges = true;
                        SetRelations(satisfaction, liste);
                        return(liste);
                    }
                    filtre = new CFiltreDataImpossible();
                    if (cache.Ids.Count > 0)
                    {
                        filtre = new CFiltreData(CRelationBesoin_Satisfaction.c_champId + " in (" + cache.IdsPourFiltre + ")");
                    }
                    else
                    {
                        filtre = new CFiltreDataImpossible();
                    }
                    CListeObjetsDonnees lstOptim = new CListeObjetsDonnees(satisfaction.ContexteDonnee, typeof(CRelationBesoin_Satisfaction), filtre);

                    lstOptim.PreserveChanges     = true;
                    lstOptim.InterditLectureInDB = true;
                    return(lstOptim);
                }
Ejemplo n.º 4
0
        public override sc2i.common.CResultAErreur MyInitChamps()
        {
            if (ObjetEdite is CLienReseau)
            {
                m_spvLiai = CSpvLiai.GetSpvLiaiFromLienReseau(ObjetEdite as CLienReseau) as CSpvLiai;
            }
            CResultAErreur result = base.MyInitChamps();

            if (!result)
            {
                return(result);
            }

            if (result && m_spvLiai != null)
            {
                m_PanelTypeAccessAlarm.InitFromListeObjets(
                    m_spvLiai.SpvTypeAccessAlarm,
                    typeof(CSpvTypeAccesAlarme),
                    typeof(CFormEditionTypeAccesAlarmeBoucle),
                    m_spvLiai,
                    "SpvLiai");

                m_CablageAccesAlarm.InitFromListeObjets(
                    m_spvLiai.AlarmesCables,
                    typeof(CSpvLienAccesAlarme),
                    typeof(CFormEditionCablageAccesAlarmeBoucle),
                    m_spvLiai,
                    "SpvLiai");
            }

            if (m_spvLiai == null)
            {
                CFiltreDataImpossible filtreImpossible = new CFiltreDataImpossible();
                CListeObjetsDonnees   listeVideAlarme  = new CListeObjetsDonnees(ObjetEdite.ContexteDonnee, typeof(CSpvTypeAccesAlarme));
                CListeObjetsDonnees   listeVideAccesc  = new CListeObjetsDonnees(ObjetEdite.ContexteDonnee, typeof(CSpvLienAccesAlarme));
                listeVideAlarme.Filtre = filtreImpossible;
                listeVideAccesc.Filtre = filtreImpossible;

                m_PanelTypeAccessAlarm.InitFromListeObjets(
                    listeVideAlarme,
                    typeof(CSpvTypeAccesAlarme),
                    typeof(CFormEditionTypeAccesAlarmeBoucle),
                    null,
                    "SpvLiai");

                m_CablageAccesAlarm.InitFromListeObjets(
                    listeVideAccesc,
                    typeof(CSpvLienAccesAlarme),
                    typeof(CFormEditionCablageAccesAlarmeBoucle),
                    null,
                    "SpvLiai");
            }
            return(result);
        }//MyInitChamps()
Ejemplo n.º 5
0
        //-------------------------------------------------
        private void InitComboEquipementParent(CComboBoxArbreObjetDonneesHierarchique combo)
        {
            CSite  site  = null;
            CStock stock = null;

            if (combo == m_cmbEquipement)
            {
                site = m_selectSite.ElementSelectionne as CSite;
            }
            if (combo == m_cmbEquipementStock)
            {
                stock = m_selectStock.ElementSelectionne as CStock;
            }
            combo.LockEdition = true;
            if (m_equipement.TypeEquipement != null)
            {
                //Récupère les équipements du site qui peuvent contenir cet équipement
                CTypeEquipement[] equips = m_equipement.TypeEquipement.TousLesTypesIncluants;
                string            strIds = "";
                foreach (CTypeEquipement type in equips)
                {
                    strIds += type.Id + ",";
                }
                if (strIds != "")
                {
                    strIds = strIds.Substring(0, strIds.Length - 1);
                    CFiltreData filtreRacine = null;
                    if (site != null)
                    {
                        filtreRacine = new CFiltreData(
                            CSite.c_champId + "=@1", site.Id);
                    }
                    else if (stock != null)
                    {
                        filtreRacine = new CFiltreData(
                            CStock.c_champId + "=@1", stock.Id);
                    }
                    else
                    {
                        filtreRacine = new CFiltreDataImpossible();
                    }
                    CFiltreData filtre = new CFiltreData(
                        CTypeEquipement.c_champId + " in (" + strIds + ") ");
                    filtre = CFiltreData.GetAndFiltre(filtreRacine, filtre);
                    combo.Init(typeof(CEquipement),
                               "EquipementsContenus",
                               CEquipement.c_champIdEquipementContenant,
                               "Libelle|" + CEquipement.c_strCleFormuleGlobaleLibelleEquipement,
                               filtre,
                               filtreRacine);
                    combo.LockEdition = false;
                }
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Retourne les caractéristiques d'un élément
        /// </summary>
        /// <param name="element"></param>
        /// <returns></returns>
        public static CListeObjetsDonnees GetCaracteristiques(IObjetDonneeAIdNumerique element)
        {
            CFiltreData filtre = null;

            if (element == null)
            {
                filtre = new CFiltreDataImpossible();
            }
            else
            {
                filtre = new CFiltreData(CCaracteristiqueEntite.c_champTypeElement + "=@1 and " +
                                         CCaracteristiqueEntite.c_champIdElementLie + "=@2",
                                         element.GetType().ToString(),
                                         ((IObjetDonneeAIdNumerique)element).Id);
            }
            return(new CListeObjetsDonnees(element.ContexteDonnee, typeof(CCaracteristiqueEntite), filtre));
        }
Ejemplo n.º 7
0
        /// //////
        public void Init(CObjetDonneeAIdNumerique[] elements)
        {
            m_elementsAAgenda = elements;
            if (elements.Length == 0)
            {
                m_filtrePrincipal = new CFiltreDataImpossible();
            }
            else
            {
                //Type->id à voir
                Hashtable tableTypeToIds = new Hashtable();
                Type      tp             = m_elementsAAgenda[0].GetType();
                foreach (CObjetDonneeAIdNumerique objet in m_elementsAAgenda)
                {
                    AddElementAVoir(objet, tableTypeToIds);
                    if (objet is IElementAAgenda)
                    {
                        foreach (string strProp in ((IElementAAgenda)objet).GetProprietesAccessSousElementsAgenda())
                        {
                            ArrayList lst = CInterpreteurTextePropriete.CreateListePlateFrom(objet, strProp);
                            foreach (CObjetDonneeAIdNumerique objFils in lst)
                            {
                                AddElementAVoir(objFils, tableTypeToIds);
                            }
                        }
                    }
                }

                m_filtrePrincipal = new CFiltreData( );
                string strFiltre = "";
                int    nVariable = 1;
                foreach (DictionaryEntry dic in tableTypeToIds)
                {
                    if (strFiltre != "")
                    {
                        strFiltre += " or ";
                    }
                    strFiltre += "(" + CRelationEntreeAgenda_ElementAAgenda.c_champTypeElementAAgenda + "=@" + nVariable.ToString() + " and " +
                                 CRelationEntreeAgenda_ElementAAgenda.c_champIdElementAAgenda + " in (" + dic.Value.ToString() + "))";
                    m_filtrePrincipal.Parametres.Add(dic.Key.ToString());
                    nVariable++;
                }
                m_filtrePrincipal.Filtre = strFiltre;
            }
        }
        //-------------------------------------------------------------
        private void UpdateControleContainer()
        {
            CFiltreData filtreRacine  = null;
            CFiltreData filtreEnfants = null;

            if (m_defaultEmplacement == null)
            {
                filtreRacine = new CFiltreDataImpossible();
            }
            else
            {
                filtreRacine = new CFiltreData(m_defaultEmplacement.GetChampId() + "=@1",
                                               m_defaultEmplacement.Id);
                CTypeEquipement tpEquip = m_selectTypeEquipement.ElementSelectionne as CTypeEquipement;

                if (tpEquip != null)
                {
                    //Trouve tous les équipements qui peuvent contenir celui-ci
                    StringBuilder bl = new StringBuilder();
                    foreach (CTypeEquipement tpIncluant in tpEquip.TousLesTypesIncluants)
                    {
                        bl.Append(tpIncluant.Id);
                        bl.Append(',');
                    }
                    if (bl.Length > 0)
                    {
                        bl.Remove(bl.Length - 1, 1);
                        filtreEnfants = new CFiltreData(CTypeEquipement.c_champId + " in (" +
                                                        bl.ToString() + ")");
                    }
                    else
                    {
                        filtreEnfants = new CFiltreDataImpossible();
                    }
                }
            }
            m_cmbEquipementConteneur.Init(typeof(CEquipement),
                                          "EquipementsContenus",
                                          CEquipement.c_champIdEquipementContenant,
                                          "Libelle",
                                          filtreEnfants,
                                          filtreRacine);
        }
Ejemplo n.º 9
0
        public override sc2i.common.CResultAErreur MyInitChamps()
        {
            if (ObjetEdite is CTypeEquipement)
            {
                m_spvTypeq = CSpvTypeq.GetSpvTypeqFromTypeEquipement(ObjetEdite as CTypeEquipement) as CSpvTypeq;
            }

            CResultAErreur result = base.MyInitChamps();

            if (!result)
            {
                return(result);
            }


            if (result && m_spvTypeq != null)
            {
                m_PanelTypeAccessAlarm.InitFromListeObjets(
                    m_spvTypeq.TypesAccesAlarme,
                    typeof(CSpvTypeAccesAlarme),
                    typeof(CFormEditionTypeAccesAlarme),
                    m_spvTypeq,
                    "SpvTypeq");
            }


            if (m_spvTypeq == null)
            {
                CFiltreDataImpossible filtreImpossible = new CFiltreDataImpossible();
                CListeObjetsDonnees   listeVide        = new CListeObjetsDonnees(ObjetEdite.ContexteDonnee, typeof(CSpvTypeAccesAlarme));
                listeVide.Filtre = filtreImpossible;

                m_PanelTypeAccessAlarm.InitFromListeObjets(
                    listeVide,
                    typeof(CSpvTypeAccesAlarme),
                    typeof(CFormEditionTypeAccesAlarme),
                    null,
                    "SpvTypeq");
            }

            return(result);
        }//MyInitChamps()
Ejemplo n.º 10
0
        /// /////////////////////////////////////////////////////////////
        public CFiltreData GetFiltrePourListe()
        {
            CFiltreData filtre = new CFiltreData();

            if (IsDynamique)
            {
                CFiltreDynamique filtreDyn = FiltreDynamique;
                CResultAErreur   result    = filtreDyn.GetFiltreData();
                if (result.Data is CFiltreData)
                {
                    filtre = (CFiltreData)result.Data;
                }
            }
            else
            {
                string          strChampId = "";
                StringBuilder   bl         = new StringBuilder();
                CStructureTable structure  = CStructureTable.GetStructure(TypeElements);
                strChampId = structure.ChampsId[0].NomChamp;
                foreach (CRelationListeEntites_Entite rel in RelationsEntites)
                {
                    bl.Append(rel.IdElement);
                    bl.Append(',');
                }
                if (bl.Length > 0)
                {
                    bl.Remove(bl.Length - 1, 1);
                }
                if (bl.Length > 0)
                {
                    filtre = new CFiltreData(strChampId + " in (" + bl.ToString() + ")");
                }
                else
                {
                    filtre = new CFiltreDataImpossible();
                }
            }
            return(filtre);
        }
Ejemplo n.º 11
0
        public override sc2i.common.CResultAErreur MyInitChamps()
        {
            if (ObjetEdite is CSite)
            {
                m_spvSite = CSpvSite.GetObjetSpvFromObjetTimos(ObjetEdite as CSite) as CSpvSite;
            }
            CResultAErreur result = base.MyInitChamps();

            if (!result)
            {
                return(result);
            }

            if (result && m_spvSite != null)
            {
                m_txtBoxCommunity.Text = m_spvSite.SNMP_Community;
                m_txtBoxDomaineIp.Text = m_spvSite.DomaineIP;
                m_txtBoxMediation.Text = m_spvSite.EmName;

                m_PanelTypeAccessAlarm.InitFromListeObjets(
                    m_spvSite.SpvTypeAccessAlarm,
                    typeof(CSpvTypeAccesAlarme),
                    typeof(CFormEditionTypeAccesAlarmeBoucle),
                    m_spvSite,
                    "SpvSite");

                m_CablageAccesAlarm.InitFromListeObjets(
                    m_spvSite.AlarmesCables,
                    typeof(CSpvLienAccesAlarme),
                    typeof(CFormEditionCablageAccesAlarmeBoucle),
                    m_spvSite,
                    "SpvSite");
            }
            else
            {
                m_txtBoxMediation.Text = "";
                m_txtBoxDomaineIp.Text = "";
                m_txtBoxCommunity.Text = "";
            }

            if (m_spvSite == null)
            {
                CFiltreDataImpossible filtreImpossible = new CFiltreDataImpossible();
                CListeObjetsDonnees   listeVideAlarme  = new CListeObjetsDonnees(ObjetEdite.ContexteDonnee, typeof(CSpvTypeAccesAlarme));
                CListeObjetsDonnees   listeVideAccesc  = new CListeObjetsDonnees(ObjetEdite.ContexteDonnee, typeof(CSpvLienAccesAlarme));
                listeVideAlarme.Filtre = filtreImpossible;
                listeVideAccesc.Filtre = filtreImpossible;

                m_PanelTypeAccessAlarm.InitFromListeObjets(
                    listeVideAlarme,
                    typeof(CSpvTypeAccesAlarme),
                    typeof(CFormEditionTypeAccesAlarmeBoucle),
                    null,
                    "SpvSite");

                m_CablageAccesAlarm.InitFromListeObjets(
                    listeVideAccesc,
                    typeof(CSpvLienAccesAlarme),
                    typeof(CFormEditionCablageAccesAlarmeBoucle),
                    null,
                    "SpvSite");
            }
            return(result);
        }//MyInitChamps()
Ejemplo n.º 12
0
        public void Init(IElementAEO element)
        {
            m_arbre.BeginUpdate();
            m_panelChamps.ElementEdite = null;
            m_panelChamps.InitPanel(null, null);
            m_arbre.Nodes.Clear();
            m_elementEdite = element;
            if (element == null)
            {
                return;
            }
            CListeObjetsDonnees listeRelations = CRelationElement_EO.GetListeRelationsForElement((CObjetDonneeAIdNumerique)element);
            CFiltreData         filtre         = null;

            if (!m_gestionnaireModeEdition.ModeEdition)
            {
                string strIds = "";

                foreach (CRelationElement_EO rel in  listeRelations)
                {
                    strIds += rel.EntiteOrganisationnelle.Id + ",";
                }
                if (strIds != "")
                {
                    strIds = strIds.Substring(0, strIds.Length - 1);
                    filtre = new CFiltreData(CEntiteOrganisationnelle.c_champId + " in (" +
                                             strIds + ")");
                }
                else
                {
                    filtre = new CFiltreDataImpossible();
                }
            }

            // Filtre les Entités qu'on a le droit de voir dans l'interface (gestion des exceptions sur Type d'EO)
            Type tpElement = element.GetType();

            CListeObjetDonneeGenerique <CEntiteOrganisationnelle> lstEO = new CListeObjetDonneeGenerique <CEntiteOrganisationnelle>(element.ContexteDonnee);
            List <string> lstIdsEOsNePasAfficher = new List <string>();

            foreach (CEntiteOrganisationnelle eo in lstEO)
            {
                if (eo.TypeEntite != null && eo.TypeEntite.HasExceptionForType(tpElement))
                {
                    lstIdsEOsNePasAfficher.Add(eo.Id.ToString());
                }
            }
            if (lstIdsEOsNePasAfficher.Count > 0)
            {
                string strIdsEOsNePasAfficher = String.Join(",", lstIdsEOsNePasAfficher.ToArray());
                filtre = CFiltreData.GetAndFiltre
                             (filtre,
                             new CFiltreData(CEntiteOrganisationnelle.c_champId + " not in (" +
                                             strIdsEOsNePasAfficher + ")"));
            }

            m_arbre.Init(typeof(CEntiteOrganisationnelle),
                         "EntiteFilles",
                         CEntiteOrganisationnelle.c_champIdParent,
                         "Libelle",
                         filtre,
                         null);

            m_bIsInitialising = true;
            m_tableEOToRelation.Clear();
            foreach (CRelationElement_EO rel in listeRelations)
            {
                m_tableEOToRelation[rel.EntiteOrganisationnelle] = rel;
                m_arbre.SetChecked(rel.EntiteOrganisationnelle, true);
                TreeNode node = m_arbre.GetNodeFor(rel.EntiteOrganisationnelle);
                while (node != null)
                {
                    node = node.Parent;
                    if (node != null)
                    {
                        node.Expand();
                    }
                }
                //m_arbre.EnsureVisible ( rel.EntiteOrganisationnelle );
            }
            m_bIsInitialising = false;
            m_arbre.EndUpdate();

            BeginInvoke(new FillHeritageDelegate(FillHeritage));
        }
Ejemplo n.º 13
0
        //------------------------------------------------------------------------------------
        public CFiltreData GetFiltreFinal(int nIdSession, string strNomTable, CFiltreData filtreNonAutoRef)
        {
            Type tp = CContexteDonnee.GetTypeForTable(strNomTable);

            if (tp == null)
            {
                return(null);
            }
            CStructureTable structure = CStructureTable.GetStructure(tp);

            if (structure == null)
            {
                return(null);
            }

            //Va lire les ids non autoref dans la base
            HashSet <int>     lstIdsALire = new HashSet <int>();
            C2iRequeteAvancee requete     = new C2iRequeteAvancee();

            requete.TableInterrogee  = strNomTable;
            requete.FiltreAAppliquer = filtreNonAutoRef;
            requete.ListeChamps.Add(
                new C2iChampDeRequete(structure.ChampsId[0].NomChamp,
                                      new CSourceDeChampDeRequete(structure.ChampsId[0].NomChamp),
                                      typeof(int),
                                      OperationsAgregation.None,
                                      true));
            CResultAErreur result = requete.ExecuteRequete(nIdSession);

            if (result)
            {
                DataTable table = result.Data as DataTable;
                if (table != null)
                {
                    foreach (DataRow row in table.Rows)
                    {
                        int?nVal = row[0] as int?;
                        if (nVal != null)
                        {
                            lstIdsALire.Add(nVal.Value);
                        }
                    }
                }
            }
            CFiltreData filtre = new CFiltreDataImpossible();

            if (lstIdsALire.Count > 0)
            {
                StringBuilder bl = new StringBuilder();
                foreach (int nId in lstIdsALire)
                {
                    bl.Append(nId.ToString());
                    bl.Append(',');
                }
                do
                {
                    bl.Remove(bl.Length - 1, 1);
                    filtre = new CFiltreData(m_strNomChampParentId + " in (" + bl.ToString() + ")");
                    //Va lire les ids des fils, jusqu'à ce qu'on ne trouve plus de fils
                    HashSet <int> lstNewIds = new HashSet <int>();
                    requete.FiltreAAppliquer = filtre;
                    result = requete.ExecuteRequete(nIdSession);
                    if (!result)
                    {
                        return(new CFiltreDataImpossible());
                    }
                    DataTable table = result.Data as DataTable;
                    bl = new StringBuilder();
                    if (table != null)
                    {
                        foreach (DataRow row in table.Rows)
                        {
                            int?nVal = row[0] as int?;
                            if (nVal != null)
                            {
                                lstIdsALire.Add(nVal.Value);
                                bl.Append(nVal.Value);
                                bl.Append(',');
                            }
                        }
                    }
                }while (bl.Length > 0);
                bl = new StringBuilder();
                foreach (int nId in lstIdsALire)
                {
                    bl.Append(nId);
                    bl.Append(',');
                }
                if (bl.Length > 0)
                {
                    bl.Remove(bl.Length - 1, 1);
                    filtre = new CFiltreData(structure.ChampsId[0].NomChamp + " in (" +
                                             bl.ToString() + ")");
                }
            }
            return(filtre);
        }
        //--------------------------------------------------------
        public CFiltreData GetFiltreData(int nIdSession, CFiltresSynchronisation filtresSynchro)
        {
            if (m_filtreDejaCalcule != null)
            {
                return(m_filtreDejaCalcule);
            }
            Type tp = CContexteDonnee.GetTypeForTable(m_strNomTableFille);

            if (tp == null)
            {
                return(null);
            }
            CStructureTable structure = CStructureTable.GetStructure(tp);

            if (structure == null)
            {
                return(null);
            }
            CFiltreData filtre = null;

            foreach (CInfoRelation relationParente in structure.RelationsParentes)
            {
                if (relationParente.Composition &&
                    (relationParente.TableParente == m_strNomTableParenteDeComposition ||
                     m_strNomTableParenteDeComposition.Length == 0))
                {
                    Type            tpParent      = CContexteDonnee.GetTypeForTable(relationParente.TableParente);
                    CStructureTable structParente = CStructureTable.GetStructure(tpParent);
                    if (structParente != null && structParente.NomTable != m_strNomTableFille)
                    {
                        HashSet <int>     lstIdsALire = new HashSet <int>();
                        C2iRequeteAvancee requete     = new C2iRequeteAvancee();
                        requete.TableInterrogee  = relationParente.TableParente;
                        requete.FiltreAAppliquer = filtresSynchro.GetFiltreForTable(nIdSession, relationParente.TableParente);
                        requete.ListeChamps.Add(
                            new C2iChampDeRequete(structParente.ChampsId[0].NomChamp,
                                                  new CSourceDeChampDeRequete(structParente.ChampsId[0].NomChamp),
                                                  typeof(int),
                                                  OperationsAgregation.None,
                                                  true));
                        CResultAErreur result = requete.ExecuteRequete(nIdSession);
                        if (result)
                        {
                            DataTable table = result.Data as DataTable;
                            if (table != null)
                            {
                                foreach (DataRow row in table.Rows)
                                {
                                    int?nVal = row[0] as int?;
                                    if (nVal != null)
                                    {
                                        lstIdsALire.Add(nVal.Value);
                                    }
                                }
                            }
                        }
                        if (lstIdsALire.Count > 0)
                        {
                            StringBuilder bl = new StringBuilder();
                            foreach (int nId in lstIdsALire)
                            {
                                bl.Append(nId.ToString());
                                bl.Append(',');
                            }
                            bl.Remove(bl.Length - 1, 1);
                            filtre = CFiltreData.GetOrFiltre(filtre,
                                                             new CFiltreData(relationParente.ChampsFille[0] + " in (" + bl.ToString() + ")"));
                        }
                    }
                }
            }
            if (filtre == null)
            {
                filtre = new CFiltreDataImpossible();
            }
            m_filtreDejaCalcule = filtre;
            return(m_filtreDejaCalcule);
        }
Ejemplo n.º 15
0
        private void m_lnkHistoriqueEvenements_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            List <CReferenceObjetDonnee> lst            = CBasePourVueAnimee.GetTousLesConcernesSpv(SchemaReseau);
            Dictionary <int, bool>       dicIdsSitesSpv = new Dictionary <int, bool>();
            Dictionary <int, bool>       dicIdsLiaisons = new Dictionary <int, bool>();
            Dictionary <int, bool>       dicIdsEquips   = new Dictionary <int, bool>();

            foreach (CReferenceObjetDonnee reference in lst)
            {
                Dictionary <int, bool> dic = null;
                if (reference.TypeObjet == typeof(CSpvSite))
                {
                    dic = dicIdsSitesSpv;
                }
                if (reference.TypeObjet == typeof(CSpvLiai))
                {
                    dic = dicIdsLiaisons;
                }
                if (reference.TypeObjet == typeof(CSpvEquip))
                {
                    dic = dicIdsEquips;
                }
                if (dic != null)
                {
                    dic[(int)reference.ClesObjet[0]] = true;
                }
            }
            StringBuilder blIdsSites = new StringBuilder();

            foreach (int nId in dicIdsSitesSpv.Keys)
            {
                blIdsSites.Append(nId);
                blIdsSites.Append(',');
            }
            StringBuilder blIdsLiens = new StringBuilder();

            foreach (int nId in dicIdsLiaisons.Keys)
            {
                blIdsLiens.Append(nId);
                blIdsLiens.Append(',');
            }
            StringBuilder blIdsEquip = new StringBuilder();

            foreach (int nId in dicIdsEquips.Keys)
            {
                blIdsEquip.Append(nId);
                blIdsEquip.Append(',');
            }
            string strFiltre = "";

            if (blIdsSites.Length > 0)
            {
                blIdsSites.Remove(blIdsSites.Length - 1, 1);
                strFiltre = CSpvAlarmeDonnee.c_champSITE_ID + " in (" + blIdsSites.ToString() + ")";
            }
            if (blIdsLiens.Length > 0)
            {
                blIdsLiens.Remove(blIdsLiens.Length - 1, 1);
                if (strFiltre.Length > 0)
                {
                    strFiltre += " or ";
                }
                strFiltre += CSpvAlarmeDonnee.c_champLIAI_ID + " in (" + blIdsLiens.ToString() + ")";
            }
            if (blIdsEquip.Length > 0)
            {
                blIdsEquip.Remove(blIdsEquip.Length - 1, 1);
                if (strFiltre.Length > 0)
                {
                    strFiltre += " or ";
                }
                strFiltre += CSpvAlarmeDonnee.c_champEQUIP_ID + " in (" + blIdsEquip.ToString() + ")";
            }
            CFiltreData filtre = null;

            if (strFiltre.Length == 0)
            {
                filtre = new CFiltreDataImpossible();
            }
            else
            {
                filtre = new CFiltreData(strFiltre);
            }
            CListeObjetsDonnees lstAlarmes = new CListeObjetsDonnees(SchemaReseau.ContexteDonnee, typeof(CSpvAlarmeDonnee), filtre);

            IFormNavigable formNavigable = FindForm() as IFormNavigable;

            if (formNavigable != null && formNavigable.Navigateur != null)
            {
                CFormListeAlarms form = new CFormListeAlarms(lstAlarmes);
                formNavigable.Navigateur.AffichePage(form);
            }
        }
        //-----------------------------------------------------------------
        /// <summary>
        /// Le data du result contient le datatable correspondant à ce paramètre de visu
        /// </summary>
        /// <returns></returns>
        public CResultAErreur GetDataTable(CContexteDonnee contexteDonnee)
        {
            CResultAErreur     result     = CResultAErreur.True;
            CTypeDonneeCumulee typeDonnee = GetTypeDonneeCumulee(contexteDonnee);

            if (typeDonnee == null)
            {
                result.EmpileErreur(I.T("Unable to load Precalculated data type|20041"));
                return(result);
            }
            CListeObjetsDonnees lstDatas = new CListeObjetsDonnees(
                contexteDonnee,
                typeof(CDonneeCumulee),
                new CFiltreData(CTypeDonneeCumulee.c_champId + "=@1", m_nIdTypeDonneeCumulee));

            CParametreDonneeCumulee parametre = typeDonnee.Parametre;

            #region Filtrage des données
            CFiltreData filtreDonnees = null;
            int         nCle          = 0;
            foreach (CCleDonneeCumulee cle in parametre.ChampsCle)
            {
                if (cle.Champ != null && cle.Champ != "")
                {
                    CFiltreDonneePrecalculee filtreBase    = m_listeFiltresDeBase.FirstOrDefault(f => f.ChampAssocie == cle.Champ);
                    CFiltreDonneePrecalculee filtreUser    = m_listeFiltresUser.FirstOrDefault(f => f.ChampAssocie == cle.Champ);
                    CFiltreDynamique         filtreDynBase = filtreBase != null ? filtreBase.Filtre : null;
                    CFiltreDynamique         filtreDynUser = filtreUser != null ? filtreUser.Filtre : null;
                    CFiltreData filtre = null;
                    if (filtreDynUser != null && filtreDynUser.ComposantPrincipal != null)
                    {
                        result = filtreDynUser.GetFiltreData();
                        if (result)
                        {
                            filtre = result.Data as CFiltreData;
                        }
                    }
                    if (filtreDynBase != null && filtreDynBase.ComposantPrincipal != null)
                    {
                        result = filtreDynBase.GetFiltreData();
                        if (result)
                        {
                            filtre = CFiltreData.GetAndFiltre(filtre, result.Data as CFiltreData);
                        }
                    }
                    if (filtre != null && filtre.HasFiltre)
                    {
                        //Crée une liste d'objets correspondant au filtre
                        CListeObjetsDonnees lst = new CListeObjetsDonnees(contexteDonnee, cle.TypeLie);
                        lst.Filtre = filtre;
                        StringBuilder bl = new StringBuilder();
                        foreach (CObjetDonneeAIdNumerique obj in lst)
                        {
                            bl.Append(obj.Id);
                            bl.Append(',');
                        }
                        filtre = null;
                        if (bl.Length == 0)
                        {
                            filtre        = new CFiltreDataImpossible();
                            filtreDonnees = new CFiltreDataImpossible();
                        }
                        else
                        {
                            bl.Remove(bl.Length - 1, 1);
                            filtre        = new CFiltreData(CDonneeCumulee.GetNomChampCle(nCle) + " in (" + bl.ToString() + ")");
                            filtreDonnees = CFiltreData.GetAndFiltre(filtreDonnees, filtre);
                        }
                    }
                }
                nCle++;
            }
            #endregion
            if (filtreDonnees != null)
            {
                lstDatas.Filtre = filtreDonnees;
            }


            //Crée le datatable de base
            DataTable table = new DataTable();

            Dictionary <string, string> dicChampsACopier = new Dictionary <string, string>();
            nCle = 0;
            foreach (CCleDonneeCumulee cle in parametre.ChampsCle)
            {
                if (cle.Champ != "")
                {
                    DataColumn col = new DataColumn(cle.Champ, typeof(string));
                    table.Columns.Add(col);
                    dicChampsACopier[CDonneeCumulee.GetNomChampCle(nCle)] = col.ColumnName;
                }
                nCle++;
            }
            foreach (CParametreDonneeCumulee.CNomChampCumule nom in parametre.NomChampsDecimaux)
            {
                if (nom.NomChamp != "")
                {
                    DataColumn col = new DataColumn(nom.NomChamp, typeof(double));
                    table.Columns.Add(col);
                    dicChampsACopier[CDonneeCumulee.GetNomChampValeur(nom.NumeroChamp)] = nom.NomChamp;
                }
            }
            foreach (CParametreDonneeCumulee.CNomChampCumule nom in parametre.NomChampsDates)
            {
                if (nom.NomChamp != "")
                {
                    DataColumn col = new DataColumn(nom.NomChamp, typeof(DateTime));
                    table.Columns.Add(col);
                    dicChampsACopier[CDonneeCumulee.GetNomChampDate(nom.NumeroChamp)] = nom.NomChamp;
                }
            }
            foreach (CParametreDonneeCumulee.CNomChampCumule nom in parametre.NomChampsTextes)
            {
                if (nom.NomChamp != "")
                {
                    DataColumn col = new DataColumn(nom.NomChamp, typeof(string));
                    table.Columns.Add(col);
                    dicChampsACopier[CDonneeCumulee.GetNomChampTexte(nom.NumeroChamp)] = nom.NomChamp;
                }
            }

            foreach (CDonneeCumulee donnee in lstDatas)
            {
                DataRow rowSource = donnee.Row.Row;
                DataRow rowDest   = table.NewRow();
                foreach (KeyValuePair <string, string> kv in dicChampsACopier)
                {
                    rowDest[kv.Value] = rowSource[kv.Key];
                }
                table.Rows.Add(rowDest);
            }
            result = m_tableauCroise.CreateTableCroisee(table);

            if (OperationCumul != OperationsAgregation.None)
            {
                DataTable tableFinale = result.Data as DataTable;
                DataRow   row         = tableFinale.NewRow();
                bool      bHeaderFait = false;
                foreach (DataColumn col in tableFinale.Columns)
                {
                    CChampFinalDeTableauCroiseDonnee champDonnee = col.ExtendedProperties[CTableauCroise.c_ExtendedPropertyToColumnKey] as CChampFinalDeTableauCroiseDonnee;
                    if (champDonnee != null)
                    {
                        CDonneeAgregation donnee = CDonneeAgregation.GetNewDonneeForOperation(OperationCumul);
                        donnee.PrepareCalcul();
                        foreach (DataRow rowTmp in tableFinale.Rows)
                        {
                            donnee.IntegreDonnee(rowTmp[col]);
                        }
                        row[col] = donnee.GetValeurFinale();
                    }
                    else if (!bHeaderFait)
                    {
                        row[col]    = m_strLibelleTotal;
                        bHeaderFait = true;
                    }
                }
                tableFinale.Rows.Add(row);
            }
            return(result);
        }