public object Any(GetImporterState request) { _logger.Log(EErrorType.Info, " ****** Call start: GetImporterState"); GetImporterStateResponse response = new GetImporterStateResponse(); try { TransferHeader(request, response); if (IsValidSessionToken(request)) { _logger.Log(EErrorType.Info, string.Format("Current Importer state: {0}", Global.Importer.CurrentState.ToString())); response.Payload.State = Global.Importer.CurrentState.ToString(); response.Payload.LastImportRun = Global.Importer.ImportStart; response.Payload.LastImportEnd = Global.Importer.ImportEnd != DateTime.MinValue ? (DateTime?)Global.Importer.ImportEnd : null; foreach (var cmp in Global.Importer.CompaniesProcessed) { DTO.CompanyInfo cmpInfo = new DTO.CompanyInfo() { Code = cmp }; response.Payload.CompaniesProcessed.Add(cmpInfo); } response.Payload.ProcessedCount = response.Payload.CompaniesProcessed.Count; response.Success = true; } else { response.Success = false; response.Errors.Add(new Error() { Code = EErrorCodes.InvalidSession, Type = EErrorType.Error, Message = "Invalid session token" }); } } catch (Exception ex) { _logger.Log(ex); response.Success = false; response.Errors.Add(new Error() { Code = EErrorCodes.GeneralError, Type = EErrorType.Error, Message = string.Format("Unpexcted error: {0}", ex.Message) }); } _logger.Log(EErrorType.Info, " ****** Call end: GetImporterState"); return(response); }
public GetImporterStateResponse PostGetImporterState(GetImporterState request) { GetImporterStateResponse response = Post <GetImporterState, GetImporterStateResponse>("GetImporterState", request); return(response); }
static void Main(string[] args) { DateTime dtStart = DateTime.Now; DateTime dtEnd = DateTime.Now; DateTime dtLastSanitize = DateTime.MinValue; try { Console.WriteLine(string.Format("[{0}] Import Started", dtStart)); sessionToken = ConfigurationManager.AppSettings["FilingsSourcingServiceToken"]; techUtilsToken = ConfigurationManager.AppSettings["TechUtilsServiceToken"]; sanitizePeriodMins = Int32.Parse(ConfigurationManager.AppSettings["SanitizePeriodMinutes"]); DateTime periodEnd = ConfigurationManager.AppSettings["PeriodEnd"] != null?DateTime.Parse(ConfigurationManager.AppSettings["PeriodEnd"]) : DateTime.Now; DateTime periodStart = ConfigurationManager.AppSettings["PeriodStart"] != null?DateTime.Parse(ConfigurationManager.AppSettings["PeriodStart"]) : DateTime.Now - TimeSpan.FromDays(365); int importPeriodDays = Int32.Parse(ConfigurationManager.AppSettings["ImportPeriodDays"]); int statePollPeriodSeconds = Int32.Parse(ConfigurationManager.AppSettings["StatePollPeriodSeconds"]); string regulator = ConfigurationManager.AppSettings["Regulator"]; string symbols = ConfigurationManager.AppSettings["Symbols"]; string types = ConfigurationManager.AppSettings["Types"]; DateTime impPeriodEnd = periodEnd; DateTime impPeriodStart = periodEnd - TimeSpan.FromDays(importPeriodDays); fsClinet = new DMFX.Client.FilingsSourcing.ServiceClient(); tuClient = new DMFX.Client.TechUtils.ServiceClient(); ForceRunImport reqRunImport = new ForceRunImport(); reqRunImport.CompanyCodes = !string.IsNullOrEmpty(symbols) ? symbols.Split(new char[] { ',' }) : null; reqRunImport.RegulatorCode = regulator; reqRunImport.SessionToken = sessionToken; reqRunImport.Types = !string.IsNullOrEmpty(types) ? types.Split(new char[] { ',' }) : null; GetImporterState reqGetImpState = new GetImporterState(); reqGetImpState.SessionToken = sessionToken; while (impPeriodStart >= periodStart) { reqRunImport.DateEnd = impPeriodEnd; reqRunImport.DateStart = impPeriodStart; Console.WriteLine(string.Format("[{0}] Importing for {1} - {2}", DateTime.Now, impPeriodStart.ToShortDateString(), impPeriodEnd.ToShortDateString())); try { var resRunImport = fsClinet.PostForceRunImport(reqRunImport); if (resRunImport.Success) { bool isRunning = true; while (isRunning) { // checking if sanitization is needed if (DateTime.Now - dtLastSanitize >= TimeSpan.FromMinutes(sanitizePeriodMins)) { Sanitize(); dtLastSanitize = DateTime.Now; } // waiting Thread.Sleep(statePollPeriodSeconds * 1000); try { // checking state var resGetImpState = fsClinet.PostGetImporterState(reqGetImpState); if (resGetImpState.Success && resGetImpState.Payload.State == "Idle") { isRunning = false; Console.WriteLine(string.Format("[{0}] Import Completed, State = {1}, Imported = {2}", DateTime.Now, resGetImpState.Payload.State, resGetImpState.Payload.ProcessedCount)); } else { Console.WriteLine(string.Format("[{0}] Importing, State = {1}, Imported = {2}", DateTime.Now, resGetImpState.Payload.State, resGetImpState.Payload.ProcessedCount)); } } catch (Exception ex) { Console.WriteLine(string.Format("[{0}] Exception: {1} PostGetImporterState failed", DateTime.Now, ex.Message)); // waiting Thread.Sleep(statePollPeriodSeconds * 1000); } } impPeriodEnd = impPeriodStart; impPeriodStart = impPeriodEnd - TimeSpan.FromDays(importPeriodDays); } else { Console.WriteLine(string.Format("Failed to impoty for {0} - {1}, Reason: {2}, {3}", impPeriodStart, impPeriodEnd, resRunImport.Errors[0].Code, resRunImport.Errors[0].Message)); break; } } catch (Exception ex) { Console.WriteLine(string.Format("[{0}] Exception: {1} PostForceRunImport failed", DateTime.Now, ex.Message)); // waiting Thread.Sleep(statePollPeriodSeconds * 1000); } } } catch (Exception ex) { Console.WriteLine(string.Format("[{0}] Exception: {1}\r\n\tStack: {2}", DateTime.Now, ex.Message, ex.StackTrace)); } finally { dtEnd = DateTime.Now; } Console.WriteLine(string.Format("[{0}] Import Completed", dtEnd)); }