Skip to content

Commit

Permalink
Added template model service
Browse files Browse the repository at this point in the history
  • Loading branch information
petruki committed Jul 12, 2021
1 parent 08f18af commit 421ed48
Show file tree
Hide file tree
Showing 9 changed files with 325 additions and 16 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.trackerforce.common.tenant.model;

import java.util.Collections;
import java.util.List;
import java.util.LinkedList;

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

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

@DBRef
protected List<AbstractTask> tasks = Collections.emptyList();
protected LinkedList<AbstractTask> tasks;

public String getName() {
return name;
}

public List<AbstractTask> getTasks() {
public LinkedList<AbstractTask> getTasks() {
if (tasks == null)
tasks = new LinkedList<>();

return tasks;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.trackerforce.management.controller;

import java.util.LinkedList;
import java.util.Map;

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

import com.trackerforce.common.model.response.ErrorResponse;
import com.trackerforce.common.service.exception.ServiceException;
import com.trackerforce.common.tenant.model.AbstractTask;
import com.trackerforce.management.model.Task;
import com.trackerforce.management.model.request.ProcedureRequest;
import com.trackerforce.management.service.ProcedureService;
Expand Down Expand Up @@ -64,6 +66,14 @@ public ResponseEntity<?> update(
}
}

@PostMapping(value = "/v1/{id}/task/reorder")
public ResponseEntity<LinkedList<AbstractTask>> reorderTask(
@PathVariable(value="id") String id,
@RequestParam(required = true) int from,
@RequestParam(required = true) int to) {
return ResponseEntity.ok(procedureService.reorderTask(id, from, to));
}

@PostMapping(value = "/v1/{id}/task/add/{taskId}")
public ResponseEntity<Task> addTask(
@PathVariable(value="id") String id,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
package com.trackerforce.management.controller;

import java.util.LinkedList;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.trackerforce.common.model.response.ErrorResponse;
import com.trackerforce.common.service.exception.ServiceException;
import com.trackerforce.common.tenant.model.AbstractProcedure;
import com.trackerforce.management.model.Procedure;
import com.trackerforce.management.model.request.TemplateRequest;
import com.trackerforce.management.service.TemplateService;

@CrossOrigin(allowedHeaders = { "X-Tenant" })
@RestController
@RequestMapping("management/template")
public class TemplateController {

@Autowired
private TemplateService templateService;

@PostMapping(value = "/v1/create")
public ResponseEntity<?> create(@RequestBody TemplateRequest templateRequest) {
try {
return ResponseEntity.ok(templateService.create(templateRequest));
} catch (ServiceException e) {
return ResponseEntity.badRequest().body(new ErrorResponse(e.getMessage()));
}
}

@GetMapping(value = "/v1/")
public ResponseEntity<Map<String, Object>> findAll(
@RequestParam(required = false) String description,
@RequestParam(required = false) String sortBy,
@RequestParam(required = false) String output,
@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "10") int size) {
return ResponseEntity.ok(templateService.findAllProjectedBy(description, sortBy, output, page, size));
}

@GetMapping(value = "/v1/{id}")
public ResponseEntity<?> findOne(@PathVariable(value="id") String id, String output) {
return ResponseEntity.ok(templateService.findByIdProjectedBy(id, output));
}

@PatchMapping(value = "/v1/{id}")
public ResponseEntity<?> update(
@PathVariable(value="id") String id,
@RequestBody Map<String, Object> updates) {
try {
return ResponseEntity.ok(templateService.update(id, updates));
} catch (ServiceException e) {
return ResponseEntity.badRequest().body(new ErrorResponse(e.getMessage()));
}
}

@PostMapping(value = "/v1/{id}/procedure/reorder")
public ResponseEntity<LinkedList<AbstractProcedure>> reorderProcedure(
@PathVariable(value="id") String id,
@RequestParam(required = true) int from,
@RequestParam(required = true) int to) {
return ResponseEntity.ok(templateService.reorderProcedure(id, from, to));
}

@PostMapping(value = "/v1/{id}/procedure/add/{procedureId}")
public ResponseEntity<Procedure> addProcedure(
@PathVariable(value="id") String id,
@PathVariable(value="procedureId") String procedureId) {
return ResponseEntity.ok(templateService.updateProcedures(id, procedureId, true));
}

@PostMapping(value = "/v1/{id}/procedure/remove/{procedureId}")
public ResponseEntity<Procedure> removeProcedure(
@PathVariable(value="id") String id,
@PathVariable(value="procedureId") String procedureId) {
return ResponseEntity.ok(templateService.updateProcedures(id, procedureId, false));
}

@DeleteMapping(value = "/v1/{id}")
public ResponseEntity<?> delete(@PathVariable(value="id") String id) {
templateService.delete(id);
return ResponseEntity.ok().build();
}

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.trackerforce.management.model;

import java.util.List;
import java.util.LinkedList;

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

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

private String name;

private List<AbstractProcedure> procedures;
private LinkedList<AbstractProcedure> procedures;

public String getName() {
return name;
Expand All @@ -22,12 +22,11 @@ public void setName(String name) {
this.name = name;
}

public List<AbstractProcedure> getProcedures() {
public LinkedList<AbstractProcedure> getProcedures() {
if (procedures == null)
procedures = new LinkedList<>();

return procedures;
}

public void setProcedures(List<AbstractProcedure> procedures) {
this.procedures = procedures;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.trackerforce.management.model.request;

import com.trackerforce.common.tenant.model.ComponentHelper;
import com.trackerforce.management.model.Template;

public class TemplateRequest {

private Template template;

private ComponentHelper helper;

public Template getTemplate() {
return template;
}

public void setTemplate(Template procedure) {
this.template = procedure;
}

public ComponentHelper getHelper() {
return helper;
}

public void setHelper(ComponentHelper helper) {
this.helper = helper;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.trackerforce.management.repository;

import org.springframework.data.mongodb.repository.MongoRepository;

import com.trackerforce.management.model.Template;

public interface TemplateRepository extends MongoRepository<Template, String> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.trackerforce.management.repository;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.trackerforce.common.tenant.repository.AbstractProjectedDao;
import com.trackerforce.management.model.Template;

@Repository
public class TemplateRepositoryDao extends AbstractProjectedDao<Template> {

@Autowired
private TemplateRepository templateRepository;

public void delete(final Template procedure) {
this.deleteById(procedure.getId());
}

public void deleteById(final String id) {
templateRepository.deleteById(id);
}

public TemplateRepository getTemplateRepository() {
return templateRepository;
}

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.trackerforce.management.service;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;

import org.springframework.http.HttpStatus;
Expand All @@ -9,6 +10,7 @@
import org.springframework.web.server.ResponseStatusException;

import com.trackerforce.common.service.exception.ServiceException;
import com.trackerforce.common.tenant.model.AbstractTask;
import com.trackerforce.common.tenant.model.type.RenderType;
import com.trackerforce.management.model.Procedure;
import com.trackerforce.management.model.Task;
Expand Down Expand Up @@ -65,17 +67,30 @@ public Procedure update(final String id, final Map<String, Object> updates)
return super.update(promise, updates, allowed);
}

public LinkedList<AbstractTask> reorderTask(final String id, int from, int to) {
final var procedurePromise = procedureDao.getProcedureRepository().findById(id);

if (!procedurePromise.isPresent())
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Procedure not found");

final var procedure = procedurePromise.get();
final var task = procedure.getTasks().get(from);
procedure.getTasks().remove(from);
procedure.getTasks().add(to, task);

procedureDao.getProcedureRepository().save(procedure);
return procedure.getTasks();
}

public Task updateTasks(final String id, final String taskId, boolean add) {
final var procedurePromise = procedureDao.getProcedureRepository().findById(id);
final var taskPromise = taskDao.getTaskRepository().findById(taskId);

if (!procedurePromise.isPresent())
throw new ResponseStatusException(HttpStatus.NOT_FOUND,
"Procedure not found");
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Procedure not found");

if (!taskPromise.isPresent())
throw new ResponseStatusException(HttpStatus.NOT_FOUND,
"Task not found");
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Task not found");

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

procedure.getTasks().add(task);
procedure.getTasks().push(task);
procedureDao.getProcedureRepository().save(procedure);
return task;
}
Expand Down
Loading

0 comments on commit 421ed48

Please sign in to comment.