//------------------------------------------------------------- private static void AddDetailEquipementToDb( CEquipement eqTimos, TID.CEquipement equipementParent, string strIdChampsCustom, CMemoryDb db ) { DateTime dt = DateTime.Now; TID.CEquipement eqpt = new TimosInventory.data.CEquipement(db); eqpt.CreateNew(eqTimos.Id); eqpt.IdTimos = eqTimos.Id; eqpt.Row[TID.CTypeEquipement.c_champId] = eqTimos.Row[CTypeEquipement.c_champId].ToString(); if (eqTimos.Row[CRelationTypeEquipement_Constructeurs.c_champId] != DBNull.Value) { eqpt.Row[TID.CTypeEquipementConstructeur.c_champId] = eqTimos.Row[CRelationTypeEquipement_Constructeurs.c_champId].ToString(); } eqpt.Row[TID.CSite.c_champId] = eqTimos.Row[CSite.c_champId]; eqpt.NumeroSerie = eqTimos.NumSerie; eqpt.EquipementParent = equipementParent; eqpt.Coordonnee = eqTimos.Coordonnee; eqpt.CodeOptionsControleCoordonnees = eqTimos.OptionsControleCoordonneesPropreInt; eqpt.NbUnitesOccupees = eqTimos.NbUnitesOccupees; eqpt.Row[CEquipement.c_champUniteOccupation] = eqTimos.Row[CEquipement.c_champUniteOccupation]; if (strIdChampsCustom.Length > 0) { CListeObjetsDonnees relChamps = eqTimos.RelationsChampsCustom; relChamps.Filtre = new CFiltreData(CChampCustom.c_champId + " in (" + strIdChampsCustom + ")"); foreach (CRelationElementAChamp_ChampCustom relChamp in relChamps) { eqpt.SetValeurChamp(relChamp.Row[CChampCustom.c_champId].ToString(), relChamp.Valeur); } } TimeSpan sp = DateTime.Now - dt; System.Console.WriteLine(sp.TotalMilliseconds); CParametrageSystemeCoordonnees paramTimos = eqTimos.ParametrageCoordonneesPropre; if (paramTimos != null) { TID.CParametrageSystemeCoordonnees param = ImporteParametrageSC(paramTimos, db, null, null); if (param != null) { param.Equipement = eqpt; } } sp = DateTime.Now - dt; System.Console.WriteLine(sp.TotalMilliseconds); foreach (CEquipement eqptFils in eqTimos.EquipementsContenus) { AddDetailEquipementToDb(eqptFils, eqpt, strIdChampsCustom, db); } }
private static void AddDetailSiteToDb(CSite siteTimos, TID.CSite siteParent, CMemoryDb db) { TID.CSite site = new TimosInventory.data.CSite(db); site.CreateNew(siteTimos.Id); site.Libelle = siteTimos.Libelle; site.Row[TID.CTypeSite.c_champId] = siteTimos.Row[CTypeSite.c_champId.ToString()]; site.SiteParent = siteParent; site.CodeOptionsControleCoordonnees = siteTimos.OptionsControleCoordonneesPropreInt; CParametrageSystemeCoordonnees paramTimos = siteTimos.ParametrageCoordonneesApplique; TID.CParametrageSystemeCoordonnees parametrage = ImporteParametrageSC( paramTimos, db, null, null); if (parametrage != null) { parametrage.Site = site; } foreach (CSite siteFils in siteTimos.SitesFils) { AddDetailSiteToDb(siteFils, site, db); } }
//----------------------------------------------------------------- private static TID.CParametrageSystemeCoordonnees ImporteParametrageSC( CParametrageSystemeCoordonnees paramTimos, CMemoryDb db, TID.CIndexIdTimos <TID.CSystemeCoordonnees> dicSC, TID.CIndexIdTimos <TID.CRelationSystemeCoordonnees_FormatNumerotation> dicRFN) { if (paramTimos == null) { return(null); } TID.CParametrageSystemeCoordonnees parametrage = null; TID.CSystemeCoordonnees sc = null; if (dicSC != null) { sc = dicSC.GetSafe((int?)paramTimos.Row[CSystemeCoordonnees.c_champId, true]); } parametrage = new TimosInventory.data.CParametrageSystemeCoordonnees(db); parametrage.CreateNew(); if (sc != null) { parametrage.SystemeCoordonnees = sc; } else { parametrage.Row[TID.CSystemeCoordonnees.c_champId] = paramTimos.Row[TID.CSystemeCoordonnees.c_champId]; } foreach (CParametrageNiveau paramNTimos in paramTimos.ParametragesNiveauxOrdonnees) { TID.CRelationSystemeCoordonnees_FormatNumerotation relFN = null; if (dicRFN != null) { relFN = dicRFN.GetSafe((int?)paramNTimos.Row[CRelationSystemeCoordonnees_FormatNumerotation.c_champId, true]); } TID.CParametrageNiveau paramN = new TimosInventory.data.CParametrageNiveau(db); paramN.CreateNew(); paramN.ParametrageSystemeCoordonnees = parametrage; paramN.PremierIndice = paramNTimos.PremierIndice; paramN.Taille = paramNTimos.Taille; if (relFN != null) { paramN.RelationSysCoor_FormatNum = relFN; } else { paramN.Row[TID.CRelationSystemeCoordonnees_FormatNumerotation.c_champId] = paramNTimos.Row[CRelationSystemeCoordonnees_FormatNumerotation.c_champId]; } } return(parametrage); }
//------------------------------------------------------------------------ private static void AddTypesEquipementsToDb(CContexteDonnee ctx, CMemoryDb db) { CListeObjetDonneeGenerique <CTypeEquipement> lst = new CListeObjetDonneeGenerique <CTypeEquipement>(ctx); lst.ReadDependances("RelationsConstructeurs"); lst.ReadDependances("ParametragesSystemesCoordonnees"); lst.ReadDependances("RelationsTypesParents"); TID.CIndexIdTimos <TID.CConstructeur> dicConstructeurs = TID.CIndexIdTimos <TID.CConstructeur> .GetIdTimosIndex(db); TID.CIndexIdTimos <TID.CSystemeCoordonnees> dicSC = TID.CIndexIdTimos <TID.CSystemeCoordonnees> .GetIdTimosIndex(db); TID.CIndexIdTimos <TID.CRelationSystemeCoordonnees_FormatNumerotation> dicRFN = TID.CIndexIdTimos <TID.CRelationSystemeCoordonnees_FormatNumerotation> .GetIdTimosIndex(db); foreach (CTypeEquipement tpTimos in lst) { TID.CTypeEquipement tp = new TID.CTypeEquipement(db); tp.CreateNew(tpTimos.Id); tp.Libelle = tpTimos.Libelle; tp.NbUnitesOccupees = tpTimos.NbUnitesOccupees; tp.Row[TID.CTypeEquipement.c_champUniteOccupation] = tpTimos.Row[CTypeEquipement.c_champUniteOccupation]; tp.OptionsControleCoordonneesPropreInt = tpTimos.OptionsControleCoordonneesPropreInt; foreach (CRelationTypeEquipement_Constructeurs relConsTimos in tpTimos.RelationsConstructeurs) { TID.CTypeEquipementConstructeur tpCons = new TID.CTypeEquipementConstructeur(db); int?nId = (int?)relConsTimos.Row[CDonneesActeurConstructeur.c_champId, true]; TID.CConstructeur cons = dicConstructeurs.GetSafe(nId); if (cons != null) { tpCons.CreateNew(relConsTimos.Id); tpCons.IdTimos = relConsTimos.Id; tpCons.TypeEquipement = tp; tpCons.Constructeur = cons; tpCons.Reference = relConsTimos.Reference; } } //Coordonnées CParametrageSystemeCoordonnees paramTimos = tpTimos.ParametrageCoordonneesPropre; TID.CParametrageSystemeCoordonnees parametrage = ImporteParametrageSC( paramTimos, db, dicSC, dicRFN); if (parametrage != null) { parametrage.TypeEquipement = tp; } foreach (CRelationTypeEquipement_Heritage relTimos in tpTimos.RelationsTypesParents) { TID.CRelationTypeEquipement_Heritage rel = new TimosInventory.data.CRelationTypeEquipement_Heritage(db); rel.CreateNew(relTimos.Id); rel.Row[TID.CRelationTypeEquipement_Heritage.c_champIdTypeFils] = relTimos.Row[CRelationTypeEquipement_Heritage.c_champIdTypeFils]; rel.Row[TID.CRelationTypeEquipement_Heritage.c_champIdTypeParent] = relTimos.Row[CRelationTypeEquipement_Heritage.c_champIdTypeParent]; } } }
/// <summary> /// Vérifie que la coordonnée demandée est valide pour le fils demandé dans le /// parent demandé /// </summary> /// <param name="parent"></param> /// <param name="fils"></param> /// <param name="strCoordonnee"></param> /// <returns></returns> public static CResultAErreur VerifieCoordonneeFils(IObjetAFilsACoordonnees parent, IObjetACoordonnees fils, string strCoordonnee) { CResultAErreur result = CResultAErreur.True; ///Vérifie qu'on a ce qu'il faut pour bosser !! if (parent == null) { result.EmpileErreur(I.T("Impossible to check the coordinates of an object which is not positioned|259")); return(result); } if (fils == null) { return(result); } CParametrageSystemeCoordonnees parametrage = parent.ParametrageCoordonneesApplique; if (parametrage == null || parametrage.SystemeCoordonnees == null) { return(result); } EOptionControleCoordonnees?optionControle = parent.OptionsControleCoordonneesApplique; if (optionControle == null) { optionControle = EOptionControleCoordonnees.TousControles; } if (!IsAppliquable(optionControle.Value, fils)) { return(result); } //Test Coordonnée vide if (strCoordonnee == "") { if ((optionControle & EOptionControleCoordonnees.IgnorerLesFilsSansCoordonnees) == EOptionControleCoordonnees.IgnorerLesFilsSansCoordonnees) { return(result); } else { result.EmpileErreur(I.T("Mandatory coordinate|258")); return(result); } } ///Vérifie que la coordonnée a le bon format result = parametrage.VerifieCoordonnee(strCoordonnee); if (!result) { return(result); } string strCoordonneeFin = strCoordonnee; COccupationCoordonnees occupation = fils.OccupationCoordonneeAppliquee; //Prend en compte l'occupation if ((optionControle & EOptionControleCoordonnees.IgnorerLoccupation) != EOptionControleCoordonnees.IgnorerLoccupation) { if (occupation == null) { result.EmpileErreur(I.T("No occupation defined : control is impossible|256")); return(result); } if (occupation.NbUnitesOccupees < 1) { result.EmpileErreur(I.T("Incorrect number of occupied units|257")); return(result); } if (occupation.NbUnitesOccupees != 1) //1->coord fin = coord début ! { result = parametrage.SystemeCoordonnees.AjouteDansNiveau(strCoordonnee, occupation.NbUnitesOccupees - 1); if (!result) { return(result); } strCoordonneeFin = (string)result.Data; //Vérifie que la coordonnée de fin est correcte result = parametrage.VerifieCoordonnee(strCoordonneeFin); if (!result) { return(result); } } } //Vérifie que l'unité est cohérente if ((optionControle & EOptionControleCoordonnees.IgnorerLesUnites) != EOptionControleCoordonnees.IgnorerLesUnites && !fils.IgnorerUnite) { if (occupation == null) { result.EmpileErreur(I.T("No occupation defined : control is impossible|256")); return(result); } result = parametrage.SystemeCoordonnees.VerifieUnite(strCoordonnee, occupation.Unite); if (!result) { return(result); } } //Vérifie que la coordonnée n'est pas déjà occupée if ((optionControle & EOptionControleCoordonnees.AutoriserPlusieursFilsSurLaMemeCoordonnee) != EOptionControleCoordonnees.AutoriserPlusieursFilsSurLaMemeCoordonnee) { List <IObjetACoordonnees> lstobj = new List <IObjetACoordonnees>(); lstobj = parent.FilsACoordonnees; //On exclu l'objet actuel si il est déjà présent car il ne peut pas rentrer en conflit avec lui même if (lstobj.Contains(fils)) { lstobj.Remove(fils); } result = parametrage.Test_Interactions(strCoordonnee, strCoordonneeFin, lstobj); } result.Data = null; return(result); }