Skip to content
Snippets Groups Projects

Hotfix/1383 top level

Merged Marcel Nellesen requested to merge Hotfix/1383-topLevel into master
@@ -97,7 +97,7 @@ namespace Coscine.Database.Models
{
return DatabaseConnection.ConnectToDatabase((db) =>
{
return (int) db.Update(databaseObject).State;
return (int)db.Update(databaseObject).State;
});
}
else
@@ -111,7 +111,7 @@ namespace Coscine.Database.Models
databaseObject.Deleted = true;
return DatabaseConnection.ConnectToDatabase((db) =>
{
return (int) db.Update(databaseObject).State;
return (int)db.Update(databaseObject).State;
});
}
@@ -327,14 +327,20 @@ namespace Coscine.Database.Models
public IEnumerable<Project> GetTopLevelWithAccess(User user, params string[] allowedAccess)
{
return GetWithAccess(user, allowedAccess, (allowedProjectIds) => GetAllWhere((project) => allowedProjectIds.Contains(project.Id) &&
((!project.SubProjectProjects.Any()) // get top level projects not having any parent projects
|| !(from subProject in project.SubProjectProjects // check if the direct parent project is accessible to the current user
where (from parentProjectRole in subProject.Project.ProjectRoles
where parentProjectRole.UserId == user.Id
&& allowedAccess.Contains(parentProjectRole.Role.DisplayName.ToLower())
select parentProjectRole).Any()
select subProject).Any())));
return GetWithAccess(user, allowedAccess, (allowedProjectIds) => GetAllWhere((project) =>
(
// all accessable projects that have no parents
(!project.SubProjectSubProjectNavigations.Any())
|| // all accessable projects that have no accessable parents
(
project.SubProjectSubProjectNavigations.All(
(parentProjects) =>
parentProjects.Project.ProjectRoles.All((projectRole) => projectRole.UserId != user.Id)
)
)
)
&& project.ProjectRoles.Any((projectRole) => projectRole.UserId == user.Id))
);
}
public void AddResource(Project project, Resource resource)
@@ -383,15 +389,15 @@ namespace Coscine.Database.Models
public ProjectObject CreateReturnObjectFromDatabaseObject(Project project, Guid parentId)
{
IEnumerable<DisciplineObject> disciplines = new List<DisciplineObject>();
IEnumerable<DisciplineObject> disciplines = new List<DisciplineObject>();
DisciplineModel disciplineModel = new DisciplineModel();
disciplines = disciplineModel.GetAllWhere((discipline) => (from relation in discipline.ProjectDisciplines where relation.ProjectId == project.Id select relation).Any())
.Select((discipline) => new DisciplineObject(discipline.Id, discipline.Url, discipline.DisplayNameDe, discipline.DisplayNameEn));
IEnumerable<OrganizationObject> organizations = new List<OrganizationObject>();
ProjectInstituteModel projectInstituteModel = new ProjectInstituteModel();
organizations = projectInstituteModel.GetAllWhere((projectInstitute) => (projectInstitute.ProjectId == project.Id))
.Select((projectInstitute) => new OrganizationObject(projectInstitute.OrganizationUrl, projectInstitute.OrganizationUrl));
ProjectInstituteModel projectInstituteModel = new ProjectInstituteModel();
organizations = projectInstituteModel.GetAllWhere((projectInstitute) => (projectInstitute.ProjectId == project.Id))
.Select((projectInstitute) => new OrganizationObject(projectInstitute.OrganizationUrl, projectInstitute.OrganizationUrl));
if (project.Visibility == null && project.VisibilityId.HasValue)
{
Loading