Skip to content
Snippets Groups Projects

New: Soft delete to search, test, controller and subprojects

Merged Benedikt Heinrichs requested to merge Topic/632-projectDeletion into Product/593-projectDeletion
17 files
+ 444
355
Compare changes
  • Side-by-side
  • Inline

Files

@@ -49,7 +49,7 @@ namespace Coscine.Api.Project.Controllers
@@ -49,7 +49,7 @@ namespace Coscine.Api.Project.Controllers
if (_projectModel.HasAccess(user, project, UserRoles.Member, UserRoles.Owner))
if (_projectModel.HasAccess(user, project, UserRoles.Member, UserRoles.Owner))
{
{
SubProjectModel subProjectModel = new SubProjectModel();
SubProjectModel subProjectModel = new SubProjectModel();
var subProjectRel = subProjectModel.GetAllWhere((subProject) => subProject.SubProjectId == project.Id);
var subProjectRel = subProjectModel.GetAllWhere((subProject) => subProject.SubProjectId == project.Id && project.Deleted == false);
var parentProjectRelation = subProjectRel.FirstOrDefault();
var parentProjectRelation = subProjectRel.FirstOrDefault();
if (parentProjectRelation != null && _projectModel.HasAccess(user, parentProjectRelation.ProjectId, UserRoles.Member, UserRoles.Owner))
if (parentProjectRelation != null && _projectModel.HasAccess(user, parentProjectRelation.ProjectId, UserRoles.Member, UserRoles.Owner))
@@ -121,52 +121,80 @@ namespace Coscine.Api.Project.Controllers
@@ -121,52 +121,80 @@ namespace Coscine.Api.Project.Controllers
}
}
}
}
public void DeleteProject(Database.Model.Project project)
public void DeleteProject(Database.Model.Project project, bool isHard = false)
{
{
var subProjectModel = new SubProjectModel();
var subProjectModel = new SubProjectModel();
foreach(var subProject in subProjectModel.GetAllWhere((subProject) => subProject.ProjectId == project.Id))
foreach(var subProject in subProjectModel.GetAllWhere((subProject) => subProject.ProjectId == project.Id && project.Deleted == false))
{
{
subProjectModel.Delete(subProject);
if (isHard)
DeleteProject(_projectModel.GetById(subProject.SubProjectId));
{
 
subProjectModel.Delete(subProject);
 
}
 
DeleteProject(_projectModel.GetById(subProject.SubProjectId), isHard);
}
}
foreach (var subProject in subProjectModel.GetAllWhere((subProject) => subProject.SubProjectId == project.Id))
foreach (var subProject in subProjectModel.GetAllWhere((subProject) => subProject.SubProjectId == project.Id && project.Deleted == false))
{
{
subProjectModel.Delete(subProject);
if (isHard)
 
{
 
subProjectModel.Delete(subProject);
 
}
}
}
var projectResourceModel = new ProjectResourceModel();
var projectResourceModel = new ProjectResourceModel();
ResourceModel resourceModel = new ResourceModel();
ResourceModel resourceModel = new ResourceModel();
foreach (var projectResource in projectResourceModel.GetAllWhere((projectResource) => projectResource.ProjectId == project.Id))
foreach (var projectResource in projectResourceModel.GetAllWhere((projectResource) => projectResource.ProjectId == project.Id && project.Deleted == false))
{
{
projectResourceModel.Delete(projectResource);
if (isHard)
resourceModel.Delete(resourceModel.GetById(projectResource.ResourceId));
{
 
projectResourceModel.Delete(projectResource);
 
resourceModel.Delete(resourceModel.GetById(projectResource.ResourceId));
 
}
}
}
var projectRoleModel = new ProjectRoleModel();
var projectRoleModel = new ProjectRoleModel();
foreach (var projectRole in projectRoleModel.GetAllWhere((projectRole) => projectRole.ProjectId == project.Id))
foreach (var projectRole in projectRoleModel.GetAllWhere((projectRole) => projectRole.ProjectId == project.Id && project.Deleted == false))
{
{
projectRoleModel.Delete(projectRole);
if (isHard)
 
{
 
projectRoleModel.Delete(projectRole);
 
}
}
}
var projectDisciplineModel = new ProjectDisciplineModel();
var projectDisciplineModel = new ProjectDisciplineModel();
foreach (var projectDiscipline in projectDisciplineModel.GetAllWhere((projectDiscipline) => projectDiscipline.ProjectId == project.Id))
foreach (var projectDiscipline in projectDisciplineModel.GetAllWhere((projectDiscipline) => projectDiscipline.ProjectId == project.Id && project.Deleted == false))
{
{
projectDisciplineModel.Delete(projectDiscipline);
if (isHard)
 
{
 
projectDisciplineModel.Delete(projectDiscipline);
 
}
}
}
var projectInstituteModel = new ProjectInstituteModel();
var projectInstituteModel = new ProjectInstituteModel();
foreach (var projectInstitute in projectInstituteModel.GetAllWhere((projectInstitute) => projectInstitute.ProjectId == project.Id))
foreach (var projectInstitute in projectInstituteModel.GetAllWhere((projectInstitute) => projectInstitute.ProjectId == project.Id && project.Deleted == false))
{
{
projectInstituteModel.Delete(projectInstitute);
 
if (isHard)
 
{
 
projectInstituteModel.Delete(projectInstitute);
 
}
}
}
_emitter.EmitProjectDelete(new ProjectEventArgs(_configuration)
if (isHard)
{
{
Project = project
_emitter.EmitProjectDelete(new ProjectEventArgs(_configuration)
});
{
 
Project = project
 
});
 
}
_projectModel.Delete(project);
if (isHard)
 
{
 
_projectModel.HardDelete(project);
 
} else
 
{
 
_projectModel.Delete(project);
 
}
}
}
[HttpPost("[controller]")]
[HttpPost("[controller]")]
Loading