/// <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; }
/// <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); } }
public new static void RunCommissionsStatic(CompanyConfig config, RunQueueItem item, MakoAdmin makoAdmin, string connStr, QueueManagement queueManager) { }
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; } }
/// <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."); }