Ejemplo n.º 1
0
        public async Task <JsonResult> AddPipeLine([Required] CreatePipeLineViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(JsonModelStateErrors());
            }
            var addPipeLineRequest = await _service.AddPipeLineAsync(model);

            return(Json(addPipeLineRequest));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Add pipeline
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public virtual async Task <ResultModel <Guid> > AddPipeLineAsync(CreatePipeLineViewModel model)
        {
            if (model == null)
            {
                return(InvalidParametersResultModel <Guid> .Instance);
            }
            WorkFlow workflow = null;
            var      pipeLine = _mapper.Map <PipeLine>(model);

            if (pipeLine.WorkFlowId.HasValue)
            {
                var workFlowRequest = await _workFlowCreatorService.GetWorkFlowByIdAsync(pipeLine.WorkFlowId);

                if (!workFlowRequest.IsSuccess)
                {
                    return(new InvalidParametersResultModel <Guid>(PipeLineMessageResult.WORKFLOW_NOT_FOUND));
                }
                workflow = workFlowRequest.Result;
            }

            var pipeLineBd = await _context.PipeLines.
                             FirstOrDefaultAsync(x => string.Equals(x.Name.Trim(), pipeLine.Name.Trim(), StringComparison.CurrentCultureIgnoreCase));

            if (pipeLineBd != null)
            {
                return new ResultModel <Guid> {
                           IsSuccess = false, Errors = new List <IErrorModel> {
                               new ErrorModel {
                                   Message = "PipeLine [" + pipeLineBd.Name + "] exist"
                               }
                           }
                }
            }
            ;

            await _context.PipeLines.AddAsync(pipeLine);

            var dbResult = await _context.PushAsync();

            if (!dbResult.IsSuccess)
            {
                return(dbResult.Map <Guid>());
            }

            await AddStageToPipeLineAsync(new AddStageViewModel
            {
                PipeLineId = pipeLine.Id,
                Name       = "Start",
                Term       = 1,
                IsSystem   = true
            });
            await AddStageToPipeLineAsync(new AddStageViewModel
            {
                PipeLineId = pipeLine.Id,
                Name       = "End",
                IsSystem   = true
            });

            await _notify.SendNotificationAsync(new Notification
            {
                Content            = $"Add PipeLine {pipeLine?.Name}",
                Subject            = "Info",
                NotificationTypeId = NotificationType.Info
            });

            if (workflow != null)
            {
                await GeneratePipeLineStagesAsync(pipeLine.Id, workflow.States.ToList());
            }

            return(new SuccessResultModel <Guid>(pipeLine.Id));
        }