Merge branch 'dev' into feature/projects
This commit is contained in:
@@ -11,7 +11,9 @@ public class Constants {
|
||||
public static final String ADDRESS = "address";
|
||||
public static final String ATTACHMENTS = "attachments";
|
||||
public static final String AUTHORIZATION = "Authorization";
|
||||
|
||||
public static final String BODY = "body";
|
||||
|
||||
public static final String CODE = "code";
|
||||
public static final String COMPANY = "company";
|
||||
public static final String COMPANY_ID = "company_id";
|
||||
|
||||
@@ -4,10 +4,17 @@ package de.srsoftware.umbrella.core.api;
|
||||
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
|
||||
import de.srsoftware.umbrella.core.model.Project;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface ProjectService {
|
||||
public Collection<Project> listCompanyProjects(long companyId, boolean includeClosed) throws UmbrellaException;
|
||||
public Map<Long,Project> listUserProjects(long userId, boolean includeClosed) throws UmbrellaException;
|
||||
CompanyService companyService();
|
||||
public Map<Long,Project> listCompanyProjects(long companyId, boolean includeClosed) throws UmbrellaException;
|
||||
public Map<Long,Project> listUserProjects(long userId, boolean includeClosed) throws UmbrellaException;
|
||||
public Collection<Project> loadMembers(Collection<Project> projects);
|
||||
public default Project loadMembers(Project project){
|
||||
loadMembers(List.of(project));
|
||||
return project;
|
||||
}
|
||||
Map<Long, Map<String,Object>> mapProjects(Map<Long, Project> projects);
|
||||
}
|
||||
|
||||
@@ -7,9 +7,9 @@ import static de.srsoftware.umbrella.core.Constants.*;
|
||||
import de.srsoftware.tools.Mappable;
|
||||
import java.util.Map;
|
||||
|
||||
public record Member(long userId, Permission permission) implements Mappable {
|
||||
public record Member(UmbrellaUser user, Permission permission) implements Mappable {
|
||||
@Override
|
||||
public Map<String, Object> toMap() {
|
||||
return Map.of(USER_ID,userId,PERMISSION,permission.toMap());
|
||||
return Map.of(USER,user.toMap(),PERMISSION,permission.toMap());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
/* © SRSoftware 2025 */
|
||||
package de.srsoftware.umbrella.core.model;
|
||||
|
||||
import de.srsoftware.tools.Mappable;
|
||||
|
||||
import static de.srsoftware.umbrella.core.Constants.CODE;
|
||||
import static de.srsoftware.umbrella.core.Constants.NAME;
|
||||
import static java.text.MessageFormat.format;
|
||||
|
||||
import de.srsoftware.tools.Mappable;
|
||||
import java.security.InvalidParameterException;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
@@ -1,19 +1,14 @@
|
||||
/* © SRSoftware 2025 */
|
||||
package de.srsoftware.umbrella.core.model;
|
||||
|
||||
import static de.srsoftware.tools.Optionals.isSet;
|
||||
import static de.srsoftware.tools.Optionals.nullable;
|
||||
import static de.srsoftware.umbrella.core.Constants.*;
|
||||
import static de.srsoftware.umbrella.core.Util.markdown;
|
||||
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.invalidFieldException;
|
||||
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.missingFieldException;
|
||||
|
||||
import de.srsoftware.tools.Mappable;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.*;
|
||||
|
||||
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
public class Project implements Mappable {
|
||||
@@ -49,8 +44,7 @@ public class Project implements Mappable {
|
||||
}
|
||||
|
||||
public boolean hasMember(UmbrellaUser user) {
|
||||
var member = members.get(user.id());
|
||||
return isSet(member) && member.userId() == user.id();
|
||||
return members.containsKey(user.id());
|
||||
}
|
||||
|
||||
public long id(){
|
||||
@@ -74,7 +68,6 @@ public class Project implements Mappable {
|
||||
for (var key : json.keySet()){
|
||||
switch (key){
|
||||
case DESCRIPTION: description = json.getString(key); break;
|
||||
case MEMBERS: patchMembers(json.getJSONObject(MEMBERS)); break;
|
||||
case NAME: name = json.getString(key); break;
|
||||
case STATUS: status = json.get(key) instanceof Number number ? Status.of(number.intValue()) : Status.valueOf(json.getString(key)); break;
|
||||
default: key = null;
|
||||
@@ -84,20 +77,6 @@ public class Project implements Mappable {
|
||||
return this;
|
||||
}
|
||||
|
||||
private void patchMembers(JSONObject json) throws UmbrellaException {
|
||||
for (var key : json.keySet()){
|
||||
long userId;
|
||||
try {
|
||||
userId = Long.parseLong(key);
|
||||
} catch (NumberFormatException e) {
|
||||
throw invalidFieldException(USER_ID,"long");
|
||||
}
|
||||
if (!(json.get(key) instanceof Number number)) throw invalidFieldException(PERMISSION,"int");
|
||||
var permission = Permission.of(number.intValue());
|
||||
members.put(userId,new Member(userId,permission));
|
||||
}
|
||||
}
|
||||
|
||||
public boolean showClosed(){
|
||||
return showClosed;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user