-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathTerminateTaskService.java
More file actions
45 lines (37 loc) · 2.21 KB
/
TerminateTaskService.java
File metadata and controls
45 lines (37 loc) · 2.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package clap.server.application.service.task;
import clap.server.adapter.outbound.persistense.entity.notification.constant.NotificationType;
import clap.server.adapter.outbound.persistense.entity.task.constant.TaskHistoryType;
import clap.server.adapter.outbound.persistense.entity.task.constant.TaskStatus;
import clap.server.application.port.inbound.domain.TaskService;
import clap.server.application.port.inbound.task.TerminateTaskUsecase;
import clap.server.application.port.outbound.taskhistory.CommandTaskHistoryPort;
import clap.server.application.service.webhook.SendNotificationService;
import clap.server.common.annotation.architecture.ApplicationService;
import clap.server.domain.model.member.Member;
import clap.server.domain.model.task.Task;
import clap.server.domain.model.task.TaskHistory;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;
@ApplicationService
@RequiredArgsConstructor
@Transactional
public class TerminateTaskService implements TerminateTaskUsecase {
private final TaskService taskService;
private final CommandTaskHistoryPort commandTaskHistoryPort;
private final SendNotificationService sendNotificationService;
private final UpdateProcessorTaskCountService updateProcessorTaskCountService;
@Override
public void terminateTask(Long memberId, Long taskId, String reason) {
Task task = taskService.findById(taskId);
updateProcessorTaskCountService.handleTaskStatusChange(task.getProcessor(), task.getTaskStatus(), TaskStatus.TERMINATED);
task.terminateTask();
taskService.upsert(task);
TaskHistory taskHistory = TaskHistory.createTaskHistory(TaskHistoryType.TASK_TERMINATED, task, reason, null, null);
commandTaskHistoryPort.save(taskHistory);
publishNotification(task.getRequester(), task, String.valueOf(task.getTaskStatus()), reason);
}
private void publishNotification(Member receiver, Task task, String message, String reason) {
sendNotificationService.sendPushNotification(receiver, NotificationType.STATUS_SWITCHED, task, message, reason, null, false);
sendNotificationService.sendAgitNotification(NotificationType.STATUS_SWITCHED, task, message, null);
}
}