diff --git a/src/main/java/com/example/tampopotest/controller/ActivityController.java b/src/main/java/com/example/tampopotest/controller/ActivityController.java new file mode 100644 index 0000000..ae07029 --- /dev/null +++ b/src/main/java/com/example/tampopotest/controller/ActivityController.java @@ -0,0 +1,108 @@ +package com.example.tampopotest.controller; + +import com.example.tampopotest.entity.Activity; +import com.example.tampopotest.service.ActivityService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.time.LocalDateTime; +import java.util.List; + +@RestController +public class ActivityController { + + @Autowired + private ActivityService activityService; + + @GetMapping("/users/{user-id}/activities") + public ResponseEntity> getActivities(@PathVariable("user-id") String userId) { + try { + List activities = activityService.getActivitiesByUserId(userId); + return ResponseEntity.ok(activities); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); + } + } + + @PostMapping("/users/{user-id}/activities") + public ResponseEntity createActivity(@PathVariable("user-id") String userId, + @RequestParam("text") String text) { + try { + Activity activity = activityService.createActivity(userId, text); + return ResponseEntity.ok(activity); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.BAD_REQUEST).build(); + } + } + + @GetMapping("/users/{user-id}/activities/{activity-id}") + public ResponseEntity getActivity(@PathVariable("user-id") String userId, + @PathVariable("activity-id") Long activityId) { + try { + Activity activity = activityService.getActivityById(activityId); + return ResponseEntity.ok(activity); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).build(); + } + } + + @DeleteMapping("/users/{user-id}/activities/{activity-id}") + public ResponseEntity deleteActivity(@PathVariable("user-id") String userId, + @PathVariable("activity-id") Long activityId) { + try { + activityService.deleteActivity(activityId); + return ResponseEntity.ok().build(); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).build(); + } + } + + @GetMapping("/users/{user-id}/activities/{activity-id}/text") + public ResponseEntity getActivityText(@PathVariable("user-id") String userId, + @PathVariable("activity-id") Long activityId) { + try { + String text = activityService.getActivityText(activityId); + return ResponseEntity.ok(text); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).build(); + } + } + + @PutMapping("/users/{user-id}/activities/{activity-id}/text") + public ResponseEntity updateActivityText(@PathVariable("user-id") String userId, + @PathVariable("activity-id") Long activityId, + @RequestParam("new-text") String newText) { + try { + String text = activityService.updateActivityText(activityId, newText); + return ResponseEntity.ok(text); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).build(); + } + } + + @GetMapping("/users/{user-id}/activities/{activity-id}/updated-time") + public ResponseEntity getActivityUpdatedTime(@PathVariable("user-id") String userId, + @PathVariable("activity-id") Long activityId) { + try { + LocalDateTime time = activityService.getActivityUpdatedTime(activityId); + return ResponseEntity.ok(time); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).build(); + } + } + + @GetMapping("/users/{user-id}/activities/last-updated-time") + public ResponseEntity getLastUpdatedTime(@PathVariable("user-id") String userId) { + try { + LocalDateTime time = activityService.getLastUpdatedTime(userId); + if (time == null) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).build(); + } + return ResponseEntity.ok(time); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); + } + } +}