Browse Source

working on project view

kanban
Stephan Richter 4 months ago
parent
commit
744b8a4576
  1. 4
      core/src/main/java/de/srsoftware/umbrella/core/Constants.java
  2. 2
      core/src/main/java/de/srsoftware/umbrella/core/exceptions/UmbrellaException.java
  3. 8
      core/src/main/java/de/srsoftware/umbrella/core/model/Project.java
  4. 2
      documents/src/main/java/de/srsoftware/umbrella/documents/Constants.java
  5. 6
      frontend/src/routes/project/View.svelte
  6. 4
      project/src/main/java/de/srsoftware/umbrella/project/ProjectModule.java

4
core/src/main/java/de/srsoftware/umbrella/core/Constants.java

@ -6,13 +6,16 @@ import static java.nio.charset.StandardCharsets.UTF_8;
public class Constants { public class Constants {
private Constants(){} private Constants(){}
public static final String ADDRESS = "address"; public static final String ADDRESS = "address";
public static final String ATTACHMENTS = "attachments"; public static final String ATTACHMENTS = "attachments";
public static final String AUTHORIZATION = "Authorization"; public static final String AUTHORIZATION = "Authorization";
public static final String BODY = "body"; public static final String BODY = "body";
public static final String COMPANY = "company";
public static final String COMPANY_ID = "company_id"; public static final String COMPANY_ID = "company_id";
public static final String CONTENT_TYPE = "Content-Type"; public static final String CONTENT_TYPE = "Content-Type";
public static final String DATA = "data"; public static final String DATA = "data";
public static final String DATE = "date"; public static final String DATE = "date";
public static final String DEFAULT_LANGUAGE = "en"; public static final String DEFAULT_LANGUAGE = "en";
@ -21,6 +24,7 @@ public class Constants {
public static final String DOMAIN = "domain"; public static final String DOMAIN = "domain";
public static final String DUE_DATE = "due_date"; public static final String DUE_DATE = "due_date";
public static final String DURATION = "duration"; public static final String DURATION = "duration";
public static final String EMAIL = "email"; public static final String EMAIL = "email";
public static final String END_TIME = "end_time"; public static final String END_TIME = "end_time";

2
core/src/main/java/de/srsoftware/umbrella/core/exceptions/UmbrellaException.java

@ -11,7 +11,7 @@ import static java.net.HttpURLConnection.HTTP_NOT_FOUND;
import static java.text.MessageFormat.format; import static java.text.MessageFormat.format;
public class UmbrellaException extends Exception{ public class UmbrellaException extends RuntimeException{
private final int statusCode; private final int statusCode;
public UmbrellaException(String message, Object ... fills){ public UmbrellaException(String message, Object ... fills){

8
core/src/main/java/de/srsoftware/umbrella/core/model/Project.java

@ -39,6 +39,14 @@ public record Project(long id, String name, String description, Status status, L
} }
} }
public boolean hasMember(UmbrellaUser user) {
for (var member : members){
if (member.userId() == user.id()) return true;
}
return false;
}
public static Project of(ResultSet rs) throws SQLException { public static Project of(ResultSet rs) throws SQLException {
return new Project(rs.getLong(ID),rs.getString(NAME),rs.getString(DESCRIPTION),Status.of(rs.getInt(STATUS)),rs.getLong(COMPANY_ID),rs.getBoolean(SHOW_CLOSED),new ArrayList<>()); return new Project(rs.getLong(ID),rs.getString(NAME),rs.getString(DESCRIPTION),Status.of(rs.getInt(STATUS)),rs.getLong(COMPANY_ID),rs.getBoolean(SHOW_CLOSED),new ArrayList<>());
} }

2
documents/src/main/java/de/srsoftware/umbrella/documents/Constants.java

@ -12,8 +12,6 @@ public class Constants {
public static final Pattern POST_CODE = compile("(.*\\w+.*)\n(.*\\d+.*)\n(\\d{5}) (\\w+)",DOTALL); public static final Pattern POST_CODE = compile("(.*\\w+.*)\n(.*\\d+.*)\n(\\d{5}) (\\w+)",DOTALL);
public static final String COMPANIES = "companies";
public static final String COMPANY = "company";
public static final String CONFIG_DATABASE = "umbrella.modules.document.database"; public static final String CONFIG_DATABASE = "umbrella.modules.document.database";
public static final String CONFIG_TEMPLATES = "umbrella.modules.document.templates"; public static final String CONFIG_TEMPLATES = "umbrella.modules.document.templates";

6
frontend/src/routes/project/View.svelte

@ -31,6 +31,12 @@
<th>{t('project')}</th> <th>{t('project')}</th>
<td>{project.name}</td> <td>{project.name}</td>
</tr> </tr>
{#if project.company}
<tr>
<th>{t('company')}</th>
<td>{project.company.name}</td>
</tr>
{/if}
<tr> <tr>
<th>{t('context')}</th> <th>{t('context')}</th>
<td> <td>

4
project/src/main/java/de/srsoftware/umbrella/project/ProjectModule.java

@ -1,6 +1,7 @@
/* © SRSoftware 2025 */ /* © SRSoftware 2025 */
package de.srsoftware.umbrella.project; package de.srsoftware.umbrella.project;
import static de.srsoftware.tools.Optionals.nullable;
import static de.srsoftware.umbrella.core.ConnectionProvider.connect; import static de.srsoftware.umbrella.core.ConnectionProvider.connect;
import static de.srsoftware.umbrella.core.Constants.*; import static de.srsoftware.umbrella.core.Constants.*;
import static de.srsoftware.umbrella.core.Paths.LIST; import static de.srsoftware.umbrella.core.Paths.LIST;
@ -87,6 +88,7 @@ public class ProjectModule extends BaseHandler implements ProjectService {
private boolean getProject(HttpExchange ex, long projectId, UmbrellaUser user) throws IOException, UmbrellaException { private boolean getProject(HttpExchange ex, long projectId, UmbrellaUser user) throws IOException, UmbrellaException {
var project = projects.load(projectId); var project = projects.load(projectId);
if (!project.hasMember(user)) throw forbidden("You are not a member of {0}",project.name());
var map = project.toMap(); var map = project.toMap();
var members = new HashMap<Long,Map<String,Object>>(); var members = new HashMap<Long,Map<String,Object>>();
for (var member : project.members()){ for (var member : project.members()){
@ -95,7 +97,7 @@ public class ProjectModule extends BaseHandler implements ProjectService {
members.put(userId,Map.of(USER,users.loadUser(userId).toMap(),PERMISSION,perm)); members.put(userId,Map.of(USER,users.loadUser(userId).toMap(),PERMISSION,perm));
} }
if (!members.isEmpty()) map.put(MEMBERS,members); if (!members.isEmpty()) map.put(MEMBERS,members);
nullable(project.companyId()).map(companies::get).map(Company::toMap).ifPresent(data -> map.put(COMPANY,data));
return sendContent(ex,map); return sendContent(ex,map);
} }

Loading…
Cancel
Save