Exemplo n.º 1
0
        private async Task <WorkflowTransition> HydrateForGet(WorkflowTransition transition)
        {
            try
            {
                transition = await HydrateForGetAndSave(transition);

                var transFunctions = await _workflowTransitionFunctionRepository.Search(
                    new WorkflowTransitionFunctionSearchRequest()
                {
                    TransitionId = transition.Id.ToString()
                });

                transition.PreConditions = transFunctions
                                           .Where(f => f.Function.Type == WorkflowFunctions.WorkflowFunctionTypes.PreCondition).ToList();

                transition.Validations = transFunctions
                                         .Where(f => f.Function.Type == WorkflowFunctions.WorkflowFunctionTypes.Validation).ToList();

                transition.PostFunctions = transFunctions
                                           .Where(f => f.Function.Type == WorkflowFunctions.WorkflowFunctionTypes.PostFunction).ToList();

                if (transition.ScreenIds != null)
                {
                    transition.Screens = await _screenRepository.Find(transition.ScreenIds);
                }

                return(transition);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 2
0
 public async Task <IActionResult> Post([FromBody] WorkflowTransition item)
 {
     return(await FunctionWrapper.ExecuteFunction(this, async() =>
     {
         return await _workflowTransitionRepository.Add(item);
     }));
 }
Exemplo n.º 3
0
        public async Task <WorkflowTransition> Update(WorkflowTransition transition)
        {
            var filter = Builders <WorkflowTransition> .Filter.Eq("Id", transition.Id);

            try
            {
                if (string.IsNullOrEmpty(transition.Name) ||
                    transition.WorkflowId == ObjectId.Empty ||
                    transition.FromNodeId == ObjectId.Empty ||
                    transition.ToNodeId == ObjectId.Empty)
                {
                    throw new ApplicationException("Required fields missing.");
                }

                transition = await HydrateForSave(transition);

                await _context.WorkflowTransitions.ReplaceOneAsync(filter, transition);

                return(await Get(transition.Id));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 4
0
 public async Task <IActionResult> Put(string id, [FromBody] WorkflowTransition item)
 {
     return(await FunctionWrapper.ExecuteFunction(this, async() =>
     {
         item.Id = new ObjectId(id);
         return await _workflowTransitionRepository.Update(item);
     }));
 }
Exemplo n.º 5
0
        private async Task <WorkflowTransition> HydrateForSave(WorkflowTransition transition)
        {
            try
            {
                transition = await HydrateForGetAndSave(transition);

                return(transition);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 6
0
        private async Task <WorkflowTransition> HydrateForGetAndSave(WorkflowTransition transition)
        {
            try
            {
                var fromNode = await _workflowNodeRepository.Get(transition.FromNodeId);

                var toNode = await _workflowNodeRepository.Get(transition.ToNodeId);

                if (fromNode == null || toNode == null)
                {
                    throw new ApplicationException("Cannot find node.");
                }

                transition.FromNode = fromNode;
                transition.ToNode   = toNode;

                return(transition);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 7
0
        public async Task <WorkflowTransition> Add(WorkflowTransition transition)
        {
            try
            {
                if (string.IsNullOrEmpty(transition.Name) ||
                    transition.WorkflowId == ObjectId.Empty ||
                    transition.FromNodeId == ObjectId.Empty ||
                    transition.ToNodeId == ObjectId.Empty)
                {
                    throw new ApplicationException("Required fields missing.");
                }

                transition = await HydrateForSave(transition);

                await _context.WorkflowTransitions.InsertOneAsync(transition);

                return(await Get(transition.Id));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }