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); } }