Exemple #1
0
        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);
        }
Exemple #2
0
        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));
        }