Class OrdineController

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

@RestController @RequestMapping("/api/ordini") public class OrdineController extends Object
Controller REST per la gestione delle operazioni relative agli ordini.

Espone endpoint per:

  • Creare un ordine a partire da un carrello (Checkout).
  • Visualizzare lo storico ordini di un utente.
  • Aggiornare lo stato di un ordine (operazione gestionale).

Utilizza annotazioni @PreAuthorize per garantire l'accesso solo agli utenti autorizzati.

  • Constructor Details

    • OrdineController

      public OrdineController()
  • Method Details

    • creaOrdine

      @PostMapping("/checkout/{utenteId}") @PreAuthorize("hasRole(\'ACQUIRENTE\') and #utenteId == authentication.principal.id") public org.springframework.http.ResponseEntity<OrdineResponse> creaOrdine(@PathVariable Long utenteId, @RequestBody CarrelloCheckoutDTO request)
      Endpoint per il processo di Checkout.

      Riceve il contenuto del carrello e avvia la creazione dell'ordine. L'accesso รจ consentito solo all'acquirente proprietario del carrello (verifica su utenteId).

      Parameters:
      utenteId - ID dell'utente che effettua l'acquisto.
      request - DTO contenente i dettagli degli articoli/pacchetti nel carrello.
      Returns:
      La risposta con i dettagli dell'ordine creato.
    • getOrdiniByUtente

      @GetMapping("/utente/{id}") @PreAuthorize("hasRole(\'ACQUIRENTE\') and #id == authentication.principal.id") public org.springframework.http.ResponseEntity<List<OrdineResponse>> getOrdiniByUtente(@PathVariable Long id)
      Recupera la lista degli ordini effettuati da uno specifico utente.

      Accessibile solo dall'utente stesso.

      Parameters:
      id - ID dell'acquirente.
      Returns:
      Lista di DTO OrdineResponse.
    • aggiornaStatoOrdine

      @PostMapping("/{id}/stato") @PreAuthorize("hasRole(\'GESTORE\') or hasAnyRole(\'PRODUTTORE\', \'TRASFORMATORE\', \'DISTRIBUTORE\')") public org.springframework.http.ResponseEntity<String> aggiornaStatoOrdine(@PathVariable Long id, @RequestParam String stato)
      Aggiorna lo stato di avanzamento di un ordine (es. da PAGATO a SPEDITO).

      Operazione riservata ai ruoli gestionali o ai venditori coinvolti nella filiera (Gestore, Produttore, Trasformatore, Distributore).

      Parameters:
      id - ID dell'ordine da aggiornare.
      stato - Nuovo stato da assegnare (stringa corrispondente all'enum).
      Returns:
      Messaggio di conferma.