//-------------------------------------- private void InitChamps() { m_txtNomChamp.Text = m_champEdite.NomChamp; m_txtDescription.Text = m_champEdite.Description; m_lblDataType.Text = new CTypeChampBasique(m_champEdite.TypeChamp).Libelle; m_chkNoUpdate.Checked = m_champEdite.NoUpdateFromSnmp; m_chkNoWriteSNMP.Checked = m_champEdite.IsReadOnly; m_lblAcces.Text = m_champEdite.IsReadOnly ? I.T("Read only|20296") : I.T("Read/write|20297"); CFournisseurGeneriqueProprietesDynamiques fournisseur = new CFournisseurGeneriqueProprietesDynamiques(); CEntiteSnmpPourSupervision entiteTest = m_typeEntite.GetEntiteDeTest(); m_txtFormuleIndex.Init(fournisseur, new CObjetPourSousProprietes(entiteTest)); m_txtFormuleIndex.Formule = m_champEdite.FormuleIndex; TypeDonnee typeChampMap = TypeDonnee.tString; switch (m_champEdite.TypeChamp) { case ETypeChampBasique.Bool: typeChampMap = TypeDonnee.tBool; break; case ETypeChampBasique.Date: typeChampMap = TypeDonnee.tDate; break; case ETypeChampBasique.Decimal: typeChampMap = TypeDonnee.tDouble; break; case ETypeChampBasique.Int: typeChampMap = TypeDonnee.tEntier; break; case ETypeChampBasique.String: typeChampMap = TypeDonnee.tString; break; default: break; } m_txtSelectChampCustom.InitAvecFiltreDeBase(typeof(CChampCustom), "Nom", CFiltreData.GetAndFiltre(CChampCustom.GetFiltreChampsForRole(CEntiteSnmp.c_roleChampCustom), new CFiltreData(CChampCustom.c_champType + "=@1", (int)typeChampMap)), false); CChampCustom champ = new CChampCustom(m_contexteDonnee); if (m_champToCustom.IdChampCustom != null && champ.ReadIfExists(m_champToCustom.IdChampCustom.Value)) { m_txtSelectChampCustom.ElementSelectionne = champ; } else { m_txtSelectChampCustom.ElementSelectionne = null; } }
//--------------------------------------------------------------------- public void SetValeur(object objet, object valeur) { if (objet != null && objet is IObjetDonneeAChamps) { if (valeur is int) { if ((int)valeur >= 0) { CContexteDonnee contexte = ((IObjetDonneeAChamps)objet).ContexteDonnee; CChampCustom champ = new CChampCustom(contexte); if (champ.ReadIfExists(IdChampCustom)) { CObjetDonneeAIdNumerique objetDonne = (CObjetDonneeAIdNumerique)Activator.CreateInstance(champ.TypeObjetDonnee, new object[] { contexte }); if (objetDonne.ReadIfExists((int)valeur)) { CUtilElementAChamps.SetValeurChamp((IObjetDonneeAChamps)objet, m_nIdChampCustom, objetDonne); } else { throw new Exception(I.T("Object @1 @2 doesn't exist|515", DynamicClassAttribute.GetNomConvivial(champ.TypeObjetDonnee), valeur.ToString())); } } } } else { CUtilElementAChamps.SetValeurChamp((IObjetDonneeAChamps)objet, m_nIdChampCustom, null); } } }
private static void ImporterChamps() { StreamReader reader = new StreamReader("C:\\Partage\\Import Orange\\Champs controles.txt", Encoding.Default); string strLigne = reader.ReadLine(); strLigne = reader.ReadLine(); using (CContexteDonnee contexte = new CContexteDonnee(CSessionClient.GetSessionUnique().IdSession, true, false)) { while (strLigne != null) { CRoleChampCustom roleSite = CRoleChampCustom.GetRole(CSite.c_roleChampCustom); CRoleChampCustom roleWorkBook = CRoleChampCustom.GetRole(CDossierSuivi.c_roleChampCustom); CRoleChampCustom roleCaracteristique = CRoleChampCustom.GetRole(CCaracteristiqueEntite.c_roleChampCustom); string[] datas = strLigne.Split('\t'); if (datas.Length >= 1) { CChampCustom champ = new CChampCustom(contexte); if (!champ.ReadIfExists(new CFiltreData(CChampCustom.c_champNom + "=@1", datas[0]))) { champ.CreateNewInCurrentContexte(); } champ.Nom = datas[0]; C2iTypeDonnee tp = new C2iTypeDonnee(TypeDonnee.tString); if (datas.Length > 1) { if (datas[1].ToUpper() == "BOOL") { tp = new C2iTypeDonnee(TypeDonnee.tBool); } else if (datas[1].ToUpper() == "DATE") { tp = new C2iTypeDonnee(TypeDonnee.tDate); } } champ.TypeDonneeChamp = tp; champ.Categorie = ""; if (datas.Length > 2) { champ.Categorie = datas[2]; } CRoleChampCustom role = roleCaracteristique; champ.Role = role; } strLigne = reader.ReadLine(); } reader.Close(); CResultAErreur result = contexte.SaveAll(true); if (!result) { CFormAfficheErreur.Show(result.Erreur); } } }
//------------------------------------------------------- private void InitChamps() { if (m_blocWorkflow == null) { return; } m_txtSelectWorkflow.Init(typeof(CTypeWorkflow), "Libelle", false); if (m_blocWorkflow.DbKeyTypeWorkflow != null) { CTypeWorkflow wkf = new CTypeWorkflow(CSc2iWin32DataClient.ContexteCourant); if (wkf.ReadIfExists(m_blocWorkflow.DbKeyTypeWorkflow)) { m_txtSelectWorkflow.ElementSelectionne = wkf; } } m_txtSelectTypeProjet.Init(typeof(CTypeProjet), "Libelle", false); if (m_blocWorkflow.DbKeyTypeProjet != null) { CTypeProjet typeProjet = new CTypeProjet(CSc2iWin32DataClient.ContexteCourant); if (typeProjet.ReadIfExists(m_blocWorkflow.DbKeyTypeProjet)) { m_txtSelectTypeProjet.ElementSelectionne = typeProjet; } } m_cmbProjectField.Init(typeof(CChampCustom), CFiltreData.GetAndFiltre(CChampCustom.GetFiltreChampsForRole(CWorkflow.c_roleChampCustom), new CFiltreData( CChampCustom.c_champTypeObjetDonnee + "=@1", typeof(CProjet).ToString())), "Nom", false); if (m_blocWorkflow.IdChampProjet != null) { CChampCustom champ = new CChampCustom(CSc2iWin32DataClient.ContexteCourant); if (champ.ReadIfExists(m_blocWorkflow.IdChampProjet.Value)) { m_cmbProjectField.ElementSelectionne = champ; } } m_listeAffectations.Clear(); m_listeAffectations.AddRange(m_blocWorkflow.AffectationsCreationEtDemarrage); m_txtFormuleGanttId.Init(new CFournisseurPropDynStd(), typeof(CEtapeWorkflow)); m_txtFormuleGanttId.Formule = m_blocWorkflow.FormuleGanttId; m_chkGererIterations.Checked = m_blocWorkflow.GererIteration; }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void m_lnkCreateField_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { if (m_txtSelectChampCustom.ElementSelectionne == null) { m_champToCustom.IdChampCustom = null; if (m_champToCustom.AssociationRapide(m_contexteDonnee, true)) { CChampCustom champ = new CChampCustom(m_contexteDonnee); if (m_champToCustom.IdChampCustom != null && champ.ReadIfExists(m_champToCustom.IdChampCustom.Value, false)) { m_txtSelectChampCustom.ElementSelectionne = champ; } } } }
//------------------------------------------------------------------- public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte) { CResultAErreur result = base.TraitementAvantSauvegarde(contexte); if (result) { result = SObjetHierarchiqueServeur.TraitementAvantSauvegarde(contexte, GetNomTable()); } DataTable table = contexte.Tables[GetNomTable()]; if (table == null) { return(result); } ArrayList lst = new ArrayList(table.Rows); Dictionary <int, CMapChampEntiteToRowCustom> dicEntitesToChamps = new Dictionary <int, CMapChampEntiteToRowCustom>(); foreach (DataRow row in table.Rows) { if (row.RowState == DataRowState.Modified || row.RowState == DataRowState.Added) { CTypeEntiteSnmp typeEntite = new CTypeEntiteSnmp(row); CMapChampEntiteToRowCustom map = null; foreach (CChampEntiteFromQueryToChampCustom champ in typeEntite.ChampsFromQuery) { if (champ.IdChampCustom != null && champ.IdChampCustom.Value < 0) { CChampCustom champCustom = new CChampCustom(contexte); if (champCustom.ReadIfExists(champ.IdChampCustom.Value, false)) { if (map == null) { map = new CMapChampEntiteToRowCustom(); dicEntitesToChamps[typeEntite.Id] = map; } map[champ.Champ.Id] = champCustom.Row.Row; } } } } } if (dicEntitesToChamps.Count > 0) { table.ExtendedProperties[GetType()] = dicEntitesToChamps; } return(result); }
//------------------------------------------------------------------------------- public CResultAErreurType <string> GetFieldOIDWithEntitePourSupervision(int nIdChampCustom, CEntiteSnmpPourSupervision ettPourSup) { CResultAErreurType <string> resString = new CResultAErreurType <string>(); CColumnDefinitionSNMP colSnmp = GetSourceColumn(nIdChampCustom); if (colSnmp == null) { CChampCustom champ = new CChampCustom(ContexteDonnee); string strChamp = nIdChampCustom.ToString(); if (champ.ReadIfExists(nIdChampCustom)) { strChamp = champ.Nom; } resString.EmpileErreur(I.T("Can not find snmp source for @1|20099", strChamp)); return(resString); } IEnumerable <CChampEntiteFromQueryToChampCustom> lstChamps = TypeEntiteSnmp.ChampsFromQuery; CChampEntiteFromQueryToChampCustom assocChamp = lstChamps.FirstOrDefault(c => c.IdChampCustom == nIdChampCustom); string strOID = colSnmp.OIDString; string strIndex = Index; if (assocChamp != null && assocChamp.Champ.FormuleIndex != null) { if (ettPourSup == null) { ettPourSup = GetEntitePourSupervision(TypeEntiteSnmp.GetTypeEntitePourSupervision(null, false)); } CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(ettPourSup); CResultAErreur resTmp = assocChamp.Champ.FormuleIndex.Eval(ctxEval); if (resTmp && resTmp.Data != null) { strIndex = resTmp.Data.ToString(); } } if (strIndex.Length > 0) { if (!strIndex.StartsWith(".")) { strOID += "."; } strOID += strIndex; } resString.DataType = strOID; return(resString); }
//---------------------------------------------------- public bool AssociationRapide(CContexteDonnee ctxEnEdition, bool bCreationAutomatique) { if (Champ == null) { return(false); } if (IdChampCustom != null) { return(true); } string strNomChamp = Champ.NomChamp; CListeObjetsDonnees lst = new CListeObjetsDonnees(ctxEnEdition, typeof(CChampCustom)); CFiltreData filtre = new CFiltreData(CChampCustom.c_champNom + " like @1", strNomChamp); CChampCustom champ = new CChampCustom(ctxEnEdition); TypeDonnee typeChampCustom = GetTypeChampCustom(Champ.TypeChamp); int nIndex = 0; while (champ.ReadIfExists(filtre)) { if (champ.CodeRole == CEntiteSnmp.c_roleChampCustom && champ.TypeDonneeChamp.TypeDonnee == typeChampCustom) { IdChampCustom = champ.Id; return(true); } nIndex++; strNomChamp = Champ.NomChamp + "_" + nIndex; filtre.Parametres[0] = strNomChamp; } if (!bCreationAutomatique) { return(false); } champ = new CChampCustom(ctxEnEdition); champ.CreateNewInCurrentContexte(); champ.Nom = strNomChamp; champ.TypeDonneeInt = (int)typeChampCustom; champ.CodeRole = CEntiteSnmp.c_roleChampCustom; IdChampCustom = champ.Id; return(true); }
//------------------------------------------------- private CResultAErreurType <C2iExpression> GetFormuleFinaleForEntite(CEntiteSnmp entite) { CResultAErreurType <C2iExpression> result = new CResultAErreurType <C2iExpression>(); if (m_formulePolling == null) { result.EmpileErreur(I.T("Can not apply formula to entity @1|20254", entite.Libelle)); return(result); } C2iExpression formule = CCloner2iSerializable.Clone(m_formulePolling) as C2iExpression; ArrayList lst = formule.ExtractExpressionsType(typeof(C2iExpressionChamp)); foreach (C2iExpressionChamp exp in lst) { CDefinitionProprieteDynamiqueChampCustom def = exp.DefinitionPropriete as CDefinitionProprieteDynamiqueChampCustom; string strOID = null; if (def != null) { CChampCustom champ = new CChampCustom(CContexteDonneeSysteme.GetInstance()); if (champ.ReadIfExists(def.DbKeyChamp)) { strOID = entite.GetFieldOID(champ.Id); if (strOID.Trim().Length == 0) { strOID = null; } else { exp.DefinitionPropriete = new CDefinitionProprieteDynamiqueOID(strOID); } } } if (strOID == null) { result.EmpileErreur(I.T("Can not find SNMP field for @1|20255", def.Nom)); return(result); } } result.Data = formule; return(result); }
private CResultAErreur ImputeDureeSurActivite(CFractionIntervention fraction) { CResultAErreur result = CResultAErreur.True; if (fraction.DateDebut == null || fraction.DateFin == null) { return(result); } if (fraction.TempsDeTravail == null) { return(result); } Hashtable tableToDelete = new Hashtable(); //Stocke la liste des relations qui étaient présentes avant le travail //et les note comme étant à supprimer foreach (CIntervention_ActiviteActeur rel in fraction.RelationsActivite) { tableToDelete[rel] = true; } CTypeActiviteActeur typeActivite = fraction.Intervention.TypeIntervention.TypeActiviteActeur; bool bAvecSite = typeActivite.SiteObligatoire; if (typeActivite != null) { //Evalue les valeurs des champs custom pour l'activite CParametreRemplissageActiviteParIntervention parametreRemplissage = fraction.Intervention.TypeIntervention.ParametreRemplissageActivite; Dictionary <CChampCustom, object> valeursChamps = new Dictionary <CChampCustom, object>(); CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(fraction); if (parametreRemplissage != null) { foreach (CRemplisssageChampActiviteActeur remplissage in parametreRemplissage.ListeRemplissage) { CChampCustom champ = new CChampCustom(fraction.ContexteDonnee); if (champ.ReadIfExists(remplissage.IdChampCustom)) { C2iExpression formule = remplissage.Formule; if (formule != null) { result = formule.Eval(ctxEval); if (result) { valeursChamps[champ] = result.Data; } } } } } foreach (CIntervention_Intervenant relIntervenant in fraction.Intervention.RelationsIntervenants) { DateTime dt = ((DateTime)fraction.DateDebut).Date; //Attention, si on est sur une fraction sur plusieurs jours, le //pb est que la durée saisie (retenue pour l'intervention) peut //ne pas être égale aux différents jours d'imputation, //on réparti donc la durée de manière homogène sur les différents //Jour en faisant un prorata de chaque jour double fDureeAImputer = (double)fraction.TempsDeTravail; double fDureeReelle = (double)fraction.DureeReelle; while (dt < (DateTime)fraction.DateFin && fDureeAImputer > 0) { //Cherche pour l'intervention ses activités du bon type CFiltreData filtre = new CFiltreDataAvance(CActiviteActeur.c_nomTable, CTypeActiviteActeur.c_champId + "=@1 and " + CActiviteActeur.c_champDate + ">=@2 and " + CActiviteActeur.c_champDate + "<@3 and " + "Has(" + CIntervention_ActiviteActeur.c_nomTable + "." + CIntervention_ActiviteActeur.c_champId + ") and " + CActeur.c_champId + "=@4", typeActivite.Id, dt, dt.AddDays(1), relIntervenant.Intervenant.Id); if (bAvecSite) { filtre = CFiltreData.GetAndFiltre(filtre, new CFiltreData(CSite.c_champId + "=@1", fraction.Intervention.Site.Id)); } CListeObjetsDonnees listeActivites = new CListeObjetsDonnees(fraction.ContexteDonnee, typeof(CActiviteActeur)); listeActivites.Filtre = filtre; listeActivites.ReadDependances("RelationsInterventions"); CActiviteActeur activiteRetenue = null; CIntervention_ActiviteActeur relRetenue = null; foreach (CActiviteActeur activite in listeActivites) { bool bPrendre = true; foreach (KeyValuePair <CChampCustom, object> chpValeur in valeursChamps) { object valDeAct = activite.GetValeurChamp(chpValeur.Key.Id); if (valDeAct == null && chpValeur.Value != null) { bPrendre = false; break; } else if (chpValeur.Value == null && valDeAct != null) { bPrendre = false; break; } else if (chpValeur.Value != null && !chpValeur.Value.Equals(valDeAct)) { bPrendre = false; break; } } if (bPrendre) { activiteRetenue = activite; relRetenue = null; foreach (CIntervention_ActiviteActeur relInter in activiteRetenue.RelationsInterventions) { //Si l'activité est directement liée à cette fraction, prend celle ci de préférence if (relInter.FractionIntervention.Id == fraction.Id) { relRetenue = relInter; break; } } } } if (activiteRetenue == null) { //Création de l'activite activiteRetenue = new CActiviteActeur(fraction.ContexteDonnee); activiteRetenue.CreateNewInCurrentContexte(); activiteRetenue.TypeActiviteActeur = typeActivite; activiteRetenue.Acteur = relIntervenant.Intervenant; activiteRetenue.Date = dt; activiteRetenue.Duree = 0; if (bAvecSite) { activiteRetenue.Site = fraction.Intervention.Site; } foreach (KeyValuePair <CChampCustom, object> valChamp in valeursChamps) { activiteRetenue.SetValeurChamp(valChamp.Key.Id, valChamp.Value); } } if (relRetenue == null) { //Création de la relation à l'interventation relRetenue = new CIntervention_ActiviteActeur(fraction.ContexteDonnee); relRetenue.ActiviteActeur = activiteRetenue; relRetenue.DureeImputee = 0; relRetenue.FractionIntervention = fraction; } //Note que cette relation ne doit pas être supprimée tableToDelete[relRetenue] = false; double fDureeForThis = 0; if (dt == fraction.DateFin.Value.Date) { fDureeForThis = fDureeAImputer; //On affecte le reste } else { if (dt == fraction.DateDebut.Value.Date) { //On est sur le premier jour, //Utilise comme référence le temps qui sépare la date //de début de minuit TimeSpan sp = dt.AddDays(1) - fraction.DateDebut.Value; double fRatio = sp.TotalHours / fDureeReelle; fDureeForThis = fRatio * fraction.TempsDeTravail.Value; } else { fDureeForThis = 24.0 / fDureeReelle * fraction.TempsDeTravail.Value; } //Arrondi la durée calculé à la minute fDureeForThis = (int)fDureeForThis + (int)((fDureeForThis - (int)fDureeForThis) * 60.0 + .5) / 60.0; } fDureeAImputer -= fDureeForThis; if (relRetenue.DureeImputee != fDureeForThis) { //Impute la durée de la fraction sur l'activité relRetenue.ActiviteActeur.Duree -= relRetenue.DureeImputee; relRetenue.DureeImputee = (double)fDureeForThis; relRetenue.ActiviteActeur.Duree += fDureeForThis; } dt = dt.AddDays(1); } } } foreach (DictionaryEntry entry in tableToDelete) { if ((bool)entry.Value) { //Supprime la relation CIntervention_ActiviteActeur relToDelete = (CIntervention_ActiviteActeur)entry.Key; if (relToDelete.Row.RowState != DataRowState.Deleted) { CActiviteActeur activiteAncienne = relToDelete.ActiviteActeur; //SC 10/3/2014 : La désimputation du temps de l'activité se fait dans CIntervention_activiteActeurServeur.TraitementAvantSauvegardee //activiteAncienne.Duree -= relToDelete.DureeImputee; result = relToDelete.Delete(true); /*if ( result && activiteAncienne.Duree == 0 ) * result = activiteAncienne.Delete(); * if ( !result ) * return result;*/ } } } return(result); }
//------------------------------------------------------------------------------- public CResultAErreur FillFromSnmp(CEntiteSnmpPourSupervision entiteFromSnmp) { CResultAErreur result = CResultAErreur.True; CTypeAgentSnmp typeAgent = AgentSnmp.TypeAgent; CTypeEntiteSnmp[] typesEntites = (CTypeEntiteSnmp[])typeAgent.TypesEntites.ToArray(typeof(CTypeEntiteSnmp)); CTypeEntiteSnmp typeEntite = typesEntites.FirstOrDefault(t => t.Id.ToString() == entiteFromSnmp.TypeEntite.Id); if (typeEntite == null) { result.EmpileErreur(I.T("Can not find Snmp entity type @1|20309", entiteFromSnmp.TypeEntite.Id)); return(result); } TypeEntiteSnmp = typeEntite; Index = entiteFromSnmp.Index; Libelle = entiteFromSnmp.Libelle; //Affecte les champs foreach (CChampEntiteFromQueryToChampCustom champ in typeEntite.ChampsFromQuery) { if (champ.IdChampCustom != null) { CChampCustom champCustom = new CChampCustom(ContexteDonnee); if (champCustom.ReadIfExists(champ.IdChampCustom)) { object valeur = entiteFromSnmp.GetValeurChamp(champ.Champ.Id); if (valeur != null) { if (champCustom.TypeDonneeChamp.TypeDonnee == TypeDonnee.tObjetDonneeAIdNumeriqueAuto) { Type tp = champCustom.TypeObjetDonnee; CObjetDonneeAIdNumerique obj = Activator.CreateInstance(tp, new object[] { ContexteDonnee }) as CObjetDonneeAIdNumerique; if (valeur is int) { if (obj != null && obj.ReadIfExists((int)valeur, true)) { SetValeurFromSnmp(champ.IdChampCustom.Value, obj); } } else { SetValeurFromSnmp(champ.IdChampCustom.Value, null); } } else { SetValeurFromSnmp(champ.IdChampCustom.Value, valeur); } } } } } //calcule le libellé if (typeEntite.FormuleCalculLibelle != null) { CContexteEvaluationExpression ctx = new CContexteEvaluationExpression(this); result = typeEntite.FormuleCalculLibelle.Eval(ctx); if (result && result.Data != null) { Libelle = result.Data.ToString(); } result = CResultAErreur.True; } return(result); }