Ejemplo n.º 1
0
        protected override void OnStart(string[] args)
        {
            var version = System.Configuration.ConfigurationManager.AppSettings["version"];

            logToFile.Log($"OnStart {version}");

            timer.Start();

            //Run the first time on start
            Timer_Elapsed(this, null);
        }
        public void RunIntegracaoFormulas()
        {
            logToFile.Log(">>> Iniciando integração das formulas...");

            //Faz a leitura da data do ultimo item sincronizado
            var jonStoragePath = System.Configuration.ConfigurationManager.AppSettings["jonStoragePath"];
            var model          = JsonStorageHelper.Read <StorageModel>(jonStoragePath);

            //Se nao tiver data do ultimo item sincronizado, utiliza a data de 1 ano atrás
            var dataFormula = model.DtUltimaFormulaSincronizada.GetValueOrDefault(DateTime.UtcNow.AddDays(-1 * periodoCargaInicialFormulas).Date);

            //Obtem as formulas
            var lstFormulas = GetFormulas(dataFormula, model.IdsFormulaSincronizadasDoDia);

            if (lstFormulas.Any())
            {
                //Envia as formulas para API do PharmaRocket em varios pacotes menores
                PushPacotes(tamanhoPacote, lstFormulas, (
                                lstPacote => PushFormulas(idFarmaciaIntegracao, lstPacote)
                                )).Wait();

                //Se der tudo certo no envio, salva a data do ultimo item sincronizado
                var dataUltimaFormula = lstFormulas
                                        .Select(s => s.DataAlteracao)
                                        .OrderByDescending(o => o)
                                        .FirstOrDefault();

                //Como a data das formulas não possuem hora, armazena o ids das formulas sincronizadas no dia para não ficar enviando toda hora para a API
                var ids = lstFormulas
                          .Where(w => w.DataAlteracao.GetValueOrDefault().Date == dataUltimaFormula.GetValueOrDefault().Date)
                          .Select(s => s.Id.ToString())
                          .ToList();

                model.IdsFormulaSincronizadasDoDia = ids;
                model.DtUltimaFormulaSincronizada  = dataUltimaFormula;
                JsonStorageHelper.Write(jonStoragePath, model);

                logToFile.Log(">>> Integração das formulas executada com sucesso.");
            }
            else
            {
                logToFile.Log(">>> Nenhuma formula para sincronizar.");
            }
        }