Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="item"></param>
        /// <param name="cache"></param>
        /// <param name="logger"></param>
        public void UpdateMakoAdmin(RunQueueItem item, SqlCacheRepo cache, ILogProvider logger)
        {
            if (item.PlanId == LastPlanId && item.RevisionId == LastRevisionId)
            {
                return;
            }

            if (CacheHelper.IsIncache(Config.CompanyId, item.PlanId, item.RevisionId, CacheHelper.CacheObjectType.Assembly))
            {
                Assembly = CacheHelper.GetFromCache <Assembly>(Config.CompanyId, item.PlanId, item.RevisionId, CacheHelper.CacheObjectType.Assembly);
                PlanName = CacheHelper.GetFromCache <string>(Config.CompanyId, item.PlanId, item.RevisionId, CacheHelper.CacheObjectType.ProjectName);
            }
            else
            {
                var response = new VsProjectDll().GetPlanDll(item.PlanId, item.RevisionId, ThresherToken);                 // TODO: Set up token
                Assembly = Assembly.Load(response.Dll);
                PlanName = response.PlanName;

                CacheHelper.SaveToCache(Config.CompanyId, item.PlanId, item.RevisionId, Assembly, CacheHelper.CacheObjectType.Assembly);
                CacheHelper.SaveToCache(Config.CompanyId, item.PlanId, item.RevisionId, PlanName, CacheHelper.CacheObjectType.ProjectName);
            }
            //
            // TODO: Figure out why we are doing a 'new' here.
            Admin = new MakoAdmin(Config.CompanyId, Assembly, cache, logger, item.PlanId, item.RevisionId);

            LastPlanId     = item.PlanId;
            LastRevisionId = item.RevisionId;
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="connStr"></param>
        /// <param name="companyId"></param>
        /// <param name="queueItem"></param>
        /// <param name="exc"></param>
        public static void LogQueueError(string connStr, int companyId, RunQueueItem queueItem, Exception exc)
        {
            try
            {
                using (var conn = new SqlConnection(connStr))
                    using (var cmd = conn.CreateCommand())
                    {
                        conn.Open();

                        cmd.CommandText = @"
                        Insert into [dbo].[LogCommRunner] (
	                     [CompanyID]			
	                    ,[QueueID]			
	                    ,[RunTy]				
	                    ,[RunPriorityTy]		
	                    ,[RunQueueStatusTy]	
	                    ,[RunID]				
	                    ,[TreeSnapshotID]   
	                    ,[VolumeSnapshotID] 
	                    ,[RunDescr]			
	                    ,[PeriodTy]			
	                    ,[PeriodID]			
	                    ,[PlanID]           
	                    ,[RevisionID]       
	                    ,[StartTime]			
	                    ,[ErrorTime]			
	                    ,[ErrorMessage]		
	                    ,[StackTrace]		
	                    ,[PercentComplete]  
	                    ,[ProcessLog]		
	                    ,[CreatedDate]      
	                    ,[CreatedBy]        
	                    ,[ModifiedDate]     
	                    ,[ModifiedBy]       
	                    ,[ProgName]         
                    )
                    Select
	                    [CompanyID]			
	                    ,[QueueID]			
	                    ,[RunTy]				
	                    ,[RunPriorityTy]		
	                    ,[RunQueueStatusTy]	
	                    ,[RunID]				
	                    ,[TreeSnapshotID]   
	                    ,[VolumeSnapshotID] 
	                    ,[RunDescr]			
	                    ,[PeriodTy]			
	                    ,[PeriodID]			
	                    ,@PlanId          
	                    ,@RevisionId     
	                    ,[StartTime]			
	                    ,SYSDATETIMEOFFSET()			
	                    ,@ErrorMessage
	                    ,@StackTrace		
	                    ,[PercentComplete]  
	                    ,[ProcessLog]		
	                    ,[CreatedDate]      
	                    ,[CreatedBy]        
	                    ,[ModifiedDate]     
	                    ,[ModifiedBy]       
	                    ,[ProgName]     
                    From [dbo].[RunQueue]
                    Where
	                    [CompanyID] = @CompanyID and
	                    [QueueID] = @QueueID

                    Delete From [dbo].[RunQueue] Where [CompanyID] = @CompanyID and [QueueID] = @QueueID
                    ";
                        cmd.Parameters.Add("@CompanyID", SqlDbType.Int).Value            = companyId;
                        cmd.Parameters.Add("@QueueID", SqlDbType.Int).Value              = queueItem.QueueId;
                        cmd.Parameters.Add("@PlanId", SqlDbType.Int).Value               = queueItem.PlanId;
                        cmd.Parameters.Add("@RevisionId", SqlDbType.Int).Value           = queueItem.RevisionId;
                        cmd.Parameters.Add("@ErrorMessage", SqlDbType.NVarChar).Value    = exc.Message;
                        cmd.Parameters.Add("@StackTrace", SqlDbType.NVarChar, 512).Value = exc.StackTrace;

                        cmd.ExecuteNonQuery();
                    }
            }
            catch (Exception ex)
            {
                // log it somehow later
                Console.WriteLine(ex.Message);
            }
        }
Beispiel #3
0
 public new static void RunCommissionsStatic(CompanyConfig config, RunQueueItem item, MakoAdmin makoAdmin, string connStr, QueueManagement queueManager)
 {
 }
Beispiel #4
0
        public override void RunCommissions(CompanyConfig config, RunQueueItem item, MakoAdmin makoAdmin, string connStr, QueueManagement queueManager)
        {
            try
            {
                //
                if (item.RunTy != 4)
                {
                    LoggingHelpers.InsertIntoLog(connStr, config.CompanyId, item.QueueId, $"{DateTime.UtcNow:G} [Info] Now Processing Real Time -  QueueId {item.QueueId}");
                }
                else
                {
                    LoggingHelpers.InsertIntoLog(connStr, config.CompanyId, item.QueueId, $"{DateTime.UtcNow:G} [Info] Now Processing Run -  QueueId {item.QueueId}");
                }

                //
                LoggingHelpers.InsertIntoLog(connStr, config.CompanyId, item.QueueId, $"{DateTime.UtcNow:G} RunTy({item.RunTy}), PlanId({item.QueueId}), RevisionId({item.RevisionId})");


                // Assembly assm, string typesXML, string bonusXML, string glossaryXML,
                // string overrideXML, string rankXML, string volumeXML
                var myschema = new MakoXMLSchemas(
                    makoAdmin.ProjectAssembly,
                    makoAdmin.ProjectAssembly.GetName().Name + ".MakoTypes.xml",
                    makoAdmin.ProjectAssembly.GetName().Name + ".MakoBonuses.xml",
                    "",
                    makoAdmin.ProjectAssembly.GetName().Name + ".MakoOverrides.xml",
                    makoAdmin.ProjectAssembly.GetName().Name + ".MakoRanks.xml",
                    makoAdmin.ProjectAssembly.GetName().Name + ".MakoVolumes.xml"
                    );

                MakoConfig comConfig = new MakoConfig()
                {
                    CompanyID = config.CompanyId,
                    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
                };

                LoggingHelpers.InsertIntoLog(connStr, config.CompanyId, item.QueueId, $"{DateTime.UtcNow.ToString("G")} [Info] Commission complete");

                //
                makoAdmin.ProcessCommissions(comConfig);

                //
                if (comConfig.RunID != 0 && comConfig.RunTy != 4)
                {
                    LoggingHelpers.UpdateRunLog(connStr, config.CompanyId, item.QueueId, comConfig.RunID);
                }
                //
                queueManager.DeleteQueueItem(item.QueueId);
            }
            catch (AggregateException e)
            {
                //
                foreach (var ex in e.InnerExceptions)
                {
                    LoggingHelpers.InsertIntoLog(connStr, config.CompanyId, item.QueueId, $"{DateTime.UtcNow:G} [Error] " + ex.Message);
                    LoggingHelpers.InsertIntoLog(connStr, config.CompanyId, item.QueueId, $"{DateTime.UtcNow:G} [Error] " + ex.StackTrace);
                }
                //
                LoggingHelpers.LogQueueError(connStr, config.CompanyId, item, e);

#if DEVELOPMENT
#else
                Common.API.SendGrid.SendGridHelper.SendAlertAsync("Mako Runner Exception", $"Company {config.CompanyName}, RunTy {item.RunTy}, Description {item.RunDescr} {Environment.NewLine} {e}",
                                                                  $"Company {config.CompanyName}, RunTy {item.RunTy}, Description {item.RunDescr} {Environment.NewLine} {e}");
#endif

                throw;
            }
            catch (Exception ex)
            {
                //
                LoggingHelpers.InsertIntoLog(connStr, config.CompanyId, item.QueueId, $"{DateTime.UtcNow:G} [Error] " + ex.Message);
                LoggingHelpers.InsertIntoLog(connStr, config.CompanyId, item.QueueId, $"{DateTime.UtcNow:G} [Error] " + ex.StackTrace);

                //
                LoggingHelpers.LogQueueError(connStr, config.CompanyId, item, ex);

#if DEVELOPMENT
#else
                if (!_isDevelopment)
                {
                    Common.API.SendGrid.SendGridHelper.SendAlertAsync("Mako Runner Exception", $"Company {config.CompanyName}, RunTy {item.RunTy}, Description {item.RunDescr} {Environment.NewLine} {ex}",
                                                                      $"Company {config.CompanyName}, RunTy {item.RunTy}, Description {item.RunDescr} {Environment.NewLine} {ex}");
                }
#endif
                throw;
            }
        }
Beispiel #5
0
 /// <summary>
 /// A placeholder for the method implemented in the derived classes.
 /// </summary>
 /// <param name="config"></param>
 /// <param name="item"></param>
 /// <param name="makoAdmin"></param>
 /// <param name="connStr"></param>
 /// <param name="queueManager"></param>
 /// <remarks>
 /// Derived classes must declare the RunCommissions as:
 ///		public override void RunCommissions(...)
 /// </remarks>
 public virtual void RunCommissions(CompanyConfig config, RunQueueItem item, MakoAdmin makoAdmin, string connStr, QueueManagement queueManager)
 {
     throw new NotImplementedException(
               "Error in RunCommissions. The method must have a new implementation in derived classes.");
 }