aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/encora/ToDosRepository.java
diff options
context:
space:
mode:
authorAdrián Oliva <adrian.oliva@cimat.mx>2023-05-26 13:34:05 -0600
committerAdrián Oliva <adrian.oliva@cimat.mx>2023-05-26 13:34:05 -0600
commit4d0e671eb82c4ff6941905744dd10b856e16e725 (patch)
treefea476973c7980bd8ddb7bce7d3e2735d4d9d29e /src/main/java/com/encora/ToDosRepository.java
parent0dd1b42bf1008ed5cbc0f0f0afaa143248e75dd2 (diff)
downloadToDo-App-BE-4d0e671eb82c4ff6941905744dd10b856e16e725.tar.gz
ToDo-App-BE-4d0e671eb82c4ff6941905744dd10b856e16e725.zip
Added a GET request with filters.
Path is "/todos/filter". You have to pass as a body the arguments "name" for searching inside the to do's name, "priority" for specifying a priority level (or "All") and/or "done" for specifying if the to do is "Done" or "Undone" (or "All").
Diffstat (limited to 'src/main/java/com/encora/ToDosRepository.java')
-rw-r--r--src/main/java/com/encora/ToDosRepository.java37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/main/java/com/encora/ToDosRepository.java b/src/main/java/com/encora/ToDosRepository.java
index e7e939e..ff9d9a6 100644
--- a/src/main/java/com/encora/ToDosRepository.java
+++ b/src/main/java/com/encora/ToDosRepository.java
@@ -13,6 +13,7 @@ import org.springframework.data.repository.query.FluentQuery;
import java.util.*;
import java.util.function.Function;
+import java.util.stream.Collectors;
public class ToDosRepository implements JpaRepository<ToDos, Integer> {
Integer lastId;
@@ -107,6 +108,42 @@ public class ToDosRepository implements JpaRepository<ToDos, Integer> {
}
}
+ // Get to dos list filtered.
+ public List<ToDos> findAllWithFilter(String name, String priority, String done) throws Exception {
+ List<ToDos> filtered = new ArrayList<>(this.todos);
+
+ if (name != null && !name.equals("")) {
+ filtered = filtered.stream()
+ .filter(todo -> todo.getText().contains(name))
+ .collect(Collectors.toList());
+ }
+ if (priority != null && !priority.equalsIgnoreCase("all")) {
+ filtered = filtered.stream()
+ .filter(todo -> Objects.equals(String.valueOf(todo.getPriority()), priority))
+ .collect(Collectors.toList());
+ }
+ if (done != null && !done.equalsIgnoreCase("all")) {
+ switch (done) {
+ case "Done":
+ filtered = filtered.stream()
+ .filter(ToDos::isDone)
+ .collect(Collectors.toList());
+ break;
+
+ case "Undone":
+ filtered = filtered.stream()
+ .filter(todo -> !todo.isDone())
+ .collect(Collectors.toList());
+ break;
+
+ default:
+ throw new Exception("Filtering not supported on 'done'.");
+ }
+ }
+
+ return filtered;
+ }
+
private Comparator<ToDos> getToDoComparator(Sort sort) throws Exception {
// Personal function. Creates a `Comparator` based on the `sort`
// parameter. This is for us to successfully sort our List without the