Skip to content

Commit ac5aa8d

Browse files
committed
review
review notification service
1 parent 0cdb5df commit ac5aa8d

4 files changed

Lines changed: 31 additions & 40 deletions

File tree

task-tracker-scheduler/src/main/java/com/metarash/tasktrackerscheduler/repository/TaskRepository.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515

1616
public interface TaskRepository extends JpaRepository<Task, Long> {
1717
List<Task> findByUser(User user);
18-
@Query("SELECT MIN(t.dueDate) FROM Task t WHERE t.dueDate > :now AND t.status != 'completed' AND t.notificationSent IS NULL")
19-
Optional<LocalDateTime> findNextDueDateAfterNow(@Param("now") LocalDateTime now);
20-
21-
List<Task> findAllByDueDateBeforeAndStatusNotAndNotificationSentIsNull(LocalDateTime dueDate, TaskStatus status);
18+
List<Task> findByUserAndStatus(User user, TaskStatus status);
19+
List<Task> findByUserAndStatusNot(User user, TaskStatus status);
2220
}

task-tracker-scheduler/src/main/java/com/metarash/tasktrackerscheduler/service/NotificationScheduler.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
import java.time.LocalDateTime;
1010
import java.util.Comparator;
1111
import java.util.PriorityQueue;
12-
import java.util.Timer;
13-
import java.util.TimerTask;
1412
import java.util.concurrent.Executors;
1513
import java.util.concurrent.ScheduledExecutorService;
1614
import java.util.concurrent.ScheduledFuture;
@@ -29,7 +27,6 @@ public class NotificationScheduler {
2927

3028
private final ReentrantLock lock = new ReentrantLock();
3129

32-
private final Timer timer = new Timer();
3330
private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
3431
private ScheduledFuture<?> currentTask;
3532

task-tracker-scheduler/src/main/java/com/metarash/tasktrackerscheduler/service/ReportService.java

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.metarash.dto.ReportDto;
44
import com.metarash.dto.TaskDto;
5+
import com.metarash.model.TaskStatus;
6+
import com.metarash.tasktrackerscheduler.entity.Task;
57
import com.metarash.tasktrackerscheduler.entity.User;
68
import com.metarash.tasktrackerscheduler.mapper.TaskMapper;
79
import lombok.RequiredArgsConstructor;
@@ -17,49 +19,47 @@ public class ReportService {
1719
private final TaskMapper taskMapper;
1820

1921
public ReportDto generateDayReport(User user) {
20-
List<TaskDto> unfinishedTasks = taskService.getUnfinishedTasksByUser(user).stream()
22+
List<Task> allTasks = taskService.getAllByUser(user);
23+
if (allTasks.isEmpty()) {
24+
return null;
25+
}
26+
27+
List<TaskDto> allTaskDtos = allTasks.stream()
2128
.map(taskMapper::toDto)
2229
.toList();
23-
List<TaskDto> allTasks = taskService.getAllByUser(user).stream()
30+
31+
List<TaskDto> finishedTasks = taskService.getFinishedTasksByUser(user).stream()
2432
.map(taskMapper::toDto)
2533
.toList();
26-
List<TaskDto> finishedTasks = taskService.getFinishedTasksByUser(user).stream()
34+
35+
List<TaskDto> unfinishedTasks = taskService.getUnfinishedTasksByUser(user).stream()
2736
.map(taskMapper::toDto)
2837
.toList();
2938

3039
ReportDto dayReport = new ReportDto();
3140
dayReport.setEmail(user.getEmail());
3241

33-
if (allTasks.isEmpty()) {
34-
return null;
35-
}
36-
37-
if (finishedTasks.size() == allTasks.size()) {
38-
buildFinishedTasks(dayReport, finishedTasks);
39-
} else if (unfinishedTasks.size() == allTasks.size()) {
40-
buildUnfinishedTasks(dayReport, unfinishedTasks);
41-
} else {
42-
buildAllTaskTasks(dayReport, finishedTasks, unfinishedTasks);
43-
}
42+
buildReport(dayReport, finishedTasks, unfinishedTasks, allTaskDtos.size());
4443

4544
return dayReport;
4645
}
4746

48-
private void buildAllTaskTasks(ReportDto dayReport, List<TaskDto> finishedTasks, List<TaskDto> unfinishedTasks) {
49-
dayReport.setFinishedCount(finishedTasks.size());
50-
dayReport.setUnfinishedCount(unfinishedTasks.size());
47+
private void buildReport(ReportDto report,
48+
List<TaskDto> finishedTasks,
49+
List<TaskDto> unfinishedTasks,
50+
int totalTasks) {
51+
report.setFinishedCount(finishedTasks.size());
52+
report.setUnfinishedCount(unfinishedTasks.size());
5153

52-
dayReport.setFinishedTasks(finishedTasks.size() > 5 ? finishedTasks.subList(0, 5) : finishedTasks);
53-
dayReport.setUnfinishedTasks(unfinishedTasks.size() > 5 ? unfinishedTasks.subList(0, 5) : unfinishedTasks);
54-
}
55-
56-
private void buildUnfinishedTasks(ReportDto dayReport, List<TaskDto> unfinishedTasks) {
57-
dayReport.setUnfinishedCount(unfinishedTasks.size());
58-
dayReport.setUnfinishedTasks(unfinishedTasks.size() > 5 ? unfinishedTasks.subList(0, 5) : unfinishedTasks);
54+
if (!finishedTasks.isEmpty()) {
55+
report.setFinishedTasks(getFirstFive(finishedTasks));
56+
}
57+
if (!unfinishedTasks.isEmpty()) {
58+
report.setUnfinishedTasks(getFirstFive(unfinishedTasks));
59+
}
5960
}
6061

61-
private void buildFinishedTasks(ReportDto dayReport, List<TaskDto> finishedTasks) {
62-
dayReport.setFinishedCount(finishedTasks.size());
63-
dayReport.setFinishedTasks(finishedTasks.size() > 5 ? finishedTasks.subList(0, 5) : finishedTasks);
62+
private List<TaskDto> getFirstFive(List<TaskDto> tasks) {
63+
return tasks.size() > 5 ? tasks.subList(0, 5) : tasks;
6464
}
6565
}

task-tracker-scheduler/src/main/java/com/metarash/tasktrackerscheduler/service/TaskService.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,10 @@ public List<Task> getAllByUser(User user) {
2020
}
2121

2222
public List<Task> getFinishedTasksByUser(User user) {
23-
return taskRepository.findByUser(user).stream()
24-
.filter(task -> task.getStatus() == TaskStatus.completed)
25-
.collect(Collectors.toList());
23+
return taskRepository.findByUserAndStatus(user, TaskStatus.completed);
2624
}
2725

2826
public List<Task> getUnfinishedTasksByUser(User user) {
29-
return taskRepository.findByUser(user).stream()
30-
.filter(task -> task.getStatus() != TaskStatus.completed)
31-
.collect(Collectors.toList());
27+
return taskRepository.findByUserAndStatusNot(user, TaskStatus.completed);
3228
}
3329
}

0 commit comments

Comments
 (0)