Skip to main content
Sign in
Snippets Groups Projects

Sprint/2020-02

Files

using Coscine.Action;
using Coscine.Action;
using Coscine.Action.EventArgs;
using Coscine.Api.Project.Models;
using Coscine.Api.Project.ReturnObjects;
@@ -9,7 +9,6 @@ using System;
using System.Linq;
using Coscine.Configuration;
using Microsoft.AspNetCore.Authorization;
using System.Collections.Generic;
namespace Coscine.Api.Project.Controllers
{
@@ -49,7 +48,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 +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();
foreach(var subProject in subProjectModel.GetAllWhere((subProject) => subProject.ProjectId == project.Id))
{
subProjectModel.Delete(subProject);
DeleteProject(_projectModel.GetById(subProject.SubProjectId));
Database.Model.Project subProjectObject;
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))
{
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))
{
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))
{
projectRoleModel.Delete(projectRole);
if (isHard)
{
projectRoleModel.Delete(projectRole);
}
}
var projectDisciplineModel = new ProjectDisciplineModel();
foreach (var projectDiscipline in projectDisciplineModel.GetAllWhere((projectDiscipline) => projectDiscipline.ProjectId == project.Id))
{
projectDisciplineModel.Delete(projectDiscipline);
if (isHard)
{
projectDisciplineModel.Delete(projectDiscipline);
}
}
var projectInstituteModel = new ProjectInstituteModel();
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]")]
Loading