Skip to content
Snippets Groups Projects

Sprint/2020-02

Merged Marcel Nellesen requested to merge Sprint/2020-02 into master
Files
17
using Coscine.Action;
using Coscine.Action;
using Coscine.Action.EventArgs;
using Coscine.Action.EventArgs;
using Coscine.Api.Project.Models;
using Coscine.Api.Project.Models;
using Coscine.Api.Project.ReturnObjects;
using Coscine.Api.Project.ReturnObjects;
@@ -9,7 +9,6 @@ using System;
@@ -9,7 +9,6 @@ using System;
using System.Linq;
using System.Linq;
using Coscine.Configuration;
using Coscine.Configuration;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Authorization;
using System.Collections.Generic;
namespace Coscine.Api.Project.Controllers
namespace Coscine.Api.Project.Controllers
{
{
@@ -49,7 +48,7 @@ namespace Coscine.Api.Project.Controllers
@@ -49,7 +48,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 +120,89 @@ namespace Coscine.Api.Project.Controllers
@@ -121,52 +120,89 @@ namespace Coscine.Api.Project.Controllers
}
}
}
}
public void DeleteProject(Database.Model.Project project)
public void DeleteProject(Database.Model.Project project, bool isHard = false, bool propegateAction = true)
{
{
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))
{
{
subProjectModel.Delete(subProject);
Database.Model.Project subProjectObject;
DeleteProject(_projectModel.GetById(subProject.SubProjectId));
if (isHard)
 
{
 
subProjectModel.Delete(subProject);
 
subProjectObject = _projectModel.GetByIdIncludingDeleted(subProject.SubProjectId);
 
}
 
else
 
{
 
subProjectObject = _projectModel.GetById(subProject.SubProjectId);
 
}
 
DeleteProject(subProjectObject, isHard, propegateAction);
}
}
foreach (var subProject in subProjectModel.GetAllWhere((subProject) => subProject.SubProjectId == project.Id))
foreach (var subProject in subProjectModel.GetAllWhere((subProject) => subProject.SubProjectId == project.Id))
{
{
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))
{
{
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))
{
{
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))
{
{
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))
{
{
projectInstituteModel.Delete(projectInstitute);
if (isHard)
 
{
 
projectInstituteModel.Delete(projectInstitute);
 
}
}
}
_emitter.EmitProjectDelete(new ProjectEventArgs(_configuration)
if (isHard)
{
{
Project = project
if (propegateAction)
});
{
 
_emitter.EmitProjectDelete(new ProjectEventArgs(_configuration)
 
{
 
Project = project
 
});
 
}
 
}
_projectModel.Delete(project);
if (isHard)
 
{
 
_projectModel.HardDelete(project);
 
}
 
else
 
{
 
_projectModel.Delete(project);
 
}
}
}
[HttpPost("[controller]")]
[HttpPost("[controller]")]
Loading