/// <summary>
        ///     Process an event asynchronously.
        /// </summary>
        /// <param name="e">event to process</param>
        /// <returns>
        ///     Task to wait on.
        /// </returns>
        public async Task HandleAsync(IMessageContext context, ReportAddedToIncident e)
        {
            _logger.Debug("doing filters..");
            IEnumerable <Trigger> triggers;

            try
            {
                triggers = _repository.GetForApplication(e.Incident.ApplicationId);
            }
            catch (Exception exception)
            {
                _logger.Error("Failed to load triggers for " + e.Incident.ApplicationId, exception);
                return;
            }

            foreach (var trigger in triggers)
            {
                var triggerContext = new TriggerExecutionContext
                {
                    Incident    = e.Incident,
                    ErrorReport = e.Report
                };
                var triggerResults = trigger.Run(triggerContext);
                foreach (var actionData in triggerResults)
                {
                    var action        = _actionFactory.Create(actionData.ActionName);
                    var actionContext = new ActionExecutionContext
                    {
                        Config      = actionData,
                        ErrorReport = e.Report,
                        Incident    = e.Incident
                    };
                    await action.ExecuteAsync(actionContext);
                }
            }

            _logger.Debug("filters done..");
        }
示例#2
0
文件: Triggers.cs 项目: viraj99/DWKit
 public Task <TriggerResult> ExecuteTriggerAsync(string name, EntityModel model, List <dynamic> entities, TriggerExecutionContext context, dynamic options)
 {
     if (_triggersAsync.ContainsKey(name))
     {
         return(_triggersAsync[name](model, entities, context, options));
     }
     throw new System.NotImplementedException();
 }
示例#3
0
文件: Triggers.cs 项目: viraj99/DWKit
        public async Task <TriggerResult> InitDocument(EntityModel model, List <dynamic> entities, TriggerExecutionContext context, dynamic options)
        {
            var user    = DWKitRuntime.Security.CurrentUser;
            var schemes = DWKitRuntime.Metadata.GetWorkflowByForm(model.Name);

            foreach (var entity in entities)
            {
                if (entity.Id == null)
                {
                    var initialState = schemes.Count == 0 ?
                                       new WorkflowState()
                    {
                         Name = "", SchemeCode = "", VisibleName = ""
                    } :
                    await WorkflowInit.Runtime.GetInitialStateAsync(schemes[0]);

                    entity.AuthorId  = user.GetOperationUserId();
                    entity.author    = user.GetOperationUserName();
                    entity.State     = initialState.Name;
                    entity.stateName = initialState.VisibleName;
                }
            }
            return(TriggerResult.Success());
        }
示例#4
0
 public Task <TriggerResult> ExecuteTriggerAsync(string name, EntityModel model, List <dynamic> entities, TriggerExecutionContext context, dynamic options)
 {
     throw new System.NotImplementedException();
 }
示例#5
0
 public TriggerResult ExecuteTrigger(string name, EntityModel model, List <dynamic> entities, TriggerExecutionContext context, dynamic options)
 {
     throw new NotImplementedException();
 }
示例#6
0
文件: Triggers.cs 项目: weitalu/HRM
        public async Task <TriggerResult> CheckLinkedSecurityUser(EntityModel model, List <dynamic> entities, TriggerExecutionContext context, dynamic options)
        {
            foreach (var entity in entities)
            {
                entity.Name = entity.FirstName + " " + entity.LastName;
                SecurityUser user = await SecurityUser.SelectByKey(entity.Id);

                if (user == null)
                {
                    user = new SecurityUser()
                    {
                        Id    = entity.Id,
                        Name  = entity.Name,
                        Email = entity.Email
                    };
                    await user.ApplyAsync();
                }
                else
                {
                    if (user.Name != entity.Name || user.Email != entity.Email)
                    {
                        user.StartTracking();
                        user.Name  = entity.Name;
                        user.Email = entity.Email;
                        await user.ApplyAsync();
                    }
                }

                await EmployeeBusiness.CheckDefaultRole(user.Id, "Users");
            }
            return(TriggerResult.Success());
        }
示例#7
0
文件: Triggers.cs 项目: weitalu/HRM
        public async Task <TriggerResult> InitFields(EntityModel model, List <dynamic> entities, TriggerExecutionContext context, dynamic options)
        {
            DynamicEntity fields = options as DynamicEntity;

            if (fields != null)
            {
                foreach (var entity in entities)
                {
                    if (entity[model.PrimaryKeyAttributeName] == null)
                    {
                        foreach (var field in fields.Dictionary)
                        {
                            entity.TrySetMember(field.Key, await ReplaceVariable(field.Value, model));
                        }
                    }
                }
            }
            return(TriggerResult.Success());
        }