initial project setup
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
package com.labfusion.controller;
|
||||
|
||||
import com.labfusion.model.Dashboard;
|
||||
import com.labfusion.model.User;
|
||||
import com.labfusion.service.DashboardService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/dashboards")
|
||||
@CrossOrigin(origins = "*")
|
||||
public class DashboardController {
|
||||
|
||||
@Autowired
|
||||
private DashboardService dashboardService;
|
||||
|
||||
@GetMapping
|
||||
public ResponseEntity<List<Dashboard>> getDashboards(@AuthenticationPrincipal User user) {
|
||||
List<Dashboard> dashboards = dashboardService.getDashboardsByUser(user);
|
||||
return ResponseEntity.ok(dashboards);
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public ResponseEntity<Dashboard> getDashboard(@PathVariable Long id, @AuthenticationPrincipal User user) {
|
||||
Optional<Dashboard> dashboard = dashboardService.getDashboardById(id);
|
||||
if (dashboard.isPresent()) {
|
||||
// Check if user owns the dashboard
|
||||
if (dashboard.get().getUser().getId().equals(user.getId())) {
|
||||
return ResponseEntity.ok(dashboard.get());
|
||||
} else {
|
||||
return ResponseEntity.forbidden().build();
|
||||
}
|
||||
}
|
||||
return ResponseEntity.notFound().build();
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public ResponseEntity<Dashboard> createDashboard(@RequestBody Dashboard dashboard, @AuthenticationPrincipal User user) {
|
||||
dashboard.setUser(user);
|
||||
Dashboard savedDashboard = dashboardService.saveDashboard(dashboard);
|
||||
return ResponseEntity.ok(savedDashboard);
|
||||
}
|
||||
|
||||
@PutMapping("/{id}")
|
||||
public ResponseEntity<Dashboard> updateDashboard(@PathVariable Long id, @RequestBody Dashboard dashboard, @AuthenticationPrincipal User user) {
|
||||
try {
|
||||
Dashboard updatedDashboard = dashboardService.updateDashboard(id, dashboard);
|
||||
return ResponseEntity.ok(updatedDashboard);
|
||||
} catch (RuntimeException e) {
|
||||
return ResponseEntity.notFound().build();
|
||||
}
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public ResponseEntity<Void> deleteDashboard(@PathVariable Long id, @AuthenticationPrincipal User user) {
|
||||
Optional<Dashboard> dashboard = dashboardService.getDashboardById(id);
|
||||
if (dashboard.isPresent() && dashboard.get().getUser().getId().equals(user.getId())) {
|
||||
dashboardService.deleteDashboard(id);
|
||||
return ResponseEntity.ok().build();
|
||||
}
|
||||
return ResponseEntity.forbidden().build();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user