Exemplo n.º 1
0
        /// <summary>
        /// The constructor of the base class, from which Mako Runners should be derived,
        /// will store various bits of data relating to the service being created. These
        /// bits of data will be similar for all Mako Runners.
        /// </summary>
        /// <param name="keyServer"></param>
        /// <param name="consoleCommand"></param>
        public BaseMakoRunner(Guid keyServer, ConsoleCommand consoleCommand)
        {
            //
            Info = new RunnerInfo(consoleCommand);

            //
            MyRunnerId = keyServer;

            // Create the log provider to log progress.
            MakoLogger = new DelegateLogProvider();

            //
            MakoLogger._onProgressUpdate += MakoLogger__onProgressUpdate;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="companyConfig"></param>
        /// <param name="serviceProgressInfo"></param>
        protected BaseTopshelfWindowsService(CompanyConfig companyConfig, ServiceProgressInfo serviceProgressInfo)
        {
            //
            MakoSocket = new ServicesWebSocket();

            // Create the log provider to log progress.
            if (MakoLogger == null)
            {
                MakoLogger = new DelegateLogProvider();
            }

            // Set the event handler for change events.
            MakoLogger._onProgressUpdate += MakoLogger__onProgressUpdate;

            //
            ServiceProgressInfo = serviceProgressInfo;

            //
            Config = companyConfig;
        }
Exemplo n.º 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="appContract"></param>
        /// <param name="makoLogger"></param>
        /// <param name="makoCache"></param>
        /// <param name="queueManager"></param>
        private void ProcessQueueItem(ApplicationContract appContract, DelegateLogProvider makoLogger, SqlCacheRepo makoCache, QueueManagement queueManager)
        {
            // TODO: Find a smart way to check to see if there are changes to the connection strings and so forth

            //
            while (queueManager.FindNextQueueItem(out RunQueueItem item))             // TODO: Write authentication for app
            {
                //
                var startTime = DateTimeOffset.Now;
                _logRunTy      = item.RunTy;
                ConnectString  = appContract.GenerateConnectionStr();
                _logCompanyId  = Config.CompanyId;
                _logQueueId    = item.QueueId;
                _logPeriodType = item.PeriodTy;
                _logPeriodId   = item.PeriodId;

                try
                {
                    //
                    UpdateMakoAdmin(item, makoCache, makoLogger);

                    //
                    _listLog = new List <string>();
                    _listLog.Add("");
                    _listLog.Add($"{DateTime.UtcNow.ToString("G")} ------------------------------------------");
                    _listLog.Add(
                        $"{DateTime.UtcNow.ToString("G")} Now Processing Real Time -  QueueId {item.QueueId}");
                    _listLog.Add(
                        $"{DateTime.UtcNow.ToString("G")} RunTy({item.RunTy}), PlanId({item.PlanId}), RevisionId({item.RevisionId})");
                    _listLog.Add($"{DateTime.UtcNow.ToString("G")} ------------------------------------------");
                    _listLog.Add("");

                    // Assembly assm, string typesXML, string bonusXML, string glossaryXML,
                    // string overrideXML, string rankXML, string volumeXML
                    var myschema = new MakoXMLSchemas(
                        Assembly,
                        PlanName + ".MakoTypes.xml",
                        PlanName + ".MakoBonuses.xml",
                        "",
                        PlanName + ".MakoOverrides.xml",
                        PlanName + ".MakoRanks.xml",
                        PlanName + ".MakoVolumes.xml"
                        );
                    //
                    MakoConfig comConfig = new MakoConfig()
                    {
                        PeriodID  = item.PeriodId,
                        PeriodTy  = item.PeriodTy,
                        QueueID   = item.QueueId,
                        RunDescr  = item.RunDescr,
                        RunID     = item.RunId,
                        RunTy     = item.RunTy,
                        XMLSchema = myschema,
                        PlanID    = item.PlanId,
                        RevisonID = item.RevisionId
                    };
                    //
                    Admin.ProcessCommissions(comConfig);

                    //
                    var endTime = DateTimeOffset.Now;

                    //
                    if (comConfig.RunID != 0 && comConfig.RunTy != 4)
                    {
                        LoggingHelpers.UpdateRunLog(appContract.GenerateConnectionStr(), Config.CompanyId, item.QueueId,
                                                    comConfig.RunID);
                        queueManager.UpdateRunStartAndEndDate(appContract.GenerateConnectionStr(), Config.CompanyId, item.RunId,
                                                              startTime, endTime);
                    }

                    queueManager.DeleteQueueItem(item.QueueId);

                    var log = new FileLogger(Config.CompanyKey, item.QueueId, item.RunTy);
                    log.GenerateLog(_listLog);
                    _listLog.Clear();

                    //
                    if (!IsRunning)
                    {
                        break;
                    }
                }
                catch (Exception ex)
                {
                    var log = new FileLogger(Config.CompanyKey, item.QueueId, item.RunTy);
                    _listLog.Add($"{DateTime.UtcNow.ToString("G")} [Error] " + ex.Message);
                    _listLog.Add($"{DateTime.UtcNow.ToString("G")} [Error] " + ex.StackTrace);
                    log.GenerateLog(_listLog);
                    _listLog.Clear();

                    //
                    queueManager.LogQueueError(appContract.GenerateConnectionStr(), Config.CompanyId, item.QueueId, ex);
                }
            }
            //
            Thread.Sleep(TimeSpan.FromSeconds(1));
        }