From edeffc572c17dde43c8a7960742f19c7ab71f208 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Fri, 8 Aug 2025 12:50:26 +0200 Subject: [PATCH] implemented showing members of companies --- .../umbrella/company/CompanyModule.java | 23 +++++++++++++++---- .../umbrella/core/model/Company.java | 18 +++++++++++---- frontend/src/routes/company/Index.svelte | 8 ++++++- frontend/src/routes/project/View.svelte | 2 +- 4 files changed, 40 insertions(+), 11 deletions(-) diff --git a/company/src/main/java/de/srsoftware/umbrella/company/CompanyModule.java b/company/src/main/java/de/srsoftware/umbrella/company/CompanyModule.java index 2e0955d..64ce783 100644 --- a/company/src/main/java/de/srsoftware/umbrella/company/CompanyModule.java +++ b/company/src/main/java/de/srsoftware/umbrella/company/CompanyModule.java @@ -17,9 +17,8 @@ import de.srsoftware.umbrella.core.BaseHandler; import de.srsoftware.umbrella.core.api.CompanyService; import de.srsoftware.umbrella.core.api.UserService; import de.srsoftware.umbrella.core.exceptions.UmbrellaException; -import de.srsoftware.umbrella.core.model.Company; -import de.srsoftware.umbrella.core.model.Token; -import de.srsoftware.umbrella.core.model.UmbrellaUser; +import de.srsoftware.umbrella.core.model.*; + import java.io.IOException; import java.util.*; @@ -110,7 +109,23 @@ public class CompanyModule extends BaseHandler implements CompanyService { @Override public Map listCompaniesOf(UmbrellaUser user) throws UmbrellaException { - return companyDb.listCompaniesOf(user.id()); + return loadMembers(companyDb.listCompaniesOf(user.id())); + } + + public Map loadMembers(Map companyMap){ + loadMembers(companyMap.values()); + return companyMap; + } + + public Collection loadMembers(Collection companyList) { + var userMap = new HashMap(); + for (var company : companyList){ + for (var userId : companyDb.getMembers(company.id())){ + var user = userMap.computeIfAbsent(userId,k -> users.loadUser(userId)); + company.members().put(userId,user); + } + } + return companyList; } @Override diff --git a/core/src/main/java/de/srsoftware/umbrella/core/model/Company.java b/core/src/main/java/de/srsoftware/umbrella/core/model/Company.java index c00b8cd..2e5af97 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/model/Company.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/model/Company.java @@ -9,10 +9,7 @@ import de.srsoftware.tools.Mappable; import de.srsoftware.umbrella.core.exceptions.UmbrellaException; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.Currency; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; +import java.util.*; import org.json.JSONException; import org.json.JSONObject; @@ -23,6 +20,7 @@ public class Company implements Mappable { private long lastCustomerNumber; private int decimals; private final Set dirtyFields = new HashSet<>(); + private final Map members; private Company(long id){ this(id,null,null,null,null,null,null,null,0,2,null,null,null,null); @@ -43,6 +41,7 @@ public class Company implements Mappable { this.currency = currency; this.email = email; this.bankAccount = bankAccount; + this.members = new HashMap<>(); } public String address(){ @@ -98,6 +97,10 @@ public class Company implements Mappable { return lastCustomerNumber; } + public Map members(){ + return members; + } + public String name(){ return name; } @@ -175,6 +178,10 @@ public class Company implements Mappable { @Override public Map toMap() { + var memberMap = new HashMap>(); + if (members != null) for (var entry : members.entrySet()){ + memberMap.put(entry.getKey(),entry.getValue().toMap()); + } return Map.ofEntries( entry(ID,id), entry(NAME,name), @@ -189,7 +196,8 @@ public class Company implements Mappable { entry(CUSTOMER_NUMBER_PREFIX,emptyIfNull(customerNumberPrefix)), entry(FIELD_CURRENCY,emptyIfNull(currency)), entry(EMAIL,emptyIfNull(email)), - entry(FIELD_BANK_ACCOUNT,emptyIfNull(bankAccount)) + entry(FIELD_BANK_ACCOUNT,emptyIfNull(bankAccount)), + entry(MEMBERS,memberMap) ); } diff --git a/frontend/src/routes/company/Index.svelte b/frontend/src/routes/company/Index.svelte index 6a8d10d..e21117f 100644 --- a/frontend/src/routes/company/Index.svelte +++ b/frontend/src/routes/company/Index.svelte @@ -84,7 +84,13 @@ showDetail(cid)}> {company.name} {company.email} - {company.address.replace('\r','').replaceAll('\n',' / ')} + +
    + {#each Object.entries(company.members) as [uid,member]} +
  • {member.name}
  • + {/each} +
+ {#if selected==cid} diff --git a/frontend/src/routes/project/View.svelte b/frontend/src/routes/project/View.svelte index 64b911f..45201da 100644 --- a/frontend/src/routes/project/View.svelte +++ b/frontend/src/routes/project/View.svelte @@ -247,7 +247,7 @@ {t('tasks')} - + {#if tasks}