//-------------------------------------------------------------
    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];
            }
        }
    }
Exemple #5
0
        /// <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);
        }