示例#1
0
        public async Task DeleteProject(int userId, int projectId)
        {
            ProjectStatus?projectStatus;

            InstanceItem project = await _instanceRepository.GetInstanceProjectAsync(projectId, userId, fromAdminPortal : true);

            if (!TryGetProjectStatusIfProjectExist(project, out projectStatus))
            {
                throw new ResourceNotFoundException(
                          I18NHelper.FormatInvariant(ErrorMessages.ProjectWasDeletedByAnotherUser, project.Id,
                                                     project.Name), ErrorCodes.ResourceNotFound);
            }

            if (projectStatus == ProjectStatus.Live)
            {
                Func <IDbTransaction, long, Task> action = async(transaction, transactionId) =>
                {
                    var revisionId = await _instanceRepository.RemoveProject(userId, projectId, transaction);

                    await _instanceRepository.DeactivateWorkflowsWithLastAssignmentForDeletedProject(projectId, transaction);

                    var artifactIds = await _instanceRepository.GetProjectArtifactIds(projectId, revisionId - 1, userId, transaction : transaction);
                    await PostOperation(artifactIds, revisionId, userId, transactionId, transaction);
                };

                await _instanceRepository.RunInTransactionAsync(action);
            }
            else
            {
                await _instanceRepository.PurgeProject(projectId, project);
            }
        }
示例#2
0
 public async Task <InstanceItem> GetInstanceProjectAsync(int id, bool fromAdminPortal = false)
 {
     return(await _instanceRepository.GetInstanceProjectAsync(id, Session.UserId, fromAdminPortal));
 }