Пример #1
0
        public async Task <IActionResult> Duplicate(WorkflowTypePropertiesViewModel viewModel, int id)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageWorkflows))
            {
                return(Unauthorized());
            }

            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }

            var existingWorkflowType = await _session.GetAsync <WorkflowType>(id);

            var workflowType = new WorkflowType();

            workflowType.WorkflowTypeId = _workflowTypeIdGenerator.GenerateUniqueId(workflowType);

            workflowType.Name                    = viewModel.Name?.Trim();
            workflowType.IsEnabled               = viewModel.IsEnabled;
            workflowType.IsSingleton             = viewModel.IsSingleton;
            workflowType.DeleteFinishedWorkflows = viewModel.DeleteFinishedWorkflows;
            workflowType.Activities              = existingWorkflowType.Activities;
            workflowType.Transitions             = existingWorkflowType.Transitions;

            await _workflowTypeStore.SaveAsync(workflowType);

            return(RedirectToAction("Edit", new { workflowType.Id }));
        }
        public async Task <IActionResult> EditProperties(WorkflowTypePropertiesViewModel viewModel, int?id)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageWorkflows))
            {
                return(Forbid());
            }

            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }

            var isNew        = id == null;
            var workflowType = default(WorkflowType);

            if (isNew)
            {
                workflowType = new WorkflowType();
                workflowType.WorkflowTypeId = _workflowTypeIdGenerator.GenerateUniqueId(workflowType);
            }
            else
            {
                workflowType = await _session.GetAsync <WorkflowType>(id.Value);

                if (workflowType == null)
                {
                    return(NotFound());
                }
            }

            workflowType.Name                    = viewModel.Name?.Trim();
            workflowType.IsEnabled               = viewModel.IsEnabled;
            workflowType.IsSingleton             = viewModel.IsSingleton;
            workflowType.LockTimeout             = viewModel.LockTimeout;
            workflowType.LockExpiration          = viewModel.LockExpiration;
            workflowType.DeleteFinishedWorkflows = viewModel.DeleteFinishedWorkflows;

            await _workflowTypeStore.SaveAsync(workflowType);

            return(isNew
                ? RedirectToAction(nameof(Edit), new { workflowType.Id })
                : Url.IsLocalUrl(viewModel.ReturnUrl)
                   ? (IActionResult)this.Redirect(viewModel.ReturnUrl, true)
                   : RedirectToAction(nameof(Index)));
        }