public async Task <ActionResult> Execute(string tabId, int parentId, [FromBody] CustomActionQuery query) { CustomActionPrepareResult customActionToExecute = null; try { customActionToExecute = _service.PrepareForExecuting(tabId, parentId, query); Logger.Debug() .Message("Executing custom action url: {url}", customActionToExecute.CustomAction.FullUrl) .Write(); if (!customActionToExecute.IsActionAccessable) { throw new SecurityException(customActionToExecute.SecurityErrorMesage); } if (customActionToExecute.CustomAction.Action.IsInterface) { var model = ExecuteCustomActionViewModel.Create(tabId, parentId, query.Ids, customActionToExecute.CustomAction); return(await JsonHtml("ExecuteAction", model)); } return(Json(new { Url = customActionToExecute.CustomAction.FullUrl, PreActionUrl = customActionToExecute.CustomAction.PreActionFullUrl })); } catch (Exception ex) { if (customActionToExecute?.CustomAction?.Action == null) { throw; } if (customActionToExecute.CustomAction.Action.IsInterface) { return(Json(new { success = false, message = ex.Message })); } return(Json(MessageResult.Error(ex.Message))); } }
public CustomActionPrepareResult PrepareForExecuting(string hostId, int parentId, CustomActionQuery query) { var action = CustomActionRepository.GetByCode(query.ActionCode); var session = _repository.GetCurrent(); if (session == null) { throw new SecurityException("Session log record doesn't exist"); } session.Sid = Guid.NewGuid().ToString(); _repository.Update(session); action.SessionId = session.Sid; action.Ids = query.Ids; action.ParentId = parentId; return(SecurityCheck(new CustomActionPrepareResult { CustomAction = action }, action, query.Ids)); }
public ActionResult ExecutePreAction(string tabId, int parentId, [FromBody] CustomActionQuery query) { var msg = $"Action: {query.ActionCode}, ParentId: {parentId}, IDs: {string.Join(";", query.Ids)}"; return(Json(MessageResult.Confirm(msg))); }