From: elgekko Date: Fri, 28 Apr 2023 12:27:12 +0000 (+0200) Subject: Project associate added to project editor X-Git-Url: http://git.useribm.hu/?a=commitdiff_plain;h=aeb1125330fa254c04268a5b1a49ff1d52cd5041;p=sly-crm.git Project associate added to project editor --- diff --git a/lis-services/src/main/java/hu/user/lis/services/data/ProjectAssociateService.java b/lis-services/src/main/java/hu/user/lis/services/data/ProjectAssociateService.java index 5054c13..dfc738a 100644 --- a/lis-services/src/main/java/hu/user/lis/services/data/ProjectAssociateService.java +++ b/lis-services/src/main/java/hu/user/lis/services/data/ProjectAssociateService.java @@ -3,6 +3,7 @@ package hu.user.lis.services.data; import hu.user.lis.db.ProjectAssociate; import java.util.Collection; +import java.util.Map; public interface ProjectAssociateService { ProjectAssociate createNew(String projectId, String associateId); @@ -11,6 +12,8 @@ public interface ProjectAssociateService { void remove(ProjectAssociate entity); + void update(String projectId, Map associates); + String toString(ProjectAssociate sourceEntity); Collection getAll(); diff --git a/lis-services/src/main/java/hu/user/lis/services/data/ProjectAssociateServiceImpl.java b/lis-services/src/main/java/hu/user/lis/services/data/ProjectAssociateServiceImpl.java index 6062437..460f1ec 100644 --- a/lis-services/src/main/java/hu/user/lis/services/data/ProjectAssociateServiceImpl.java +++ b/lis-services/src/main/java/hu/user/lis/services/data/ProjectAssociateServiceImpl.java @@ -12,6 +12,8 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; @Service @Log4j2 @@ -47,6 +49,18 @@ public class ProjectAssociateServiceImpl implements ProjectAssociateService { entities.remove(entity); } + @Override + public void update(String projectId, Map associates) { + List deleteEntities = entities.stream().filter(pa -> pa.getProjectId().equals(projectId)).collect(Collectors.toList()); + entities.removeAll(deleteEntities); + associates.forEach((associateId, isAssociate) -> { + if (isAssociate) { + ProjectAssociate projectAssociate = ProjectAssociate.builder().projectId(projectId).associateId(associateId).build(); + entities.add(projectAssociate); + } + }); + } + private List generate() { List result = new ArrayList<>(); List projects = projectService.getAll(); diff --git a/lis-ui/src/main/java/hu/user/lis/ui/editor/ProjectEditorModel.java b/lis-ui/src/main/java/hu/user/lis/ui/editor/ProjectEditorModel.java index 9df6d78..d5d13a5 100644 --- a/lis-ui/src/main/java/hu/user/lis/ui/editor/ProjectEditorModel.java +++ b/lis-ui/src/main/java/hu/user/lis/ui/editor/ProjectEditorModel.java @@ -47,6 +47,8 @@ public class ProjectEditorModel extends AbstractValidator implements EventListen ProjectAssociateService projectAssociateServiceImpl; private Project formDocument; private Project origDocument; + private Map origAssociates; + private Map formAssociates; @WireVariable private PartnerSelectorDataModel partnerSelectorDataModel; @WireVariable @@ -61,8 +63,6 @@ public class ProjectEditorModel extends AbstractValidator implements EventListen private String partialAssociateName; - private Map origAssociates; - private Map formAssociates; public ProjectEditorModel() { @@ -87,7 +87,9 @@ public class ProjectEditorModel extends AbstractValidator implements EventListen } else { args = ImmutableMap.of("origDocument", origDocument, "formDocument", formDocument); } + projectAssociateServiceImpl.update(formDocument.getId(), formAssociates); } + eventBus.showProjectsList(args); } @@ -298,10 +300,11 @@ public class ProjectEditorModel extends AbstractValidator implements EventListen } @Command - @NotifyChange("associates") + @NotifyChange("formAssociates") public void onAfterRenderAssociates() { formAssociates = new HashMap<>(); - for (int i = 1; i < associatesDataModel.getSize() + 1; i++) { + origAssociates = new HashMap<>(); + for (int i = 0; i < associatesDataModel.getSize(); i++) { Associate associate = associatesDataModel.getElementAt(i); boolean exists = projectAssociateServiceImpl.getAll().stream() .anyMatch( @@ -312,6 +315,7 @@ public class ProjectEditorModel extends AbstractValidator implements EventListen log.info("{} is on project {}", associate.getName(), formDocument.getName()); } formAssociates.put(associate.getId(), exists); + origAssociates.put(associate.getId(), exists); } }