Class OrdineService
java.lang.Object
it.unicam.cs.ids2425.FilieraAgricola.service.OrdineService
Service per la gestione degli ordini d'acquisto.
Cosa fa:
Si occupa di tradurre un carrello (checkout) in un ordine effettivo salvato
nel database.
Gestisce il recupero dei dati, la creazione delle righe d'ordine
(OrderLine)
e il calcolo del totale utilizzando il PricingStrategyFactory.
Workflow:
- Riceve un DTO di checkout contenente liste di ID (item e pacchetti) e quantità.
- Recupera le entità corrispondenti dal database.
- Crea per ciascuna entrata una
OrderLine, "congelando" il prezzo attuale. - Calcola il totale progressivo delegando alla Factory dei prezzi.
- Salva l'ordine completo con tutte le sue righe.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaggiornaStato(Long idOrdine, String nuovoStato) Modifica lo stato di avanzamento di un ordine (es.creaOrdineDaCheckout(Long utenteId, CarrelloCheckoutDTO request) Trasforma i dati provenienti dal carrello (frontend) in un Ordine persistente.Recupera lo storico degli ordini effettuati da un utente specifico.
-
Constructor Details
-
OrdineService
public OrdineService()
-
-
Method Details
-
creaOrdineDaCheckout
@Transactional public OrdineResponse creaOrdineDaCheckout(Long utenteId, CarrelloCheckoutDTO request) Trasforma i dati provenienti dal carrello (frontend) in un Ordine persistente.Cosa succede: Il metodo itera separatamente sugli articoli singoli e sui pacchetti presenti nel DTO. Per ogni elemento:
- Recupera l'entità dal DB.
- Istanzia una
OrderLineassociandola all'ordine in creazione. - Imposta il prezzo d'acquisto corrente (snapshot storico).
- Usa
PricingStrategyFactoryper calcolare il subtotale della riga in base al tipo (Item o Pacchetto).
- Parameters:
utenteId- ID dell'acquirente che sta effettuando l'ordine.request- DTO contenente gli articoli e i pacchetti selezionati nel carrello.- Returns:
- DTO dell'ordine appena creato e salvato.
- Throws:
RuntimeException- Se l'utente, un articolo o un pacchetto non esistono.
-
getOrdiniByUtente
Recupera lo storico degli ordini effettuati da un utente specifico.- Parameters:
id- ID dell'acquirente.- Returns:
- Lista di ordini.
-
aggiornaStato
Modifica lo stato di avanzamento di un ordine (es. DA PAGATO a SPEDITO).- Parameters:
idOrdine- ID dell'ordine.nuovoStato- Stringa rappresentante il valore dell'enumStatoOrdine.- Throws:
RuntimeException- Se l'ordine non esiste o lo stato non è valido.
-