public async Task <IActionResult> Search([FromQuery] WorkflowTransitionFunctionSearchRequest requestArgs) { return(await FunctionWrapper.ExecuteFunction(this, async() => { if (string.IsNullOrEmpty(requestArgs.TransitionId)) { throw new ApplicationException("Search parameters missing."); } return await _workflowTransitionFunctionRepository.Search(requestArgs); })); }
public async Task <IEnumerable <WorkflowTransitionFunction> > Search(WorkflowTransitionFunctionSearchRequest requestArgs) { if (string.IsNullOrEmpty(requestArgs.TransitionId)) { throw new ApplicationException("Required fields not supplied."); } var filter = Builders <WorkflowTransitionFunction> .Filter.Eq("TransitionId", new ObjectId(requestArgs.TransitionId)); try { var transitionFunctions = await _context.WorkflowTransitionFunctions.Find(filter).ToListAsync(); // Hydrate Function for all transition functions Dictionary <string, WorkflowFunction> functionCache = new Dictionary <string, WorkflowFunction>(); foreach (var transFunction in transitionFunctions) { string funcId = transFunction.FunctionId.ToString(); if (!functionCache.ContainsKey(funcId)) { transFunction.Function = await _workflowFunctionRepository.Get(transFunction.FunctionId); } else { transFunction.Function = functionCache[funcId]; } } return(transitionFunctions); } catch (Exception ex) { throw ex; } }