Example #1
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);
        }