Class PacchettoController

java.lang.Object
it.unicam.cs.ids2425.FilieraAgricola.controller.PacchettoController

@RestController @RequestMapping("/api/pacchetti") public class PacchettoController extends Object
Controller REST per la gestione dei Pacchetti (bundle di prodotti).

Espone endpoint per:

  • Creazione e gestione (modifica/eliminazione) dei pacchetti da parte dei Distributori.
  • Consultazione del catalogo pacchetti (pubblico/autenticato).
  • Flusso di approvazione dei pacchetti riservato ai Curatori.
  • Constructor Details

    • PacchettoController

      public PacchettoController()
  • Method Details

    • creaPacchetto

      @PreAuthorize("hasRole(\'DISTRIBUTORE\')") @PostMapping public org.springframework.http.ResponseEntity<PacchettoResponse> creaPacchetto(@RequestBody PacchettoRequest request)
      Crea un nuovo pacchetto.

      Accessibile solo dagli utenti con ruolo DISTRIBUTORE. Il pacchetto nasce in stato "da approvare".

      Parameters:
      request - Dati del pacchetto da creare.
      Returns:
      Il pacchetto creato.
    • getAllPacchetti

      @PreAuthorize("isAuthenticated()") @GetMapping public org.springframework.http.ResponseEntity<List<PacchettoResponse>> getAllPacchetti()
      Restituisce la lista di tutti i pacchetti approvati.

      Accessibile a qualsiasi utente autenticato.

      Returns:
      Lista di pacchetti visibili.
    • getByDistributore

      @PreAuthorize("hasRole(\'GESTORE\') or @customSecurityService.hasUserId(authentication, #id)") @GetMapping("/distributore/{id}") public List<PacchettoResponse> getByDistributore(@PathVariable Long id)
      Recupera i pacchetti creati da uno specifico distributore.

      Permesso a:

      • Gestori (admin).
      • L'utente stesso (se l'ID corrisponde a quello nei token).
      Parameters:
      id - ID del distributore.
      Returns:
      Lista dei suoi pacchetti.
    • pacchettiDaApprovare

      @PreAuthorize("hasRole(\'CURATORE\')") @GetMapping("/da-approvare") public List<PacchettoResponse> pacchettiDaApprovare()
      Restituisce la lista dei pacchetti in attesa di approvazione.

      Accessibile solo ai Curatori.

      Returns:
      Pacchetti in stato IN_REVISIONE.
    • approvaPacchetto

      @PreAuthorize("hasRole(\'CURATORE\')") @PostMapping("/{id}/approva") public void approvaPacchetto(@PathVariable Long id)
      Approva un pacchetto, rendendolo pubblico.

      Accessibile solo ai Curatori.

      Parameters:
      id - ID del pacchetto da approvare.
    • aggiornaPacchetto

      @PreAuthorize("hasRole(\'DISTRIBUTORE\')") @PutMapping("/{id}") public PacchettoResponse aggiornaPacchetto(@PathVariable Long id, @RequestBody PacchettoRequest request)
      Aggiorna un pacchetto esistente.

      Accessibile solo ai Distributori (verrà controllata la proprietà nel service). Modificare un pacchetto ne richiede una nuova approvazione.

      Parameters:
      id - ID del pacchetto.
      request - Nuovi dati.
      Returns:
      Il pacchetto aggiornato.
    • eliminaPacchetto

      @PreAuthorize("hasRole(\'DISTRIBUTORE\')") @DeleteMapping("/{id}") public org.springframework.http.ResponseEntity<String> eliminaPacchetto(@PathVariable Long id)
      Elimina un pacchetto.

      Accessibile solo ai Distributori (proprietari).

      Parameters:
      id - ID del pacchetto da eliminare.
      Returns:
      Conferma eliminazione.