Skip to main content
Homepage
Explore
Search or go to…
/
Sign in
Explore
Primary navigation
Project
P
Project
Manage
Activity
Members
Labels
Plan
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Code review analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Collapse sidebar
Snippets
Groups
Projects
Show more breadcrumbs
Coscine
backend
apis
Project
Merge requests
!69
This project is archived. Its data is
read-only
.
Sprint/2020-02
Code
Review changes
Check out branch
Open in Workspace
Download
Patches
Plain diff
Expand sidebar
Merged
Sprint/2020-02
Sprint/2020-02
into
master
Overview
0
Commits
8
Pipelines
6
Changes
17
Merged
Sprint/2020-02
Marcel Nellesen
requested to merge
Sprint/2020-02
into
master
Feb 13, 2020
Overview
0
Commits
8
Pipelines
6
Changes
17
0
0
Merge request reports
Compare
master
version 5
d8a61cfd
Feb 17, 2020
version 4
24242bc7
Feb 17, 2020
version 3
be02ad3e
Feb 17, 2020
version 2
93bef92d
Feb 14, 2020
version 1
8626903d
Feb 13, 2020
master (base)
and
latest version
latest version
5f4a8b04
8 commits,
Feb 17, 2020
version 5
d8a61cfd
7 commits,
Feb 17, 2020
version 4
24242bc7
6 commits,
Feb 17, 2020
version 3
be02ad3e
5 commits,
Feb 17, 2020
version 2
93bef92d
4 commits,
Feb 14, 2020
version 1
8626903d
2 commits,
Feb 13, 2020
17 files
+
501
−
357
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
17
src/Project/Controllers/ProjectController.cs
+
52
−
16
View file @ 5f4a8b04
Edit in single-file editor
Open in Web IDE
Show full file
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