|
|
|
|
@ -39,6 +39,19 @@ public class ProjectModule extends BaseHandler implements ProjectService {
@@ -39,6 +39,19 @@ public class ProjectModule extends BaseHandler implements ProjectService {
|
|
|
|
|
users = companies.userService(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private boolean addMembers(Project project, HttpExchange ex) throws IOException { |
|
|
|
|
var map = project.toMap(); |
|
|
|
|
var members = new HashMap<Long,Map<String,Object>>(); |
|
|
|
|
for (var entry : project.members().entrySet()){ |
|
|
|
|
var userId = entry.getKey(); |
|
|
|
|
var perm = entry.getValue().permission().toMap(); |
|
|
|
|
members.put(userId,Map.of(USER,users.loadUser(userId).toMap(),PERMISSION,perm)); |
|
|
|
|
} |
|
|
|
|
if (!members.isEmpty()) map.put(MEMBERS,members); |
|
|
|
|
project.companyId().map(companies::get).map(Company::toMap).ifPresent(data -> map.put(COMPANY,data)); |
|
|
|
|
return sendContent(ex,map); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public CompanyService companyService() { |
|
|
|
|
return companies; |
|
|
|
|
@ -115,35 +128,12 @@ public class ProjectModule extends BaseHandler implements ProjectService {
@@ -115,35 +128,12 @@ public class ProjectModule extends BaseHandler implements ProjectService {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private boolean addMembers(Project project, HttpExchange ex) throws IOException { |
|
|
|
|
var map = project.toMap(); |
|
|
|
|
var members = new HashMap<Long,Map<String,Object>>(); |
|
|
|
|
for (var entry : project.members().entrySet()){ |
|
|
|
|
var userId = entry.getKey(); |
|
|
|
|
var perm = entry.getValue().permission().toMap(); |
|
|
|
|
members.put(userId,Map.of(USER,users.loadUser(userId).toMap(),PERMISSION,perm)); |
|
|
|
|
} |
|
|
|
|
if (!members.isEmpty()) map.put(MEMBERS,members); |
|
|
|
|
project.companyId().map(companies::get).map(Company::toMap).ifPresent(data -> map.put(COMPANY,data)); |
|
|
|
|
return sendContent(ex,map); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private boolean getProject(HttpExchange ex, long projectId, UmbrellaUser user) throws IOException, UmbrellaException { |
|
|
|
|
var project = projects.load(projectId); |
|
|
|
|
if (!project.hasMember(user)) throw forbidden("You are not a member of {0}",project.name()); |
|
|
|
|
return addMembers(project,ex); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private boolean postProjectList(HttpExchange ex, UmbrellaUser user) throws IOException { |
|
|
|
|
var json = json(ex); |
|
|
|
|
var showClosed = json.has(SHOW_CLOSED) && json.get(SHOW_CLOSED) instanceof Boolean bool ? bool : false; |
|
|
|
|
if (json.has(COMPANY_ID) && json.get(COMPANY_ID) instanceof Number companyId) return listCompanyProjects(ex, user, companyId.longValue()); |
|
|
|
|
return listUserProjects(ex,user,showClosed); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Collection<Project> listCompanyProjects(long companyId, boolean includeClosed) throws UmbrellaException { |
|
|
|
|
return projects.ofCompany(companyId, includeClosed).values().stream().sorted(comparing(Project::name)).toList(); |
|
|
|
|
} |
|
|
|
|
@ -209,4 +199,12 @@ public class ProjectModule extends BaseHandler implements ProjectService {
@@ -209,4 +199,12 @@ public class ProjectModule extends BaseHandler implements ProjectService {
|
|
|
|
|
prj = projects.save(prj); |
|
|
|
|
return sendContent(ex,prj); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private boolean postProjectList(HttpExchange ex, UmbrellaUser user) throws IOException { |
|
|
|
|
var json = json(ex); |
|
|
|
|
var showClosed = json.has(SHOW_CLOSED) && json.get(SHOW_CLOSED) instanceof Boolean bool ? bool : false; |
|
|
|
|
if (json.has(COMPANY_ID) && json.get(COMPANY_ID) instanceof Number companyId) return listCompanyProjects(ex, user, companyId.longValue()); |
|
|
|
|
return listUserProjects(ex,user,showClosed); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |