/// <summary>
        /// Add new state
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public virtual async Task <ResultModel <Guid?> > AddStateToWorkFlowAsync(AddNewStateViewModel model)
        {
            Arg.NotNull(model, nameof(AddNewStateViewModel));
            var response        = new ResultModel <Guid?>();
            var workflowRequest = await GetWorkFlowByIdAsync(model.WorkFlowId);

            if (!workflowRequest.IsSuccess)
            {
                return(workflowRequest.Map <Guid?>());
            }
            var workFlow = workflowRequest.Result;
            var checkDuplicateStateName = workFlow.States.FirstOrDefault(x => x.Name.Equals(model.Name));

            if (checkDuplicateStateName != null)
            {
                response.Errors.Add(new ErrorModel(nameof(WorkFlowErrorCodes.GRWF_0x104), WorkFlowErrorCodes.GRWF_0x104));
                return(response);
            }

            var state = WorkFlowMapper.Map(model);

            if (!workFlow.States.Any())
            {
                state.IsStartState = true;
            }

            await _workFlowContext.States.AddAsync(state);

            var dbRequest = await _workFlowContext.PushAsync();

            return(dbRequest.Map <Guid?>(state.Id));
        }
Пример #2
0
 /// <summary>
 /// Map add new state to state entity
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public static State Map(AddNewStateViewModel model)
 {
     Arg.NotNull(model, nameof(AddNewStateViewModel));
     return(new State
     {
         Name = model.Name,
         WorkFlowId = model.WorkFlowId,
         Description = model.Description,
         AdditionalSettings = model.AdditionalSettings.SerializeAsJson()
     });
 }
Пример #3
0
 public async Task <JsonResult> AddStateToWorkFlow([Required] AddNewStateViewModel model)
 {
     return(!ModelState.IsValid ? Json(new InvalidParametersResultModel <Guid>().AttachModelState(ModelState))
         : await JsonAsync(_workFlowCreatorService.AddStateToWorkFlowAsync(model)));
 }