SILVESTRO RICCIARDI
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    1
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    --- title: "Problem Statement" --- # Attori - Gli utenti possono assumere più ruoli - attore utente come utente generico del sistema che può agire sia come conducente sia come passeggero, a seconda delle necessità. questa flessibilità migliora l'efficienza e la convenienza del sistema. ```plantuml @startuml rectangle ViaggiamoInsieme actor Utente actor Conducente actor Passeggero actor Impiegato actor GestoreUtenti actor GestoreCorse ViaggiamoInsieme <-left- Utente ViaggiamoInsieme <-right- Impiegato Utente <|-- Conducente Utente <|-- Passeggero Impiegato <|-- GestoreUtenti Impiegato <|-- GestoreCorse @enduml ``` # Scenari ## Remind - passeggero cerca, trova, e prenota corsa, (inviare notifica a conducente) (registrazione o login) - conducente pubblica una corsa (registrazione o login) - passeggero annulla prenotazione (utente visualizza le sue corse)- - conducente annulla corsa (utente visualizza le sue corse) (passaeggero riceve notifica) - conducente arriva a destinazione . . . (coducente indica quando corsa terminata) - passeggero accede alla home, vede le sue corse a cui si è prenotato, vede partecipanti alla corsa, e puo vedere il loro profilo - conducente accede alla home, vede le sue corse, vede partecipanti alla corsa, e puo vedere il loro profilo - passeggero vede che è stata annullata corsa (deve accedere a home e in norifiche) - conducente vede che è stata annullata prenotazione (deve accedere a home e in norifiche) ## Scenari per il Passeggero Marco ha la necessità improvvisa di recarsi da Milano a Torino per un importante appuntamento il giorno successivo, si ritrova a cercare un passaggio affidabile. Marco procede sulla piattaforma "ViaggiamoInsieme", seleziona l'opzione di ricerca corse e inserisce i dettagli del suo viaggio: partenza da Milano, destinazione Torino, e la data per il giorno successivo. Il sistema elabora la sua ricerca e gli mostra un elenco di corse disponibili. La prima opzione è una corsa offerta da Laura, con partenza alle ore 09:00 e arrivo alle ore 12:00. Il costo del viaggio è di 20 euro e sono disponibili due posti. La seconda opzione è presentata da Giorgio, partendo alle 08:30 e arrivando alle 11:30. Il viaggio costa 25 euro ed è disponibile un solo posto. La terza e ultima corsa mostrata è offerta da Silvia, che partirà alle 10:00 e arriverà alle 13:00. Il prezzo è di 18 euro e sono disponibili due posti. Tra le varie opzioni, la prima corsa, quella offerta da Laura attira la sua attenzione, in quanto soddisfa perfettamente i suoi requisiti di orario e costo. Marco clicca sulla corsa scelta, visualizzando i dettagli aggiuntivi: passeggeri già prenotati alla corsa e eventuali note, un uomo di nome Luca Bianchi e una donna di nome Martina Verdi. Le note di Laura specificano "sosta durante il tragitto di 15 minuti". Marco allora tenta di procede con la prenotazione di questa corsa, ma gli viene mostrato che per farlo è necessario che esso sia autenticato. Poiché è la prima volta che utilizza la piattaforma, inizia il processo di registrazione. Viene mostrato un modulo da compilare. Inizia inserendo il suo nome "Marco" nel campo del nome e "Rossi" nel campo del cognome. Successivamente, inserisce la sua data di nascita "15/03/1985" nel campo dedicato. Prosegue compilando il campo del numero di telefono, dove digita "3356789012". Il passo successivo richiede di caricare un documento di identità. Marco utilizza una immagine della carta di identità che ha sul suo dispositivo, "CI_Marco_Rossi.jpg", e la carica nel modulo. Dopo aver caricato il documento, Marco procede con l'inserimento dell'indirizzo email, `marco_milano@viaggio.com` nel campo dell'email. Infine, arriva al campo della password. Qui, Marco crea una password "MilanoTorino2024" e la inserisce nel campo corrispondente. Dopo aver inserito tutti i dati richiesti, Marco esamina il modulo per assicurarsi che tutto sia corretto. Poi clicca sul pulsante per completare la sua registrazione. Dopo due ore riceve una notifica via email che il suo account è stato verificato, allora accede alla piattaforma, procede con l'autenticazione accedendo alla sezione dedicata e inserisce le sue credenziali email `marco_milano@viaggio.com` e password "MilanoTorino2024". Marco è ora autenticato e procede alla prenotazione di questa corsa cliccando sul pulsante prenota. Una notifica viene inviata immediatamente a Laura, informandola della nuova prenotazione di Marco. Laura, riceve la notifica dalla piattaforma "Il passeggero Marco Rossi si è prenotato alla tua corsa". --- Maria, avendo precedentemente prenotato un passaggio da Roma a Napoli tramite il sistema "ViaggiamoInsieme", si ritrova a dover cambiare i suoi piani in modo inaspettato. Decide quindi di annullare la sua prenotazione. Dopo aver preso questa decisione, Maria accede alla piattaforma "ViaggiamoInsieme" autenticandosi: inserisce le sue credenziali, la sua email `maria_roma@viaggio.com` e la password `RomaNapoli123`. Una volta all'interno del sistema, naviga verso la sezione delle corse prenotate, dove trova elencate tutte le sue prenotazioni. Tra queste, individua la prenotazione per il suo viaggio da Roma a Napoli. Clicca sulla prenotazione e, nella pagina successiva, clicca sul pulsante contrassegnato con "Cancella". Il sistema "mostra una finestra di dialogo che chiede a Maria di confermare l'annullamento della prenotazione. Maria legge attentamente il messaggio e poi conferma la sua scelta. Il sistema elabora la sua richiesta e annulla la prenotazione. Viene inviata una notifica al conducente del viaggio, Luca Bianchi, informandolo dell'accaduto: "Maria Bianchi ha annullato la prenotazione per la tua corsa". --- Giuseppe, utente del sistema di car sharing "ViaggiamoInsieme", ha recentemente prenotato un viaggio verso Firenze. Dopo aver prenotato il passaggio, decide di approfondire i dettagli del suo viaggio. Accede a "ViaggiamoInsieme" inserendo le sue credenziali: l'email `giuseppe_fiorenze@viaggio.com` e la password `PassFiorenze123`. Una volta nella homepage, si orienta immediatamente verso la sezione "I Miei Viaggi" per visualizzare le sue corse prenotate. Nell'elenco delle corse, seleziona quella per Firenze, programmata per partire il giorno seguente. Cliccando sulla prenotazione, viene reindirizzato a una pagina che mostra tutti i dettagli della corsa: l'orario di partenza fissato per le 08:00 del mattino e il luogo di partenza, Firenze. Nella stessa pagina, Giuseppe nota un elenco dei partecipanti alla corsa, che include nomi di altri passeggeri e del conducente. Curioso di sapere chi lo accompagnerà nel viaggio, clicca su un nome tra i tre mostrati: Alessandro Rossi. Viene mostrata la pagina dell'utente con la data di nascita, il 25 dicembre 1940 e una breve descrizione delle corse da lui pubblicate, due corse, una da Salerno a Milano e un'altra da Salerno a Roma. --- Carlo, un conducente abituale del sistema di car sharing "ViaggiamoInsieme", aveva pianificato un viaggio da Bologna a Venezia. Tuttavia, si imbatte in un imprevisto: il suo veicolo, un affidabile Fiat Ducato, presenta un guasto improvviso. Consapevole dell'impossibilità di effettuare il viaggio, Carlo decide di procedere con l'annullamento. Accede e si autentica su "ViaggiamoInsieme" utilizzando la sua email `carlo_bologna@viaggio.com` e la password `BoloVene2024`. Una volta nella sua area riservata, naviga nella sezione delle corse pianificate. Qui, Carlo trova l'elenco delle sue corse future e seleziona quella programmata per Bologna-Venezia. Nella pagina della corsa, individua il pulsante "Cancella" e clicca su di esso. Una finestra pop-up chiede a Carlo di confermare l'annullamento. Carlo, consapevole delle conseguenze, clicca su "Conferma". Giulia e Marco, due passeggeri che avevano prenotato posti per questa corsa, ricevono una notifica sulla piattaforma. La notifica include un messaggio di Carlo che spiega: "Carlo Verdi ha annullato la corsa a cui eri prenotato: Sono spiacente di informarvi che a causa di un imprevisto guasto al mio veicolo, sono costretto ad annullare il viaggio da Bologna a Venezia previsto per domani. Mi scuso per l'inconveniente." --- . ## Scenari per il Conducente ### Pubblicazione di una corsa Marco, un conducente registrato al sito "ViaggiamoInsieme", ha deciso di pubblicare una corsa da Milano a Roma per condividere il viaggio in auto con altri utenti. Marco naviga sul web e apre la pagina "ViaggiamoInsieme", effettua il login e accede al suo account personale. Nella schermata principale, seleziona l'apposita opzione "Pubblica una corsa". Una volta aperta la pagina apposita per la pubblicazione di una corsa Marco inserisce i dettagli della corsa: partenza da Milano, destionazione Roma, data di partenza 05/12/2023, orario di partenza 17:18, Marco inserisce poi il tempo stimato per effetturare la corsa, 5 ore e 30 minuti. Marco ha 3 posti disponibili e decide come importo da pagare per prenotare il posto la cifra di 30€. Marco non ama particolarmente gli animali, di conseguenza specifica nelle note del viaggio che non sono ammessi animali a bordo. Una volta inseriti tutti i dati richiesti, Marco revisiona i dati e decide di pubblicare la sua corsa, quando clicca sul tasto 'Pubblica', il sistema ricorda a Marco attraverso una finestra di dialogo che una volta pubblicato, i dati della corsa non potrenno più essere modificati. Marco è sicuro dei dati inseriti e clicca il tasto 'Pubblica la corsa' presente nella finestra di dialogo. Il sistema riceve le informazioni inserite da Marco e rende la corsa visibile per gli utenti che cercano una corsa da Milano a Roma. Il sistema provvede inoltre ad aggiungere la corsa nella sezione _le mi corse_ di Marco con stato _pianificato_. ### Annullamento di una Corsa Giulia, una conducente registrata su "ViaggiamoInsieme", ha pianificato di guidare da Torino a Bologna per condividere il viaggio con altri utenti. Dopo aver pubblicato i dettagli della sua corsa. Giulia riceve diverse prenotazioni dagli utenti interessati. Tuttavia, a causa di circostanze impreviste come un guasto meccanico al suo veicolo, Giulia si trova nell'impossibilità di effettuare il viaggio pianificato. Decide quindi di annullare la corsa tramite la piattaforma "ViaggiamoInsieme". Accede al suo account, nella schermata principale, clicca su _le mie corse_, seleziona la corsa da Torino a Bologna e trova l'opzione di annullamento della corsa. Una volta confermato l'annullamento, il sistema invia notifiche immediate ai passeggeri che hanno prenotato i posti sulla corsa, informandoli dell'annullamento. Il sistema rimuoverà inoltre la corsa dalla sezione _le mie corse_ di Giulia. ### Conclusione della corsa Roberto, un conducente registrato su "ViaggiamoInsieme", ha offerto un viaggio da Verona a Trento per condividere il tragitto con altri utenti. Dopo aver pianificato la corsa e pubblicato i dettagli, ha ricevuto prenotazioni dagli utenti interessati. All'orario prestabilito, Roberto parte da Verona con i passeggeri a bordo e raggiunge senza intoppi la destinazione a Trento. Una volta arrivato a destinazione, Roberto segnala sul sistema che la corsa è terminata. Per fare ciò, accede al suo account su "ViaggiamoInsieme", nella schermata home, clicca sull'opzione _le mie corse_ e una volta visualizzata la pagina con le corse, seleziona la corsa da Verona a Trento e trova l'opzione per segnalare la conclusione della corsa. La piattaforma gli chiede di confermare la conclusione. Roberto conferma la conclusione della corsa, indicando che il viaggio è stato completato con successo e che tutti i passeggeri sono stati consegnati in sicurezza a destinazione. Inoltre, la piattaforma registra il completamento della corsa nel profilo di Roberto, impostando lo stato della corsa da _In corso_ a _Completata_. ### Gestione corse pubblicate Carla è una conducente registrata su "ViaggiamoInsieme" e ha pubblicato diverse corse offerte sulla piattaforma. Una volta effettuato l'accesso al suo account e giunta alla home del sito 'ViaggiamoInsieme', clicca sull'opzione _le mie corse_ e accede alla pagina di visualizzazione delle sue corse dove decide di controllare lo stato delle corse che ha offerto. Carla visualizza un elenco delle sue offerte attive e passate. Seleziona una delle corse attive, ad esempio il viaggio da Milano a Torino, per controllare lo stato delle prenotazioni. Carla clicca sulla corsa e il sistema le fa visualizzare una pagina contenente tutti i dati relativi alla corsa che lei stesso ha inserito quando l'ha pubblicata. La piattaforma inoltre le mostra un elenco dei passeggeri che si sono prenotati per questa corsa, indicando i loro profili utente. Carla decide di accedere ai profili dei passeggeri, cliccando sul loro nome, per conoscere meglio chi viaggerà con lei. Esaminando i profili dei passeggeri, Carla vede informazioni quali il nome, la data di nascita e le corse pubblicate. ### Ricezione notifica annullata prenotazione - Conducente Daniele è un conducente registrato alla piattaforma di carpooling "Viaggiamo Insieme". Un giorno, dopo aver effettuato il login alla sua area riservata, nota una nuova notifica in entrata. Decidendo di visualizzarne il contenuto, scopre che Filippo, un passeggero registrato, a causa di un imprevisto ha annullato la sua prenotazione per la corsa da Milano a Torino che Daniele aveva pubblicato. Daniele dopo essere venuto a conoscenza della notizia,trovandosi già sulla piattaforma, decide di visualizzare i dati aggiornati della sua corsa, come posti disponibili, numero di prenotazioni effettuate. ## Scenari gestore utenti ### Verifica utente - gestore utente Simone ha intenzione di effettuare una corsa da Roma a Milano. Dopo una ricerca accurata, opta per la piattaforma "ViaggiamoInsieme" per trovare la corsa perfetta che soddisfi le sue esigenze. Prima di poter prenotare la sua prima corsa, Simone decide di registrarsi sulla piattaforma inserendo nome, cognome, data di nascita, telefono, e-mail e un documento, e resta in attesa della convalida del suo profilo. Filippo, gestore utente, dopo aver effettuato il login alla sua area riservata apre la richiesta di registrazione di Simone e con attenzione esamina ogni dettaglio fornito da Simone per garantire la correttezza delle informazioni. Fortunatamente, Filippo constata che tutti i dati forniti da Simone sono accurati e rispondono ai criteri di registrazione richiesti dalla piattaforma e procede con la convalida del profilo, consentendogli così di accedere pienamente alle funzionalità della piattaforma e di prenotare la sua corsa da Roma a Milano. Nel caso in cui i dati forniti da Simone in fase di registrazione non rispettino i criteri di registrazione richiesti dalla piattaforma Filippo rifiuta la richiesta, e Simone ritenta la registrazione inserendo dati validi. ## Scenari gestore delle corse ### Convalida corsa - gestore corse Marta un nuovo utente della piattaforma di carpooling "ViaggiamoInsieme" decide di pubblicare una nuova corsa da Roma a Milano e dare la possibilità ad altri di condividere l'esperienza di viaggio. Filippo, accedendo alla home della sua area riservata nota che è presente una nuova corsa Roma-Milano nella sezione 'corse in corso', e in quanto gestore delle corse, decide di visualizzarne i dettagli come: conducente, data della corsa, orario di partenza, orario di arrivo, indirizzo di partenza e arrivo, numero di posti prenotati, numero di posti disponibili,prezzo, ed eventuali note inserite dal conducente, per verificare che essi rispettino le linee guida prefissate. Filippo dopo essersi accertato che i dettagli della corsa sono corretti, lascia la corsa attiva, in caso contrario se sono presenti delle informazioni non valide Filippo cancella la corsa e il sistema procede con l'invio di una notica a tutti i passeggeri già prenotati. ### Report Statistico - gestore corse Filippo, gestore delle corse, incaricato dall'azienda di condurre un report statistico sull'attività di carpooling effettuata a Gennaio 2024, utilizza le funzionalità offerte dalla piattaforma per eseguire quest'analisi statistica. Filippo effettua l'accesso alla sua area riservata e selezionata la sezione 'statistiche', qui inserisce i dati richiesti dal sistema come il periodo di tempo da analizzare, nel suo caso 'Gennaio 2024'. Il sistema gli mostra quindi tutte le corse effettuate, il numero di corse annullate, il prezzo medio per corsa, i passeggeri medi per corsa, i chilometri percorsi in media, il guadagno medio dei conducenti. Esaminando le informazioni restituite dal sistema Filippo visualizza le dinamiche di utilizzo della piattaforma da parte degli utenti, scoprendo che la corsa da Napoli a Milano nel mese di Gennaio è stata la corsa più gettonata. - Gestore utenti - VerificaUtente - il gestore utente seleziona la funzionalità per visualizzare la lista degli utenti da verificare - il sistema fornisce al gestore la lista degli utenti da verificare - il gestore seleziona un singolo utente che è in attesa di verifica - il sistema fornisce al gestore i dati dell'utente da verificare: nome, congnome, data di nascita, indirizzo email e documento di riconoscimento - il gestore in base ai dati decide di approvare o rifiutare la richiesta (chiedere ai tutor) - il sistema salva le informazioni dell'account verificato - Gestore corse - VisualizzaCorseinCorso - il gestore delle corse seleziona la funzionalità per visualizzare le corse in corso - il sistema mostra la lista delle corse in corso e mostra dettagli: luogo di partenza, luogo di arrivo, data e ora di partenza, data e ora di arrivo, numero di posti prenotati, numero di posti disponibili, prezzo per il singolo posto - il gestore delle corse seleziona una corsa - il sistema mostra tutti i dettagli della corsa selezionata compreso: luogo di partenza, luogo di destinazione, conducente, data e ora di partenza, data e ora di arrivo stimato, posti prenotati e da chi, prezzo per un posto e eventuali note aggiunte dal conducente (forse include) (punto di estensione visualiizadettaglituente) - Utente - RegistraUtente - l'utente seleziona la funzione nuovo account - il sistema chiede all'utente di inserire i dati; nome, cognome, data di nascita, telefono, documento di riconoscimento (in formato immagine), email, password e la sua conferma - l'utente inserisci i dati richiesti - il sistema registra la richiesta di creazione di un nuovo account(e la lista degli utenti in attesa di verifica degli account viene aggiornata) - Autenticazione - l'utente seleziona la funzione accedi - il sistema chiede all'utente email e password - l'utente inserisci i dati richiesti - il sistema controlla le credenziali e il controlo ha esito positivo - il sistema reindirizza l'utente alla sua home page - Eccezione: Se al punto 3 il sistema rileva credenziali non corrette, il sistema mostrerà il messaggio di errore “username o password non corrette” e ripresenterà la schermata di autenticazione (UC 1.1Autenticazione Fallita) **Alternativa** se al punto 4 il sistema rileva credenziali non corrette, il sistema mostrerà il messagio di errore "email e password non corretti" e ripresenterà la schermata di autenticazione. - il sistema mostra il messaggio di errore “username o password non corrette” - il sistema ripresenta all’utente la schermata di autenticazione --- Passeggero: TrovaCorse - **Nome caso d'uso:** `TrovaCorse` - **Entry condition:** None - **Attori:** Iniziato da `Passeggero` - **Flusso degli eventi:** 1. Il passeggero seleziona l'opzione di ricerca corse. 2. Il sistema presenta un modulo di ricerca dove il passeggero inserisce i dettagli della corsa desiderata, come luogo di partenza, luogo di destinazione e il numero di posti necessari. 3. Il passeggero invia la richiesta di ricerca. 4. Il sistema elabora la richiesta e mostra un elenco di corse disponibili che corrispondono ai criteri forniti dal passeggero, includendo le informazioni: luogo di partenza e destinazione, data e ora di partenza, data e ora di arrivo, numero di posti prenotati e disponibili e prezzo. 5. Il passeggero seleziona una corsa che soddisfa le sue esigenze. 6. include `VisualizzaDettagliCorsa` - **Exit condition:** Il passeggero ha visualizzato i dettagli completi di una corsa specifica e può procedere alla prenotazione o continuare la ricerca. - **Nome caso d'uso:** `PrenotaCorsa` - **Entry condition:** Il passeggero ha effettuato il login. - **Attori:** Iniziato da `Passeggero` - **Flusso degli eventi:** 1. Il passeggero seleziona la funzionalità per prenotare una corsa. 2. Il sistema richiede al passeggero di confermare o annullare la prenotazione. - **Exit condition:** La prenotazione è stata confermata e può essere visualizzata dal passeggero. - **Nome caso d'uso:** `AnnullaPrenotazioneCorsa` - **Entry condition:** Il passeggero ha una corsa prenotata ed ha effettuato il login. - **Attori:** Iniziato da `Passeggero` - **Flusso degli eventi:** 1. Il passeggero seleziona la funzione per annullare la prenotazione di una corsa. 2. Il sistema aggiorna lo stato della corsa, contrassegnandola come annullata. 3. Il sistema notifica il conducente della corsa dell'avvenuto annulamento della prenotazione. - **Exit condition:** La prenotazione è stata annullata. - **Nome caso d'uso:** `VisualizzaCorsePrenotate` - **Entry condition:** Il passeggero ha effettuato l'accesso. - **Attori:** Iniziato da `Passeggero` - **Flusso degli eventi:** 1. Il passeggero seleziona la funzione per visualizzare le corse prenotate. 2. Il sistema mostra le corse prenotate dall'utente. 3. Il passeggero seleziona una corsa prenotata. 4. include `VisualizzaDettagliCorsa` - **Exit condition:** Il passeggero ha visualizzato i dettagli della corsa prenotata. - **Nome caso d'uso:** `VisualizzaDettagliUtente` - **Entry condition:** Il caso d'uso `VisualizzaDettagliUtente` estende `VisualizzaDettagliCorsa` nel caso in cui si decida di visualizzare i dettagli dell'utente. - **Attori:** Comunica con `Passeggero`, `Conducente` e `GestoreCorse` - **Flusso degli eventi:** 1. Il passeggero seleziona un utente per visualizzare i suoi dettagli. 2. Il sistema mostra i dettagli dell'utente. - **Exit condition:** Il passeggero ha visualizzato i dettagli dell'utente. - **Nome caso d'uso:** `accettaPagamentoConCarta` - **Entry condition:** Il caso d'uso estende `PrenotaCorsa` nel caso in cui il passeggero decida di procedere alla prenotazione della corsa. - **Attori:** Iniziato da `Passeggero`, Comunica con `AziendaGestionePagamento` - **Flusso degli eventi:** 1. Il sistema recupera i dettagli della carta di credito del passeggero. 2. Il sistema invia un messaggio a `AziendaGestionePagamento`, includendo: - Identificativo del titolare - Nome del titolare - Numero della carta - Data di scadenza della carta - Importo della transazione 3. `AziendaGestionePagamento` autorizza la transazione. 4. Il sistema notifica al passeggero l'esito del pagamento. 5. Il sistema aggiorna la prenotazione. - **Exit condition:** La transazione è stata autorizzata e la prenotazione è stata aggiornata. --- ### Conducente - **Nome caso d'uso:** `PubblicaCorsa` - **Entry condition:** Il conducente deve essere autenticato. - **Attori:** Iniziato da Conducente - **Flusso degli eventi:** 1. Il conducente accede alla funzione di pubblicazione corsa. 2. Il sistema presenta un modulo dove il conducente inserisce i dettagli della corsa, quali luogo di partenza, luogo di destinazione, data e ora di partenza, durata stimata del viaggio, numero di posti disponibili, prezzo per posto, e eventuali note rilevante. 3. Il conducente conferma e pubblica la corsa. 4. Il sistema elabora la pubblicazione. - **Exit condition:** La corsa è stata pubblicata con successo. - **Nome caso d'uso:** `AnnullaPubblicazioneCorsa` - **Entry condition:** Il conducente ha precedentemente pubblicato almeno una corsa con stato in corso e deve essere autenticato. - **Attori:** Iniziato da Conducente - **Flusso degli eventi:** 1. Il conducente sceglie una corsa già pubblicata dall'elenco delle sue corse. 2. Il conducente seleziona l'opzione per annullare la pubblicazione della corsa. 3. Il sistema richiede conferma dell'annullamento al conducente. 4. Dopo la conferma, il sistema procede con l'eliminazione della corsa. 5. Il sistema invia automaticamente una notifica ai passeggeri che avevano prenotato la corsa, informandoli dell'annullamento. - **Exit condition:** La corsa è stata annullata con successo e tutti i passeggeri interessati sono stati informati. - **Nome caso d'uso:** `AnnunciaTerminazioneCorsa` - **Entry condition:** Il coducente è autenticato. - **Attori:** Iniziato da Conducente - **Flusso degli eventi:** 1. Il conducente sceglie una corsa dall'elenco delle sue corse. 2. Il conducente seleziona l'opzione per annunciare la terminazione della corsa. 3. Il sistema richiede conferma al conducente e, una volta confermato, procede con l'aggiornamento dello stato della corsa a "terminata". 4. Il sistema invia una notifica ai passeggeri che hanno partecipato alla corsa, confermando la sua conclusione. - **Exit condition:** La terminazione della corsa è stata annunciata e registrata con successo nel sistema. - **Nome caso d'uso:** `VisualizzaCorsePubblicate` - **Entry condition:** Il conducente è autenticato. - **Attori:** Iniziato da Conducente - **Flusso degli eventi:** 1. Il conducente seleziona l'opzione per visualizzare le corse pubblicate. 2. Il sistema mostra un elenco delle corse pubblicate dal conducente. 3. Il conducente sceglie una corsa dall'elenco per visualizzarne i dettagli. 4. include `VisualizzaDettagliCorsa` - **Exit condition:** Il conducente ha visualizzato i dettagli di una o più corse che ha pubblicato. --- ### Gestore utenti - **Nome caso d'uso:** `VerificaUtente` - **Entry condition:** Il gestore utenti è autenticato - **Attori:** Iniziato da Gestore utenti - **Flusso degli eventi:** 1. Il gestore utenti seleziona l'opzione per visualizzare gli utenti in attesa di verifica. 2. Il sistema presenta l'elenco degli utenti che necessitano di verifica. 3. Il gestore sceglie un utente dall'elenco per esaminare i suoi dettagli. 4. Il sistema fornisce i dettagli dell'utente, inclusi nome, cognome, data di nascita, indirizzo email, e documento di riconoscimento. 5. Il gestore valuta le informazioni fornite e decide se approvare o rifiutare la registrazione dell'utente. 6. Il sistema aggiorna l'account dell'utente. - **Exit condition:** La verifica dell'utente è stata completata e l'eventuale account è stato creato. --- ### Gestore corse - **Nome caso d'uso:** `VisualizzaCorseinCorso` - **Entry condition:** Il gestore delle corse è autenticato. - **Attori:** Iniziato da Gestore corse - **Flusso degli eventi:** 1. Il gestore delle corse seleziona l'opzione per visualizzare le corse in corso. 2. Il sistema presenta un elenco delle corse attualmente in corso, mostrando: luogo di partenza e di arrivo, orari di partenza e arrivo previsti, e numero di posti disponibili. 3. Il gestore può selezionare una corsa specifica dall'elenco per visualizzarne i dettagli. 4. include `VisualizzaDettagliCorsa` - **Exit condition:** Il gestore ha visualizzato i dettagli delle corse in corso e ha ottenuto le informazioni necessarie. - **Nome caso d'uso:** `RimuoviCorsa` - **Entry condition:** Il gestore delle corse è autenticato. La corsa da eliminare deve trovarsi nello stato di pianificata. - **Attori:** Iniziato da Gestore Corse - **Flusso:** 1. Il gestore delle corse sceglie una corsa dall'elenco delle corse disponibili 2. include `VisualizzaDettagliCorsa` 3. Il gestore seleziona l'opzione per rimuovere la corsa 4. Il sistema procede all'eliminazione della corsa 5. Il sistema invia una notifica ai passeggeri che avevano prenotato la corsa e al conducente, informandoli dell'annullamento. - **Exit condition:** La corsa è stata eliminata con successo e gli utenti sono stati notificati. --- ### Utente - **Nome caso d'uso:** `RegistraUtente` - **Entry condition:** - **Attori:** Iniziata da Utente - **Flusso degli eventi:** 1. L'individuo seleziona l'opzione per creare un nuovo account. 2. Il sistema presenta un modulo di registrazione dove l'individuo inserisce i dettagli richiesti: nome, cognome, data di nascita, numero di telefono, documento di identità (in formato immagine), email e password. 3. L'utente invia la richiesta di registrazione. 4. Il sistema registra la richiesta e aggiorna l'elenco degli utenti in attesa di verifica dell'account. - **Exit condition:** La richiesta di creazione dell'account è stata inviata e registrata con successo. - **Nome caso d'uso:** `Autenticazione` - **Entry condition:** - **Attori:** Iniziato da Utente - **Flusso degli eventi:** 1. L'utente seleziona l'opzione di accesso sulla piattaforma. 2. Il sistema chidede le credienziali all'utente: email e password. 3. L'utente inserisce le credenziali. 4. il sistema controlla le credenziali e il controlo ha esito positivo 5. il sistema reindirizza l'utente alla sua home page - **Exit condition:** L'utente viene autenticato e accede alla piattaforma. - caso d'uso estensione - **Nome caso d'uso:** `AutenticazioneFallita` - **Attore:** Iniziato da utente - **Entry Condition:** Se al punto 3 il sistema rileva credenziali non corrette, il sistema mostrerà il messaggio di errore “username o password non corrette” e ripresenterà la schermata di autenticazione (UC 1.1Autenticazione Fallita) - **Flusso di eventi:** 1. il sistema mostra il messaggio di errore “username o password non corrette” 2. il sistema ripresenta all’utente la schermata di autenticazione - **Exit Condition:** L’utente si trova sulla home page di Esse3 con la schermata di autenticazione --- - **Nome caso d'uso:** `VisualizzaDettagliCorsa` - **Attore:** Iniziato da `Passeggero`, `Conducente` e `GestoreCorse` - **Entry Condition:** Il `Passeggero` o il `Conducente` o il `GestoreCorse` è autenticato nel sistema. - **Flusso degli eventi:** 1. Il sistema mostra tutti i dettagli della corsa selezionata compreso: luogo di partenza, di luogo di destinazione, conducente, data e ora di partenza, data e ora di arrivo stimato, posti prenotati e da chi, prezzo per un posto e eventuali note aggiunte dal conducente. - **Exit Condition:** Il sistema ha mostrato i dati della corsa. --- ```plantuml @startuml ' Define layout direction left to right direction ' Define actors actor Passeggero actor Conducente actor Utente actor GestoreUtenti actor GestoreCorse actor AziendaGestionePagamento ' Define use cases usecase TrovaCorse as "Trova Corse" usecase PrenotaCorsa as "Prenota Corsa" usecase AnnullaPrenotazioneCorsa as "Annulla Prenotazione Corsa" usecase VisualizzaCorsePrenotate as "Visualizza Corse Prenotate" usecase PubblicaCorsa as "Pubblica Corsa" usecase AnnullaPubblicazioneCorsa as "Annulla Pubblicazione Corsa" usecase AnnunciaTerminazioneCorsa as "Annuncia Terminazione Corsa" usecase VisualizzaCorsePubblicate as "Visualizza Corse Pubblicate" usecase VerificaUtente as "Verifica Utente" usecase VisualizzaCorseinCorso as "Visualizza Corse in Corso" usecase RimuoviCorsa as "Rimuovi Corsa" usecase RegistraUtente as "Registra Utente" usecase Autenticazione usecase AutenticazioneFallita as "Autenticazione Fallita" usecase AccettaPagamentoConCarta as "Accetta Pagamento Con Carta" usecase VisualizzaDettagliCorsa as "Visualizza Dettagli Corsa" usecase VisualizzaDettagliUtente as "Visualizza Dettagli Utente" ' Define relationships Utente <|- Conducente Utente <|- Passeggero Passeggero -- TrovaCorse Passeggero -- PrenotaCorsa Passeggero -- AnnullaPrenotazioneCorsa Passeggero -- VisualizzaCorsePrenotate Passeggero -- AccettaPagamentoConCarta Conducente -- PubblicaCorsa Conducente -- AnnullaPubblicazioneCorsa Conducente -- AnnunciaTerminazioneCorsa Conducente -- VisualizzaCorsePubblicate GestoreCorse -- VisualizzaCorseinCorso GestoreCorse -- RimuoviCorsa GestoreUtenti -- VerificaUtente Utente -- RegistraUtente Utente -- Autenticazione Autenticazione <.. AutenticazioneFallita : extends AccettaPagamentoConCarta -- AziendaGestionePagamento TrovaCorse ..> VisualizzaDettagliCorsa : include VisualizzaCorsePrenotate ..> VisualizzaDettagliCorsa : include VisualizzaCorsePubblicate ..> VisualizzaDettagliCorsa : include VisualizzaCorseinCorso ..> VisualizzaDettagliCorsa : include RimuoviCorsa ..> VisualizzaDettagliCorsa : include VisualizzaDettagliCorsa <.. VisualizzaDettagliUtente : extends @enduml ``` 1. **TrovaCorse** - Oggetti: - Modulo di ricerca (contiene campi per luogo di partenza, luogo di destinazione, numero di posti) - Elenco corse (lista di corse con dettagli come luogo di partenza e destinazione, orari, posti, prezzo) - Corsa (ogni elemento nell'elenco delle corse) 2. **PrenotaCorsa** - Oggetti: - Corsa (dettagli della corsa selezionata per la prenotazione) - Prenotazione (dettagli della prenotazione, incluso il riferimento alla corsa) 3. **AnnullaPrenotazioneCorsa** - Oggetti: - Prenotazione (prenotazione da annullare) - Notifica (messaggio inviato al conducente) 4. **VisualizzaCorsePrenotate** - Oggetti: - Elenco prenotazioni (lista delle prenotazioni fatte dall'utente) - Prenotazione (ogni elemento nell'elenco delle prenotazioni) 5. **VisualizzaDettagliUtente** - Oggetti: - Utente (dettagli dell'utente selezionato) 6. **accettaPagamentoConCarta** - Oggetti: - Dettagli carta di credito (informazioni sulla carta di credito del passeggero) - Transazione (dettagli della transazione, compreso l'importo) 7. **PubblicaCorsa** - Oggetti: - Modulo di pubblicazione corsa (contiene campi per i dettagli della corsa) - Corsa (dettagli della corsa pubblicata) 8. **AnnullaPubblicazioneCorsa** - Oggetti: - Corsa (corsa selezionata per l'annullamento) - Notifica (messaggio inviato ai passeggeri) 9. **AnnunciaTerminazioneCorsa** - Oggetti: - Corsa (corsa selezionata per annunciare la terminazione) - Notifica (messaggio di conferma della conclusione della corsa) 10. **VisualizzaCorsePubblicate** - Oggetti: - Elenco corse pubblicate (lista delle corse pubblicate dal conducente) - Corsa (ogni elemento nell'elenco delle corse pubblicate) 11. **VerificaUtente** - Oggetti: - Elenco utenti (lista degli utenti in attesa di verifica) - Utente (dettagli dell'utente selezionato per la verifica) 12. **VisualizzaCorseinCorso** - Oggetti: - Elenco corse in corso (lista delle corse attualmente in corso) - Corsa (ogni elemento nell'elenco delle corse in corso) 13. **RimuoviCorsa** - Oggetti: - Corsa (corsa selezionata per la rimozione) - Notifica (messaggi inviati ai passeggeri e al conducente) 14. **RegistraUtente** - Oggetti: - Modulo di registrazione (contiene campi per i dettagli richiesti) - Richiesta di registrazione (dettagli dell'utente inviati per la registrazione) 15. **Autenticazione** - Oggetti: - Credenziali (email e password fornite dall'utente) - Sessione utente (rappresenta la sessione dell'utente autenticato) 16. **AutenticazioneFallita** - Oggetti: - Messaggio di errore (notifica mostrata all'utente) 17. **VisualizzaDettagliCorsa** - Oggetti: - Dettagli della corsa (informazioni complete sulla corsa selezionata) ### Entity Objects Gli Entity Objects sono oggetti che rappresentano informazioni persistenti tracciate dal sistema. In genere si riferiscono a dati che devono essere memorizzati e recuperati dal sistema. - **Corsa**: Include dettagli come luogo di partenza e destinazione, orari, posti, prezzo. Usata in vari casi d'uso come `TrovaCorse`, `PubblicaCorsa`, `AnnullaPubblicazioneCorsa`, ecc. - **Prenotazione**: Dettagli delle prenotazioni, riferimenti alle corse. Utilizzata in `PrenotaCorsa`, `AnnullaPrenotazioneCorsa`, ecc. - **Utente**: Dettagli dell'utente, utilizzati in casi d'uso come `VerificaUtente`, `VisualizzaDettagliUtente`. - **Transazione**: Rappresenta le transazioni finanziarie, usata in `accettaPagamentoConCarta`. - **Elenco corse**: Lista delle corse disponibili, utilizzata in `TrovaCorse`, `VisualizzaCorseinCorso`, ecc. - **Elenco prenotazioni**: Lista delle prenotazioni effettuate, usata in `VisualizzaCorsePrenotate`. - **Elenco utenti**: Lista degli utenti in attesa di verifica, utilizzata in `VerificaUtente`. ### Boundary Objects I Boundary Objects rappresentano le interazioni tra gli attori e il sistema. Essi facilitano la comunicazione tra il sistema e il mondo esterno. - **Modulo di ricerca**: Interfaccia per inserire i criteri di ricerca nelle corse, usato in `TrovaCorse`. - **Modulo di pubblicazione corsa**: Interfaccia per inserire i dettagli della corsa da pubblicare, usato in `PubblicaCorsa`. - **Modulo di registrazione**: Form per la registrazione dell'utente, usato in `RegistraUtente`. - **Interfaccia di autenticazione**: Schermata per il login, usata in `Autenticazione` e `AutenticazioneFallita`. - **Notifica**: Messaggi inviati agli utenti, usati in vari casi come `AnnullaPubblicazioneCorsa`, `AnnunciaTerminazioneCorsa`, ecc. ### Control Objects I Control Objects sono responsabili della realizzazione dei casi d'uso, gestendo la logica e il flusso di controllo. - **Gestione Ricerca Corse**: Controllo del flusso di eventi in `TrovaCorse`. - **Gestione Prenotazioni**: Gestisce la logica di prenotazione, annullamento e visualizzazione delle prenotazioni. - **Gestione Utenti**: Controlla il processo di verifica degli utenti, registrazione e autenticazione. - **Gestione Pagamenti**: Gestisce le transazioni e la comunicazione con `AziendaGestionePagamento` in `accettaPagamentoConCarta`. - **Gestione Corse**: Controlla la pubblicazione, cancellazione e visualizzazione delle corse. --- # Analisi ## Fasi dell'analisi ![Screenshot 2024-01-19 164708](https://hackmd.io/_uploads/SkXqYf_F6.png) ## Definizione degli oggetti partecipanti ### Definire gli entity object **Entity Objects:** 1. **Passeggero:** Rappresenta un utente che prenota o utilizza una corsa. 2. **Corsa:** Contiene informazioni sulla corsa, come luogo di partenza, luogo di destinazione, data e ora, posti disponibili, ecc. 3. **Prenotazione:** 4. **UTENTE SARA' UNA GENERALIZZAZIONE SUCCESSIVA** 5. **Conducente:** Rappresenta un utente che guida un veicolo e pubblica corse. 6. **GestoreCorse:** Rappresenta un utente responsabile della gestione delle corse nel sistema. 7. **GestoreUtenti:** Rappresenta un utente responsabile della gestione degli utenti nel sistema. 8. **AziendaGestionePagamento:(?????)** Rappresenta l'azienda responsabile della gestione dei pagamenti nel sistema. ### Definire i boundary object **Boundary Objects:** *Tips: i boundary object collezionano informazioni ottenute dagli attori e le gestiscono in modo tale da poter essere gestite poi dagli entity e control object* 1. **Interfaccia di Prenotazione:** Consente al passeggero di visualizzare i dettagli della corsa e prenotarla. 2. **Interfaccia di Ricerca Corsa:** Consente ad un utente di inserire i dati per cercare una corsa. 3. **Interfaccia di Annullamento Prenotazione:** Consente al passeggero di annullare la prenotazione di una corsa. 4. **Interfaccia di Pubblicazione Corsa:** Consente al conducente di inserire i dettagli della corsa da pubblicare. 5. **Interfaccia di conferma Pubblicazione Corsa:** Consente al conducente di confermare i dettagli della corsa da pubblicare. 6. **Interfaccia di Annullamento Pubblicazione:** Permette al conducente di annullare la pubblicazione di una corsa. 7. **Interfaccia di Annuncio Terminazione Corsa:** Consente al conducente di annunciare la terminazione di una corsa. 8. **Interfaccia di Visualizzazione Corse Pubblicate:** Permette al conducente di visualizzare le corse pubblicate. 9. **Interfaccia di Visualizzazione Corse Cercate:** Permette all'utente di visualizzare le corse da lui cercate. 10. **Interfaccia di Verifica Utente:** Consente al gestore utenti di visualizzare e verificare gli utenti in attesa di verifica. 11. **Interfaccia di Visualizzazione Corse in Corso:** Permette al gestore corse di visualizzare le corse attualmente in corso. 12. **Interfaccia di Rimozione Corsa:** Consente al gestore corse di rimuovere una corsa. 13. **Interfaccia di Registrazione Utente:** Permette agli utenti di inserire i dettagli richiesti per la registrazione. 14. **Interfaccia di Autenticazione:** Consente agli utenti di inserire le credenziali per l'autenticazione. 15. **Interfaccia di AutenticazioneFallita:** Mostra un messaggio di errore in caso di fallimento dell'autenticazione. 16. **Interfaccia di Visualizzazione Dettagli Corsa:** Consente a passeggeri, conducenti e gestori corse di visualizzare i dettagli di una corsa. 17. **Interfaccia di Visualizzazione Informazioni Utente:** Consente a passeggeri e conducenti, di visualizzare le informazioni di altri utenti in riferimento ad una stessa corsa. 18. **Interfaccia di Visualizzazione Corse Prenotate**: Rappresenta l’interfaccia utente attraverso la quale il passeggero seleziona la funzione per visualizzare le corse prenotate. 19. **Interfaccia di Visualizzazione delle notifiche:** Consente agli utenti di visualizzare le notifiche ricevute.(*poiché consideriamo le notifiche semplicemente come un metodo di comunicazione del sistema con l'utente queste possono essere considerate come boundary object e non come entity.*) ### Definire i control object **Control Objects:** *Tips: Solitamente gli oggetti di questo tipi vengono istanziati all'inizio di un caso d'uso e vengono deallocati alla fine. Si occupa di ottenere le informazioni dai boundary object e distribuirle agli entity objects* 1. **Controller di Prenotazione:** Gestisce la prenotazione di una corsa, inclusa l'autorizzazione del pagamento. 2. **Controller di Ricerca Corsa:** Gestisce la ricerca di una corsa. 3. **Controller di Annullamento Prenotazione:** Gestisce l'annullamento della prenotazione di una corsa da parte del passeggero. 4. **Controller di Pubblicazione Corsa:** Gestisce la pubblicazione di una corsa da parte del conducente. 5. **Controller di Conferma Pubblicazione Corsa:** Gestisce la conferma di pubblicazione di una corsa da parte del conducente. 6. **Controller di Annullamento Pubblicazione:** Gestisce l'annullamento della pubblicazione di una corsa da parte del conducente. 7. **Controller di Annuncio Terminazione Corsa:** Gestisce l'annuncio di terminazione di una corsa da parte del conducente. 8. **Controller di Visualizzazione Corse Pubblicate:** Gestisce la visualizzazione delle corse pubblicate da parte del conducente. 9. **Controller di Visualizzazione Corse Prenotate:** Gestisce la visualizzazione delle corse prenotate da parte del passeggero. 10. **Controller di Verifica Utente:** Gestisce la verifica degli utenti da parte del gestore utenti. 11. **Controller di Visualizzazione Corse in Corso:** Gestisce la visualizzazione delle corse attualmente in corso da parte del gestore corse. 12. **Controller di Rimozione Corsa:** Gestisce la rimozione di una corsa da parte del gestore corse. 13. **Controller di Registrazione Utente:** Gestisce la registrazione di un nuovo utente. 14. **Controller di Autenticazione:** Gestisce il processo di autenticazione dell'utente. 15. **Controller di AutenticazioneFallita:** Gestisce il flusso in caso di fallimento dell'autenticazione. 16. **Controller di Visualizzazione Dettagli Corsa:** Gestisce la visualizzazione dei dettagli di una corsa. 17. **Controller di Visualizzazione Dettagli Utente:** Gestisce la visualizzazione dei dettagli di un utente. 18. **Controller di Visualizzazione Corse Cercate:** Gestisce la visualizzazione delle corse in base ai criteri forniti dall'utente. 19. **Controller di Gestione delle Notifiche:** Gestisce l'inoltre delle notifiche agli utenti. ```plantuml @startuml actor Passeggero participant "TrovaCorseButton" Passeggero -> TrovaCorseButton : press() TrovaCorseButton -> TrovaCorseControl : <<create>> TrovaCorseControl -> TrovaCorseForm : <<create>> Passeggero -> TrovaCorseForm : fillContents() Passeggero -> TrovaCorseForm : submit() TrovaCorseForm -> TrovaCorseControl : submitTrovaCorse() TrovaCorseControl -> TrovaCorseControl : findCorse() TrovaCorseControl -> CorseTrovateSummary : <<create>> TrovaCorseControl -> CorseTrovateSummary : setCorseTrovate(Corse) Passeggero -> CorseTrovateSummary : visualizzaCorseTrovate() Passeggero -> CorseTrovateSummary : selezionaCorsa() CorseTrovateSummary -> CorsaControl : <<create>> CorseTrovateSummary -> CorsaControl : submitCorsaSelezionata() CorsaControl -> Corsa : <<create>> CorsaControl -> CorsaView : <<create>> CorsaControl -> CorsaView : setCorsa() Passeggero -> CorsaView : visualizzaDettagliCorsa() @enduml ``` --- - **Nome caso d'uso:** `TrovaCorse` - **Entry condition:** None - **Attori:** Iniziato da `Passeggero` - **Flusso degli eventi:** 1. Il passeggero seleziona l'opzione di ricerca corse. 2. Il sistema presenta un modulo di ricerca dove il passeggero inserisce i dettagli della corsa desiderata, come luogo di partenza, luogo di destinazione e il numero di posti necessari. 3. Il passeggero invia la richiesta di ricerca. 4. Il sistema elabora la richiesta e mostra un elenco di corse disponibili che corrispondono ai criteri forniti dal passeggero, includendo le informazioni: luogo di partenza e destinazione, data e ora di partenza, data e ora di arrivo, numero di posti prenotati e disponibili e prezzo. 5. Il passeggero seleziona una corsa che soddisfa le sue esigenze. 6. include `VisualizzaDettagliCorsa` - **Exit condition:** Il passeggero ha visualizzato i dettagli completi di una corsa specifica e può procedere alla prenotazione o continuare la ricerca.

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully