Skip to content

Commit 61a67c3

Browse files
Merge pull request #195 from fbasios/devel
[ACC-286] Do not erase acl when updating a Project
2 parents f1ee77b + f9f71d8 commit 61a67c3

File tree

3 files changed

+44
-8
lines changed

3 files changed

+44
-8
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ According to [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) , the `Unr
3838

3939
- [#193](https://github.com/ARGOeu/argo-accounting/pull/193) - ACC-274 Update Group ID Path Name to Resolve Conflict with User ID Path.
4040
- [#194](https://github.com/ARGOeu/argo-accounting/pull/194) - ACC-275 Fix Search of Metrics by Start or End Date.
41+
- [#195](https://github.com/ARGOeu/argo-accounting/pull/195) - ACC-286 Project entry "lost" when updated.
4142

4243
## 1.5.1 - 2024-07-24
4344

src/main/java/org/accounting/system/repositories/project/ProjectRepository.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import jakarta.inject.Inject;
1212
import jakarta.ws.rs.NotFoundException;
1313
import org.accounting.system.beans.RequestUserContext;
14+
import org.accounting.system.dtos.project.UpdateProjectRequest;
1415
import org.accounting.system.entities.HierarchicalRelation;
1516
import org.accounting.system.entities.MetricDefinition;
1617
import org.accounting.system.entities.acl.RoleAccessControl;
@@ -32,6 +33,7 @@
3233
import org.accounting.system.repositories.metric.MetricRepository;
3334
import org.accounting.system.repositories.provider.ProviderRepository;
3435
import org.accounting.system.services.authorization.RoleService;
36+
import org.apache.commons.lang3.StringUtils;
3537
import org.bson.Document;
3638
import org.bson.conversions.Bson;
3739

@@ -281,6 +283,46 @@ public ProjectProjection fetchById(String projectId){
281283
.first();
282284
}
283285

286+
public ProjectProjection updateProject(UpdateProjectRequest request, String id) {
287+
288+
var eq = Filters.eq("_id", id);
289+
290+
var list = new ArrayList<Bson>();
291+
292+
if(StringUtils.isNotEmpty(request.acronym)){
293+
294+
list.add(Updates.set("acronym", request.acronym));
295+
}
296+
297+
if(StringUtils.isNotEmpty(request.title)){
298+
299+
list.add(Updates.set("title", request.title));
300+
}
301+
302+
if(StringUtils.isNotEmpty(request.startDate)){
303+
304+
list.add(Updates.set("startDate", request.startDate));
305+
}
306+
307+
if(StringUtils.isNotEmpty(request.endDate)){
308+
309+
list.add(Updates.set("endDate", request.endDate));
310+
}
311+
312+
if(StringUtils.isNotEmpty(request.callIdentifier)){
313+
314+
list.add(Updates.set("callIdentifier", request.callIdentifier));
315+
}
316+
317+
var update = Updates.combine(
318+
list
319+
);
320+
321+
getMongoCollection().updateOne(eq, update);
322+
323+
return fetchById(id);
324+
}
325+
284326
public boolean accessibility(String projectId, Collection collection, Operation operation){
285327

286328
var roleAccessControls = fetchRoleAccessControl(projectId, requestUserContext.getId());

src/main/java/org/accounting/system/services/SystemAdminService.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import org.accounting.system.entities.client.Client;
1515
import org.accounting.system.entities.projections.normal.ProjectProjection;
1616
import org.accounting.system.exceptions.ConflictException;
17-
import org.accounting.system.mappers.ProjectMapper;
1817
import org.accounting.system.mappers.ResourceMapper;
1918
import org.accounting.system.repositories.ResourceRepository;
2019
import org.accounting.system.repositories.authorization.RoleRepository;
@@ -205,12 +204,6 @@ public ResourceResponse createResource(ResourceRequest request) {
205204

206205
public ProjectProjection updateProject(UpdateProjectRequest request, String id) {
207206

208-
var entity = projectRepository.findById(id);
209-
210-
ProjectMapper.INSTANCE.updateProjectFromDto(request, entity);
211-
212-
projectRepository.update(entity);
213-
214-
return projectRepository.fetchById(id);
207+
return projectRepository.updateProject(request, id);
215208
}
216209
}

0 commit comments

Comments
 (0)