Skip to content

Commit

Permalink
Delegate Task
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexPowerPA committed Oct 30, 2020
1 parent 434e349 commit 3074735
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.gateway.workflow.controllers;

import com.gateway.workflow.dtos.DarDelegateTasksDto;
import com.gateway.workflow.dtos.DarHistoryAggDto;
import com.gateway.workflow.dtos.DarStepReviewDto;
import com.gateway.workflow.dtos.ManagerApprovedDto;
Expand Down Expand Up @@ -36,9 +37,17 @@ public DarStepReviewDto darReviewerStep(@PathVariable("businessKey") String busi
return dataRequestService.completeReviewerStep(businessKey, darStepReviewDto);
}

@PostMapping(value = "/manager/completed/{businessKey}")
@PostMapping(value = "/manager/complete/{businessKey}")
@ResponseStatus(OK)
public ManagerApprovedDto darManagerApproval(@PathVariable("businessKey") String businessKey, @Valid @RequestBody ManagerApprovedDto managerApprovedDto) throws NotFoundException {
return dataRequestService.managerCompletedReview(businessKey, managerApprovedDto);
}

@PutMapping(value = "/manager/delegate/task/{businessKey}")
@ResponseStatus(OK)
public DarDelegateTasksDto managerDelegateTask(@PathVariable("businessKey") String businessKey,
@RequestParam(value = "reviewerId") String reviewerId,
@RequestParam(value = "managerId") String managerId) throws NotFoundException {
return dataRequestService.managerDelegateTask(businessKey, reviewerId, managerId);
}
}
19 changes: 19 additions & 0 deletions src/main/java/com/gateway/workflow/dtos/DarDelegateTasksDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.gateway.workflow.dtos;

import lombok.*;

import java.util.List;

@Getter
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Setter
@ToString
public class DarDelegateTasksDto {

private List<String> delegateTasks;
private String previousAssignee;
private String newAssignee;
private Integer taskCount;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.gateway.workflow.services;

import com.gateway.workflow.dtos.DarDelegateTasksDto;
import com.gateway.workflow.dtos.DarHistoryAggDto;
import com.gateway.workflow.dtos.DarStepReviewDto;
import com.gateway.workflow.dtos.ManagerApprovedDto;
Expand All @@ -13,5 +14,7 @@ public interface DataRequestService {

DarStepReviewDto completeReviewerStep(String businessKey, DarStepReviewDto darStepReviewDto) throws NotFoundException;

DarDelegateTasksDto managerDelegateTask(String businessKey, String reviewerId, String managerId) throws NotFoundException;

DarHistoryAggDto getDarRequestHistory(String businessKey) throws NotFoundException;
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
package com.gateway.workflow.services;

import com.gateway.workflow.dtos.DarHistoryAggDto;
import com.gateway.workflow.dtos.DarHistoryDto;
import com.gateway.workflow.dtos.DarStepReviewDto;
import com.gateway.workflow.dtos.ManagerApprovedDto;
import com.gateway.workflow.dtos.*;
import javassist.NotFoundException;
import org.camunda.bpm.engine.HistoryService;
import org.camunda.bpm.engine.ProcessEngine;
Expand Down Expand Up @@ -116,6 +113,43 @@ public DarStepReviewDto completeReviewerStep(String businessKey, DarStepReviewDt
return darStepReviewDto;
}

@Override
public DarDelegateTasksDto managerDelegateTask(String businessKey, String reviewerId, String managerId) throws NotFoundException {
// Get a list of filtered user tasks on the businessKey (DarId) and reviewerId.
// reviewerId - is the user ID you want to delegate from
// managerId - is the user ID you want to delegate to
List<Task> userTasks = getUserTasks(businessKey).stream()
.filter(x -> reviewerId.equals(x.getAssignee()))
.collect(Collectors.toList());

// If userTasks is null or has a size less than equal to 0
// then throw a friendly message
if(userTasks == null || userTasks.size() <= 0) {
throw new NotFoundException(String.format("No tasks could be found for assignee: %s for DAR: %s", reviewerId, businessKey));
}

//Create a new list to keep track of all user tasks delegated
List<String> delegateTasks = new ArrayList<>();

// Iterate over the users tasks and assignee them to the new user (managerId).
for (Task t : userTasks) {
delegateTasks.add(t.getName());
taskService.setAssignee(t.getId(), managerId);
}

// Return a new DTO with a list of;
// Tasks that were updated
// The new assigneeId
// The previous assigneeId
// The number of tasks modified
return DarDelegateTasksDto.builder()
.delegateTasks(delegateTasks)
.newAssignee(managerId)
.previousAssignee(reviewerId)
.taskCount(delegateTasks.size())
.build();
}

@Override
public DarHistoryAggDto getDarRequestHistory(String businessKey) throws NotFoundException {
String process = getProcessId(businessKey);
Expand Down

0 comments on commit 3074735

Please sign in to comment.