Skip to content

Commit 421ed48

Browse files
committed
Added template model service
1 parent 08f18af commit 421ed48

9 files changed

Lines changed: 325 additions & 16 deletions

File tree

trackerforce-common-tenancy/src/main/java/com/trackerforce/common/tenant/model/AbstractProcedure.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.trackerforce.common.tenant.model;
22

3-
import java.util.Collections;
4-
import java.util.List;
3+
import java.util.LinkedList;
54

65
import org.springframework.data.mongodb.core.mapping.DBRef;
76

@@ -20,13 +19,16 @@ public abstract class AbstractProcedure extends AbstractBusinessDocument {
2019
protected String procedureMngmtId;
2120

2221
@DBRef
23-
protected List<AbstractTask> tasks = Collections.emptyList();
22+
protected LinkedList<AbstractTask> tasks;
2423

2524
public String getName() {
2625
return name;
2726
}
2827

29-
public List<AbstractTask> getTasks() {
28+
public LinkedList<AbstractTask> getTasks() {
29+
if (tasks == null)
30+
tasks = new LinkedList<>();
31+
3032
return tasks;
3133
}
3234

trackerforce-management/src/main/java/com/trackerforce/management/controller/ProcedureController.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.trackerforce.management.controller;
22

3+
import java.util.LinkedList;
34
import java.util.Map;
45

56
import org.springframework.beans.factory.annotation.Autowired;
@@ -17,6 +18,7 @@
1718

1819
import com.trackerforce.common.model.response.ErrorResponse;
1920
import com.trackerforce.common.service.exception.ServiceException;
21+
import com.trackerforce.common.tenant.model.AbstractTask;
2022
import com.trackerforce.management.model.Task;
2123
import com.trackerforce.management.model.request.ProcedureRequest;
2224
import com.trackerforce.management.service.ProcedureService;
@@ -64,6 +66,14 @@ public ResponseEntity<?> update(
6466
}
6567
}
6668

69+
@PostMapping(value = "/v1/{id}/task/reorder")
70+
public ResponseEntity<LinkedList<AbstractTask>> reorderTask(
71+
@PathVariable(value="id") String id,
72+
@RequestParam(required = true) int from,
73+
@RequestParam(required = true) int to) {
74+
return ResponseEntity.ok(procedureService.reorderTask(id, from, to));
75+
}
76+
6777
@PostMapping(value = "/v1/{id}/task/add/{taskId}")
6878
public ResponseEntity<Task> addTask(
6979
@PathVariable(value="id") String id,
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
package com.trackerforce.management.controller;
2+
3+
import java.util.LinkedList;
4+
import java.util.Map;
5+
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.http.ResponseEntity;
8+
import org.springframework.web.bind.annotation.CrossOrigin;
9+
import org.springframework.web.bind.annotation.DeleteMapping;
10+
import org.springframework.web.bind.annotation.GetMapping;
11+
import org.springframework.web.bind.annotation.PatchMapping;
12+
import org.springframework.web.bind.annotation.PathVariable;
13+
import org.springframework.web.bind.annotation.PostMapping;
14+
import org.springframework.web.bind.annotation.RequestBody;
15+
import org.springframework.web.bind.annotation.RequestMapping;
16+
import org.springframework.web.bind.annotation.RequestParam;
17+
import org.springframework.web.bind.annotation.RestController;
18+
19+
import com.trackerforce.common.model.response.ErrorResponse;
20+
import com.trackerforce.common.service.exception.ServiceException;
21+
import com.trackerforce.common.tenant.model.AbstractProcedure;
22+
import com.trackerforce.management.model.Procedure;
23+
import com.trackerforce.management.model.request.TemplateRequest;
24+
import com.trackerforce.management.service.TemplateService;
25+
26+
@CrossOrigin(allowedHeaders = { "X-Tenant" })
27+
@RestController
28+
@RequestMapping("management/template")
29+
public class TemplateController {
30+
31+
@Autowired
32+
private TemplateService templateService;
33+
34+
@PostMapping(value = "/v1/create")
35+
public ResponseEntity<?> create(@RequestBody TemplateRequest templateRequest) {
36+
try {
37+
return ResponseEntity.ok(templateService.create(templateRequest));
38+
} catch (ServiceException e) {
39+
return ResponseEntity.badRequest().body(new ErrorResponse(e.getMessage()));
40+
}
41+
}
42+
43+
@GetMapping(value = "/v1/")
44+
public ResponseEntity<Map<String, Object>> findAll(
45+
@RequestParam(required = false) String description,
46+
@RequestParam(required = false) String sortBy,
47+
@RequestParam(required = false) String output,
48+
@RequestParam(defaultValue = "0") int page,
49+
@RequestParam(defaultValue = "10") int size) {
50+
return ResponseEntity.ok(templateService.findAllProjectedBy(description, sortBy, output, page, size));
51+
}
52+
53+
@GetMapping(value = "/v1/{id}")
54+
public ResponseEntity<?> findOne(@PathVariable(value="id") String id, String output) {
55+
return ResponseEntity.ok(templateService.findByIdProjectedBy(id, output));
56+
}
57+
58+
@PatchMapping(value = "/v1/{id}")
59+
public ResponseEntity<?> update(
60+
@PathVariable(value="id") String id,
61+
@RequestBody Map<String, Object> updates) {
62+
try {
63+
return ResponseEntity.ok(templateService.update(id, updates));
64+
} catch (ServiceException e) {
65+
return ResponseEntity.badRequest().body(new ErrorResponse(e.getMessage()));
66+
}
67+
}
68+
69+
@PostMapping(value = "/v1/{id}/procedure/reorder")
70+
public ResponseEntity<LinkedList<AbstractProcedure>> reorderProcedure(
71+
@PathVariable(value="id") String id,
72+
@RequestParam(required = true) int from,
73+
@RequestParam(required = true) int to) {
74+
return ResponseEntity.ok(templateService.reorderProcedure(id, from, to));
75+
}
76+
77+
@PostMapping(value = "/v1/{id}/procedure/add/{procedureId}")
78+
public ResponseEntity<Procedure> addProcedure(
79+
@PathVariable(value="id") String id,
80+
@PathVariable(value="procedureId") String procedureId) {
81+
return ResponseEntity.ok(templateService.updateProcedures(id, procedureId, true));
82+
}
83+
84+
@PostMapping(value = "/v1/{id}/procedure/remove/{procedureId}")
85+
public ResponseEntity<Procedure> removeProcedure(
86+
@PathVariable(value="id") String id,
87+
@PathVariable(value="procedureId") String procedureId) {
88+
return ResponseEntity.ok(templateService.updateProcedures(id, procedureId, false));
89+
}
90+
91+
@DeleteMapping(value = "/v1/{id}")
92+
public ResponseEntity<?> delete(@PathVariable(value="id") String id) {
93+
templateService.delete(id);
94+
return ResponseEntity.ok().build();
95+
}
96+
97+
}
Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.trackerforce.management.model;
22

3-
import java.util.List;
3+
import java.util.LinkedList;
44

55
import org.springframework.data.mongodb.core.mapping.Document;
66

@@ -12,7 +12,7 @@ public class Template extends AbstractBusinessDocument {
1212

1313
private String name;
1414

15-
private List<AbstractProcedure> procedures;
15+
private LinkedList<AbstractProcedure> procedures;
1616

1717
public String getName() {
1818
return name;
@@ -22,12 +22,11 @@ public void setName(String name) {
2222
this.name = name;
2323
}
2424

25-
public List<AbstractProcedure> getProcedures() {
25+
public LinkedList<AbstractProcedure> getProcedures() {
26+
if (procedures == null)
27+
procedures = new LinkedList<>();
28+
2629
return procedures;
2730
}
28-
29-
public void setProcedures(List<AbstractProcedure> procedures) {
30-
this.procedures = procedures;
31-
}
3231

3332
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.trackerforce.management.model.request;
2+
3+
import com.trackerforce.common.tenant.model.ComponentHelper;
4+
import com.trackerforce.management.model.Template;
5+
6+
public class TemplateRequest {
7+
8+
private Template template;
9+
10+
private ComponentHelper helper;
11+
12+
public Template getTemplate() {
13+
return template;
14+
}
15+
16+
public void setTemplate(Template procedure) {
17+
this.template = procedure;
18+
}
19+
20+
public ComponentHelper getHelper() {
21+
return helper;
22+
}
23+
24+
public void setHelper(ComponentHelper helper) {
25+
this.helper = helper;
26+
}
27+
28+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.trackerforce.management.repository;
2+
3+
import org.springframework.data.mongodb.repository.MongoRepository;
4+
5+
import com.trackerforce.management.model.Template;
6+
7+
public interface TemplateRepository extends MongoRepository<Template, String> {
8+
9+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.trackerforce.management.repository;
2+
3+
import org.springframework.beans.factory.annotation.Autowired;
4+
import org.springframework.stereotype.Repository;
5+
6+
import com.trackerforce.common.tenant.repository.AbstractProjectedDao;
7+
import com.trackerforce.management.model.Template;
8+
9+
@Repository
10+
public class TemplateRepositoryDao extends AbstractProjectedDao<Template> {
11+
12+
@Autowired
13+
private TemplateRepository templateRepository;
14+
15+
public void delete(final Template procedure) {
16+
this.deleteById(procedure.getId());
17+
}
18+
19+
public void deleteById(final String id) {
20+
templateRepository.deleteById(id);
21+
}
22+
23+
public TemplateRepository getTemplateRepository() {
24+
return templateRepository;
25+
}
26+
27+
}

trackerforce-management/src/main/java/com/trackerforce/management/service/ProcedureService.java

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.trackerforce.management.service;
22

33
import java.util.HashMap;
4+
import java.util.LinkedList;
45
import java.util.Map;
56

67
import org.springframework.http.HttpStatus;
@@ -9,6 +10,7 @@
910
import org.springframework.web.server.ResponseStatusException;
1011

1112
import com.trackerforce.common.service.exception.ServiceException;
13+
import com.trackerforce.common.tenant.model.AbstractTask;
1214
import com.trackerforce.common.tenant.model.type.RenderType;
1315
import com.trackerforce.management.model.Procedure;
1416
import com.trackerforce.management.model.Task;
@@ -65,17 +67,30 @@ public Procedure update(final String id, final Map<String, Object> updates)
6567
return super.update(promise, updates, allowed);
6668
}
6769

70+
public LinkedList<AbstractTask> reorderTask(final String id, int from, int to) {
71+
final var procedurePromise = procedureDao.getProcedureRepository().findById(id);
72+
73+
if (!procedurePromise.isPresent())
74+
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Procedure not found");
75+
76+
final var procedure = procedurePromise.get();
77+
final var task = procedure.getTasks().get(from);
78+
procedure.getTasks().remove(from);
79+
procedure.getTasks().add(to, task);
80+
81+
procedureDao.getProcedureRepository().save(procedure);
82+
return procedure.getTasks();
83+
}
84+
6885
public Task updateTasks(final String id, final String taskId, boolean add) {
6986
final var procedurePromise = procedureDao.getProcedureRepository().findById(id);
7087
final var taskPromise = taskDao.getTaskRepository().findById(taskId);
7188

7289
if (!procedurePromise.isPresent())
73-
throw new ResponseStatusException(HttpStatus.NOT_FOUND,
74-
"Procedure not found");
90+
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Procedure not found");
7591

7692
if (!taskPromise.isPresent())
77-
throw new ResponseStatusException(HttpStatus.NOT_FOUND,
78-
"Task not found");
93+
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Task not found");
7994

8095
if (add)
8196
return addTask(procedurePromise.get(), taskPromise.get());
@@ -88,7 +103,7 @@ private Task addTask(final Procedure procedure, final Task task) {
88103
throw new ResponseStatusException(HttpStatus.BAD_REQUEST,
89104
"Task already added to Procedure");
90105

91-
procedure.getTasks().add(task);
106+
procedure.getTasks().push(task);
92107
procedureDao.getProcedureRepository().save(procedure);
93108
return task;
94109
}

0 commit comments

Comments
 (0)