Exemple #1
0
        public Result <ItProject, OperationFailure> DeleteProject(int id)
        {
            using (var transaction = _transactionManager.Begin(IsolationLevel.ReadCommitted))
            {
                var project = _projectRepository.GetByKey(id);
                if (project == null)
                {
                    return(OperationFailure.NotFound);
                }

                if (!_authorizationContext.AllowDelete(project))
                {
                    return(OperationFailure.Forbidden);
                }

                var deleteByProjectId = _referenceService.DeleteByProjectId(id);
                if (deleteByProjectId.Failed)
                {
                    transaction.Rollback();
                    return(deleteByProjectId.Error);
                }
                project.Handover?.Participants?.Clear();
                _domainEvents.Raise(new EntityDeletedEvent <ItProject>(project));
                _projectRepository.DeleteWithReferencePreload(project);
                _projectRepository.Save();
                transaction.Commit();
                return(project);
            }
        }