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