Skip to content
Snippets Groups Projects

Sprint/2020-02

Merged Marcel Nellesen requested to merge Product/593-projectDeletion into Sprint/2020-02
17 files
+ 444
355
Compare changes
  • Side-by-side
  • Inline
Files
17
@@ -49,7 +49,7 @@ namespace Coscine.Api.Project.Controllers
if (_projectModel.HasAccess(user, project, UserRoles.Member, UserRoles.Owner))
{
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();
if (parentProjectRelation != null && _projectModel.HasAccess(user, parentProjectRelation.ProjectId, UserRoles.Member, UserRoles.Owner))
@@ -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();
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);
DeleteProject(_projectModel.GetById(subProject.SubProjectId));
if (isHard)
{
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();
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);
resourceModel.Delete(resourceModel.GetById(projectResource.ResourceId));
if (isHard)
{
projectResourceModel.Delete(projectResource);
resourceModel.Delete(resourceModel.GetById(projectResource.ResourceId));
}
}
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();
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();
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]")]
Loading