public async Task <IHttpActionResult> UpdateWorkflowDiagram(int workflowId, [FromBody] DWorkflow workflow) { await _privilegesManager.Demand(Session.UserId, InstanceAdminPrivileges.AccessAllProjectData); if (workflow == null) { return(ResponseMessage(Request.CreateResponse(HttpStatusCode.BadRequest, new ImportWorkflowResult { ErrorMessage = ErrorMessages.WorkflowModelIsEmpty, WorkflowId = workflowId, ResultCode = ImportWorkflowResultCodes.InvalidModel }))); } var ieWorkflow = WorkflowHelper.MapDWorkflowToIeWorkflow(workflow); _workflowService.FileRepository = GetFileRepository(); var result = await _workflowService.UpdateWorkflowViaImport(Session.UserId, workflowId, ieWorkflow, workflowMode : WorkflowMode.Canvas); switch (result.ResultCode) { case ImportWorkflowResultCodes.Ok: return(Ok(result)); case ImportWorkflowResultCodes.InvalidModel: return(ResponseMessage(Request.CreateResponse(HttpStatusCode.BadRequest, result))); case ImportWorkflowResultCodes.Conflict: return(ResponseMessage(Request.CreateResponse(HttpStatusCode.Conflict, result))); default: // Should never happen. return(InternalServerError(new Exception("Unknown error."))); } }
public static IeWorkflow MapDWorkflowToIeWorkflow(DWorkflow sourceWorkflow) { var destinationWorkflow = new IeWorkflow { Id = sourceWorkflow.Id, Name = sourceWorkflow.Name, Description = sourceWorkflow.Description, IsActive = sourceWorkflow.IsActive, HasProcessArtifactType = sourceWorkflow.HasProcessArtifactType, NewArtifactEvents = sourceWorkflow.NewArtifactEvents?.Select(dNewArtifactEvent => new IeNewArtifactEvent { Id = dNewArtifactEvent.Id, Name = dNewArtifactEvent.Name, Triggers = MapToIeTriggers(dNewArtifactEvent.Triggers) }) .ToList() ?? new List <IeNewArtifactEvent>(), Projects = sourceWorkflow.Projects?.Select(dProject => new IeProject { Id = dProject.Id, Path = dProject.Path, ArtifactTypes = dProject.ArtifactTypes ?.Select( dArtifactType => new IeArtifactType { Id = dArtifactType.Id, Name = dArtifactType.Name }) .ToList() ?? new List <IeArtifactType>() }) .ToList() ?? new List <IeProject>(), PropertyChangeEvents = sourceWorkflow.PropertyChangeEvents?.Select(dPropertyChangeEvent => new IePropertyChangeEvent { Id = dPropertyChangeEvent.Id, Name = dPropertyChangeEvent.Name, PropertyId = dPropertyChangeEvent.PropertyId, PropertyName = dPropertyChangeEvent.PropertyName, Triggers = MapToIeTriggers(dPropertyChangeEvent.Triggers) }) .ToList() ?? new List <IePropertyChangeEvent>(), States = sourceWorkflow.States?.Select(dState => new IeState { Id = dState.Id, Name = dState.Name, IsInitial = dState.IsInitial, Location = dState.Location }) .ToList() ?? new List <IeState>(), TransitionEvents = sourceWorkflow.TransitionEvents?.Select(dTransitionEvent => new IeTransitionEvent { Id = dTransitionEvent.Id, Name = dTransitionEvent.Name, FromState = dTransitionEvent.FromState, FromStateId = dTransitionEvent.FromStateId, ToState = dTransitionEvent.ToState, ToStateId = dTransitionEvent.ToStateId, SkipPermissionGroups = dTransitionEvent.SkipPermissionGroups, PortPair = dTransitionEvent.PortPair != null ? new IePortPair { FromPort = Enum.IsDefined(typeof(DiagramPort), dTransitionEvent.PortPair.FromPort) ? dTransitionEvent.PortPair.FromPort : DiagramPort.None, ToPort = Enum.IsDefined(typeof(DiagramPort), dTransitionEvent.PortPair.ToPort) ? dTransitionEvent.PortPair.ToPort : DiagramPort.None } : null, Triggers = MapToIeTriggers(dTransitionEvent.Triggers), PermissionGroups = dTransitionEvent.PermissionGroups?.Select(dGroup => new IeGroup { Id = dGroup.Id, Name = dGroup.Name }) .ToList() ?? new List <IeGroup>() }) .ToList() ?? new List <IeTransitionEvent>() }; return(destinationWorkflow); }
public static DWorkflow MapIeWorkflowToDWorkflow(IeWorkflow sourceWorkflow) { var destinationWorkflow = new DWorkflow(); destinationWorkflow.Id = sourceWorkflow.Id; destinationWorkflow.Name = sourceWorkflow.Name; destinationWorkflow.Description = sourceWorkflow.Description; destinationWorkflow.IsActive = sourceWorkflow.IsActive; destinationWorkflow.HasProcessArtifactType = sourceWorkflow.HasProcessArtifactType; destinationWorkflow.NewArtifactEvents = sourceWorkflow.NewArtifactEvents?.Select(ieNewArtifactEvent => new DNewArtifactEvent { Id = ieNewArtifactEvent.Id, Name = ieNewArtifactEvent.Name, Triggers = MapToDTriggers(ieNewArtifactEvent.Triggers) }).ToList(); destinationWorkflow.Projects = sourceWorkflow.Projects?.Select(ieProject => new DProject { Id = ieProject.Id, ArtifactTypes = ieProject.ArtifactTypes?.Select(ieArtifactType => new DArtifactType { Id = ieArtifactType.Id, Name = ieArtifactType.Name }) }).ToList(); destinationWorkflow.PropertyChangeEvents = sourceWorkflow.PropertyChangeEvents?.Select( iePropertyChangeEvent => new DPropertyChangeEvent { Id = iePropertyChangeEvent.Id, Name = iePropertyChangeEvent.Name, PropertyId = iePropertyChangeEvent.PropertyId, PropertyName = iePropertyChangeEvent.PropertyName, Triggers = MapToDTriggers(iePropertyChangeEvent.Triggers.ToList()) }).ToList(); destinationWorkflow.States = sourceWorkflow.States?.Select(ieState => new DState { Id = ieState.Id, Name = ieState.Name, IsInitial = ieState.IsInitial, Location = ieState.Location }) .ToList(); destinationWorkflow.TransitionEvents = sourceWorkflow.TransitionEvents?.Select(ieTransitionEvent => new DTransitionEvent { Id = ieTransitionEvent.Id, Name = ieTransitionEvent.Name, FromState = ieTransitionEvent.FromState, FromStateId = ieTransitionEvent.FromStateId, ToState = ieTransitionEvent.ToState, ToStateId = ieTransitionEvent.ToStateId, SkipPermissionGroups = ieTransitionEvent.SkipPermissionGroups, PortPair = ieTransitionEvent.PortPair != null ? new DPortPair { FromPort = ieTransitionEvent.PortPair.FromPort, ToPort = ieTransitionEvent.PortPair.ToPort } : null, Triggers = MapToDTriggers(ieTransitionEvent.Triggers), PermissionGroups = ieTransitionEvent.PermissionGroups?.Select(ieGroup => new DGroup { Id = ieGroup.Id, Name = ieGroup.Name }) .ToList() }).ToList(); return(destinationWorkflow); }