Exemple #1
0
        public void MsgPublishRecieved(string siteCodeMnemonique, string jsonMessage)
        {
            ISiteRepository siteRepo = new SiteRepository();
            Site            siteApi  = siteRepo.FindByCodeMnemonique(siteCodeMnemonique);

            IApiProtocol apiProtocol = null;

            mapLineApiProtocol.TryGetValue(siteApi.Ligne, out apiProtocol);
            if (apiProtocol != null)
            {
                var recievedParamValues = apiProtocol.readNewDataSiteJson(siteApi, jsonMessage);


                // ajout des données en base
                InsertPCComApiValues(recievedParamValues, siteApi);
            }
            this.UpdateSitePosition(siteCodeMnemonique, jsonMessage);
        }
Exemple #2
0
        public string GetSiteData(IList <Site> listSites)
        {
            IParamRepository paramRepo = new ParamRepository();

            string ReadingFeedback = null;

            foreach (var site in listSites)
            {
                IApiProtocol proto = null;
                mapLineApiProtocol.TryGetValue(site.Ligne, out proto);//getProtocolForSite(site.Id);
                if (proto != null)
                {
                    Thread th = Thread.CurrentThread;
                    if (String.IsNullOrEmpty(th.Name))
                    {
                        th.Name = "PCCOMApi_getSiteData_ " + site.Id;
                    }

                    // Insertion de traces dans la table log_application
                    //DiagBoxApp.Instance.GetLogger("EventLogTable").Trace(
                    //          message: string.Format("Launching new thread to retrieve data from PCComApi in the thread {0}", th.Name),
                    //        categories: "DiagBox;Applications;PCCOMAPI;PCCOMAPI;SpoolerPCComApi");


                    // get data from last acquisition to now, if not date acquisition get from 7 days. get from 7 days max
                    lock (proto)
                    {
                        var paramsValues = proto.readDataSite((site.DateAcquisition.HasValue && site.DateAcquisition.Value > DateTime.Now.AddDays(G_DAYS_BACKUP)) ? site.DateAcquisition.Value : DateTime.Now.AddDays(G_DAYS_BACKUP), DateTime.Now, site);


                        // insertion en base dans his_valeur en HQL et 1000lignes max par requêtes
                        bool ReadingOk = InsertPCComApiValues(paramsValues, site);
                        if (!ReadingOk)
                        {
                            ReadingFeedback = "Failed";
                        }
                    }
                }
            }
            return(ReadingFeedback);
        }
Exemple #3
0
        public void UpdateSitePosition(string siteCodeMnemonique, string jsonMessage)
        {
            ISiteRepository siteRepo = new SiteRepository();
            Site            siteApi  = siteRepo.FindByCodeMnemonique(siteCodeMnemonique);

            IApiProtocol apiProtocol = null;

            mapLineApiProtocol.TryGetValue(siteApi.Ligne, out apiProtocol);
            if (apiProtocol != null)
            {
                apiProtocol.GetSitePosition(siteApi, jsonMessage);

                try
                {
                    siteRepo.Update(siteApi);
                }
                catch
                {
                    Console.WriteLine("UpdateSitePosition problème lors de l'update du site");
                }
            }
        }
Exemple #4
0
        public IDictionary <OperationCyclique, IList <Site> > initialize(SessionManager sessionMngr)
        {
            IEnumerable <Ligne>  listApiLigne  = getAllApiLine();
            IProtocoleRepository protocoleRepo = new ProtocoleRepository();
            ISiteRepository      siteRepo      = new SiteRepository();

            mapLineApiProtocol = new Dictionary <Ligne, IApiProtocol>();
            //mapSiteOperationCyclique = new Dictionary<Site, IList<OperationCyclique>>();
            mapOperationCycliqueSites = new Dictionary <OperationCyclique, IList <Site> >(new comparerOperationCyclique());

            foreach (var apiLine in listApiLigne)
            {
                var proto = protocoleRepo.FindById(apiLine.Protocole.Id);
                //1- obtention du apiprotocol par ligne

                //swich case en fonction du protocol -> créer le bon api protocol
                IApiProtocol pProtocol = null;
                switch (proto.Nom.ToLower())
                {
                case "xilog":
                    pProtocol = new ApiProtocolXilog("http://decode.primayer.com/api/xilog/");     // 190415 EC en dur
                    break;;

                case "easeegiot":
                    var connexion = new ApiConnexionMQTTMngr(apiLine.apiUrl, apiLine.apiPort,
                                                             apiLine.apiUsername, apiLine.apiPassword, this);
                    pProtocol = new ApiProtocolEaseEGIot(connexion);
                    connexion.Subscribe(siteRepo.FindByIdLine(apiLine.Id));
                    break;;

                case "meteoidex":
                    pProtocol = new ApiProtocolMeteoIDEX("https://api.idex.fr/engine54/52/PortailJSON?flowName=Flux113_REFER_ListeDju&flowType=EAII&actionJSON=launch");     // 190509 EC en dur
                    break;;
                }
                if (pProtocol != null)
                {
                    mapLineApiProtocol.Add(apiLine, pProtocol);
                }
            }// rof each line
             // 2- obtention de l'opération cyclique par site  -- MAJ otention des sites par opération cyclique

            var listOC = getAllOperationCyclique();

            foreach (var cyclicOperation in listOC)
            {
                // vérifie que l'opération cyclique est sur un site api
                if (listApiLigne.Where(x => x.Id == cyclicOperation.Site.Ligne.Id).FirstOrDefault() != null)
                {
                    if (mapOperationCycliqueSites.ContainsKey(cyclicOperation) == false)
                    {
                        mapOperationCycliqueSites.Add(cyclicOperation, new List <Site>());
                    }


                    mapOperationCycliqueSites[cyclicOperation].Add(cyclicOperation.Site);
                }
            }


            // retourne le dictionnaire OC : list<site>
            return(mapOperationCycliqueSites);
        }