diff --git a/todolist/src/main/java/com/scaler/todolist/DTO/BaseResponseDTO.java b/todolist/src/main/java/com/scaler/todolist/DTO/BaseResponseDTO.java new file mode 100644 index 0000000..ee39859 --- /dev/null +++ b/todolist/src/main/java/com/scaler/todolist/DTO/BaseResponseDTO.java @@ -0,0 +1,11 @@ +package com.scaler.todolist.DTO; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class BaseResponseDTO { + private int status; + private String message; +} diff --git a/todolist/src/main/java/com/scaler/todolist/DTO/TaskResponseDTO.java b/todolist/src/main/java/com/scaler/todolist/DTO/TaskResponseDTO.java new file mode 100644 index 0000000..3aa6b14 --- /dev/null +++ b/todolist/src/main/java/com/scaler/todolist/DTO/TaskResponseDTO.java @@ -0,0 +1,11 @@ +package com.scaler.todolist.DTO; + +import com.scaler.todolist.models.Task; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class TaskResponseDTO extends BaseResponseDTO{ + private Task task; +} diff --git a/todolist/src/main/java/com/scaler/todolist/DTO/UpdateRequestDTO.java b/todolist/src/main/java/com/scaler/todolist/DTO/UpdateRequestDTO.java new file mode 100644 index 0000000..a157c68 --- /dev/null +++ b/todolist/src/main/java/com/scaler/todolist/DTO/UpdateRequestDTO.java @@ -0,0 +1,13 @@ +package com.scaler.todolist.DTO; + +import lombok.Getter; +import lombok.Setter; + +import java.time.LocalDate; + +@Getter +@Setter +public class UpdateRequestDTO { + private LocalDate due; + private Boolean done; +} diff --git a/todolist/src/main/java/com/scaler/todolist/controllers/TasksController.java b/todolist/src/main/java/com/scaler/todolist/controllers/TasksController.java index a39e36c..ecec24e 100644 --- a/todolist/src/main/java/com/scaler/todolist/controllers/TasksController.java +++ b/todolist/src/main/java/com/scaler/todolist/controllers/TasksController.java @@ -1,12 +1,15 @@ package com.scaler.todolist.controllers; +import com.scaler.todolist.DTO.TaskResponseDTO; +import com.scaler.todolist.DTO.UpdateRequestDTO; import com.scaler.todolist.models.Task; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.net.http.HttpResponse; import java.util.ArrayList; import java.util.List; +import java.util.Optional; @RequestMapping("/tasks") @RestController @@ -26,6 +29,61 @@ ResponseEntity addNewTask(@RequestBody Task task) { return ResponseEntity.status(201).body(taskToAdd); } + @GetMapping("/{id}") + ResponseEntity getTaskById(@PathVariable int id){ + // If Index out of Bounds, return Not found + if(taskList.size() <= id){ + TaskResponseDTO body = new TaskResponseDTO(); + body.setStatus(404); + body.setMessage("Task Not found"); + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(body); + } + Task task = taskList.get(id); + TaskResponseDTO body = new TaskResponseDTO(); + body.setStatus(200); + body.setMessage("Task updated."); + body.setTask(task); + return ResponseEntity.ok(body); + } + + @PatchMapping("/{id}") + ResponseEntity updateTaskById(@PathVariable int id, @RequestBody UpdateRequestDTO updateRequestDTO){ + // If Index out of Bounds, return Not found + if(taskList.size() <= id){ + TaskResponseDTO body = new TaskResponseDTO(); + body.setStatus(404); + body.setMessage("Task Not found"); + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(body); + } + Task task = taskList.get(id); + if(updateRequestDTO.getDone() != null)task.setDone(updateRequestDTO.getDone()); + if(updateRequestDTO.getDue() != null)task.setDue(updateRequestDTO.getDue()); + taskList.add(id,task); + + TaskResponseDTO body = new TaskResponseDTO(); + body.setStatus(200); + body.setMessage("Task updated."); + body.setTask(task); + return ResponseEntity.ok(body); + } + + @DeleteMapping("/{id}") + ResponseEntity updateTaskById(@PathVariable int id){ + // If Index out of Bounds, return Not found + if(taskList.size() <= id){ + TaskResponseDTO body = new TaskResponseDTO(); + body.setStatus(404); + body.setMessage("Task Not found"); + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(body); + } + Task task = taskList.remove(id); + + TaskResponseDTO body = new TaskResponseDTO(); + body.setStatus(204); + body.setMessage("Task deleted."); + return ResponseEntity.status(HttpStatus.NO_CONTENT).body(body); + } + /* * ASSIGNMENT: * 1. GET -> /tasks/3