initial project setup

This commit is contained in:
glenn schrooyen
2025-09-11 22:08:12 +02:00
parent 8cc588dc92
commit 21e4972ab1
46 changed files with 2755 additions and 1 deletions

View File

@@ -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();
}
}