Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SAK-48446 tasks. Do not show unstarted tasks #12091

Merged
merged 1 commit into from
Nov 15, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
SAK-48446 tasks. Do not show unstarted tasks
  • Loading branch information
adrianfish committed Nov 15, 2023
commit bef389627e9536210580502549ca7d9c7059c348
Original file line number Diff line number Diff line change
Expand Up @@ -1457,20 +1457,21 @@ public void updateAssignment(Assignment assignment) throws PermissionException {

assignment.setDateModified(Instant.now());
assignment.setModifier(sessionManager.getCurrentSessionUserId());
Assignment updatedAssingment = assignmentRepository.merge(assignment);
Assignment updatedAssignment = assignmentRepository.merge(assignment);

Task task = new Task();
task.setSiteId(updatedAssingment.getContext());
task.setSiteId(updatedAssignment.getContext());
task.setReference(reference);
task.setSystem(true);
task.setDescription(updatedAssingment.getTitle());
task.getGroups().addAll(updatedAssingment.getGroups());
task.setDescription(updatedAssignment.getTitle());
task.getGroups().addAll(updatedAssignment.getGroups());
task.setStarts(updatedAssignment.getOpenDate());

if (!updatedAssingment.getHideDueDate()) {
task.setDue(updatedAssingment.getDueDate());
if (!updatedAssignment.getHideDueDate()) {
task.setDue(updatedAssignment.getDueDate());
}

if (!updatedAssingment.getDraft()) {
if (!updatedAssignment.getDraft()) {
taskService.createTask(task, allowAddSubmissionUsers(reference)
.stream().map(User::getId).collect(Collectors.toSet()),
Priorities.HIGH);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public class Task implements PersistableEntity<Long> {

@Column(name = "STARTS")
@Type(type = "org.hibernate.type.InstantType")
private Instant starts;
private Instant starts = Instant.now();

@Column(name = "DUE")
@Type(type = "org.hibernate.type.InstantType")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public interface TaskService {
Task createTask(Task task, Set<String> users, Integer priority);
Task saveTask(Task task);
Optional<Task> getTask(String reference);
List<UserTaskAdapterBean> getAllTasksForCurrentUser();
List<UserTaskAdapterBean> getCurrentTasksForCurrentUser();
List<UserTaskAdapterBean> getAllTasksForCurrentUserOnSite(String siteId);
List<UserTask> getCurrentUserTasks(String userId);
void removeTask(Task task);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public class UserTask implements PersistableEntity<Long> {
@Column(name = "USER_ID", length = 99, nullable = false)
private String userId;

@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "TASK_ID", nullable = false)
private Task task;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
public interface UserTaskRepository extends SpringCrudRepository<UserTask, Long> {

List<UserTask> findByTaskIdAndUserIdIn(Long taskId, List<String> userIds);
List<UserTask> findByUserId(String userId);
List<UserTask> findByUserIdAndStartsAfter(String userId, Instant from);
List<UserTask> findByUserIdAndSiteId(String userId, String siteId);
List<UserTask> findByUserIdAndTask_StartsLessThanEqual(String userId, Instant instant);
List<UserTask> findByTask_SiteId(String siteId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ public UserTask createSingleUserTask(UserTaskAdapterBean transfer) {
BeanUtils.copyProperties(transfer, task);
task.setReference("/user/" + userId);
task.setSystem(false);
task.setStarts(Instant.now());
task = taskRepository.save(task);

UserTask userTask = new UserTask();
Expand Down Expand Up @@ -236,11 +237,11 @@ private void completeTaskForUsers(Long taskId, List<String> userIds) {
});
}

public List<UserTaskAdapterBean> getAllTasksForCurrentUser() {
public List<UserTaskAdapterBean> getCurrentTasksForCurrentUser() {

String userId = sessionManager.getCurrentSessionUserId();

return userTaskRepository.findByUserId(userId)
return userTaskRepository.findByUserIdAndStartsAfter(userId, Instant.now())
.stream()
.map(ut -> {
UserTaskAdapterBean bean = new UserTaskAdapterBean();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,16 @@ public List<UserTask> findByTaskIdAndUserIdIn(Long taskId, List<String> userIds)
.add(Restrictions.in("userId", userIds)).list();
}

public List<UserTask> findByUserId(String userId) {
public List<UserTask> findByUserIdAndStartsAfter(String userId, Instant from) {

Session session = sessionFactory.getCurrentSession();

return (List<UserTask>) session.createCriteria(UserTask.class)
.add(Restrictions.eq("userId", userId)).list();
CriteriaBuilder cb = session.getCriteriaBuilder();
CriteriaQuery<UserTask> query = cb.createQuery(UserTask.class);
Root<UserTask> userTask = query.from(UserTask.class);
query.where(cb.equal(userTask.get("userId"), userId), cb.lessThanOrEqualTo(userTask.get("task").get("starts"), from));

return session.createQuery(query).list();
}

public List<UserTask> findByUserIdAndSiteId(String userId, String siteId) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,9 @@ public void testCanCreateSingleUserTask() {
taskService.createSingleUserTask(bean);

Optional<UserTaskAdapterBean> optionalUserTask
= taskService.getAllTasksForCurrentUser().stream().findFirst();
= taskService.getCurrentTasksForCurrentUser().stream().findFirst();

Assert.isTrue(optionalUserTask.isPresent(), "getAllTasksForCurrentUser did not return our new task");
Assert.isTrue(optionalUserTask.isPresent(), "getCurrentTasksForCurrentUser did not return our new task");

UserTaskAdapterBean userTask = optionalUserTask.get();

Expand All @@ -110,7 +110,7 @@ public void testCanCreateTask() {
assertTrue("The saved task should now have an id", task.getId() != null);

switchToStudent();
assertTrue("getAllTasksForCurrentUser did not return our new task", taskService.getAllTasksForCurrentUser().stream().findFirst().isPresent());
assertTrue("getCurrentTasksForCurrentUser did not return our new task", taskService.getCurrentTasksForCurrentUser().stream().findFirst().isPresent());
}

@Test
Expand All @@ -120,7 +120,7 @@ public void testCanSaveUserTask() {

createTask(reference);

List<UserTaskAdapterBean> userTasks = taskService.getAllTasksForCurrentUser();
List<UserTaskAdapterBean> userTasks = taskService.getCurrentTasksForCurrentUser();
assertTrue("There should be one user task after creating", userTasks.size() == 1);
UserTaskAdapterBean userTask = userTasks.get(0);

Expand All @@ -133,7 +133,7 @@ public void testCanSaveUserTask() {

taskService.saveUserTask(userTask);

userTasks = taskService.getAllTasksForCurrentUser();
userTasks = taskService.getCurrentTasksForCurrentUser();
assertTrue("There should be one user task after updating", userTasks.size() == 1);

userTask = userTasks.get(0);
Expand All @@ -151,12 +151,12 @@ public void testCanRemoveUserTask() {

createTask(reference);

List<UserTaskAdapterBean> userTasks = taskService.getAllTasksForCurrentUser();
List<UserTaskAdapterBean> userTasks = taskService.getCurrentTasksForCurrentUser();
assertTrue("There should be one user task after creating", userTasks.size() == 1);
UserTaskAdapterBean userTask = userTasks.get(0);
taskService.removeUserTask(userTask.getUserTaskId());

userTasks = taskService.getAllTasksForCurrentUser();
userTasks = taskService.getCurrentTasksForCurrentUser();
assertTrue("There should be zero user task after removing", userTasks.size() == 0);
}

Expand All @@ -168,7 +168,7 @@ public void testCanDeleteTask() {
Assert.isTrue(task.getId() != null, "The saved task should now have an id");
taskService.removeTask(task);

List<UserTaskAdapterBean> userTasks = taskService.getAllTasksForCurrentUser();
List<UserTaskAdapterBean> userTasks = taskService.getCurrentTasksForCurrentUser();
Assert.isTrue(userTasks.size() == 0, "Deleting a Task should delete the user tasks");
}

Expand All @@ -178,15 +178,15 @@ public void testCanSoftDeleteTask() {
String reference = "/a/xyz";
Task task = createTask(reference);

List<UserTaskAdapterBean> userTasks = taskService.getAllTasksForCurrentUser();
List<UserTaskAdapterBean> userTasks = taskService.getCurrentTasksForCurrentUser();
assertTrue("There should only be one task", userTasks.size() == 1);

UserTaskAdapterBean userTask = userTasks.get(0);

userTask.setSoftDeleted(true);
taskService.saveUserTask(userTask);

userTasks = taskService.getAllTasksForCurrentUser();
userTasks = taskService.getCurrentTasksForCurrentUser();
Assert.isTrue(userTasks.size() == 1, "There should only be one task");

userTask = userTasks.get(0);
Expand All @@ -202,7 +202,7 @@ public void testCanDeleteTaskByReference() {
Assert.isTrue(task.getId() != null, "The saved task should now have an id");
taskService.removeTaskByReference(reference);

List<UserTaskAdapterBean> userTasks = taskService.getAllTasksForCurrentUser();
List<UserTaskAdapterBean> userTasks = taskService.getCurrentTasksForCurrentUser();
Assert.isTrue(userTasks.size() == 0, "Deleting a Task by reference should delete the user tasks");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ public Map<String, Object> getTasks() throws UserNotDefinedException {
Map<String, Object> data = new HashMap<>();

// Flatten the UserTask objects into a more compact form and return.
data.put("tasks", taskService.getAllTasksForCurrentUser()
data.put("tasks", taskService.getCurrentTasksForCurrentUser()
.stream().map(bean -> {
try {
updateUserTaskAdapterBean(bean);
Expand Down
Loading