# Piano di Implementazione: Importazione Playlist e Canti della Comunità

Questo piano descrive i dettagli tecnici per l'aggiunta di una funzione che consente di importare localmente tutte le playlist e i canti personalizzati di una comunità attiva.

## User Review Required

> [!IMPORTANT]
> L'importazione comporterà il salvataggio dei canti personalizzati della comunità direttamente nei "Miei Canti" dell'utente (evitando duplicati) e la creazione di playlist locali. Le playlist locali create includeranno:
> 1. Una playlist principale con il nome della comunità stessa contenente tutti i canti della comunità con le rispettive tonalità, velocità di scorrimento e testi personalizzati/aggiuntivi.
> 2. Tutte le singole scalette/playlist della comunità importate come playlist locali indipendenti e modificabili.

## Proposed Changes

### Servizi e Logica di Business

#### [MODIFY] [playlist.service.ts](file:///Users/davidfrassi/SRC/agenti/canti/src/app/services/playlist.service.ts)
Aggiungeremo un metodo helper o esporremo le funzioni di salvataggio di massa per le playlist importate, garantendo che le impostazioni dei brani (`songSettings` contenenti tonalità e velocità di scorrimento) siano preservate correttamente.

### Pagina Impostazioni (Settings Page)

#### [MODIFY] [settings.page.html](file:///Users/davidfrassi/SRC/agenti/canti/src/app/pages/settings/settings.page.html)
Nel gruppo "Comunità", quando una comunità è attiva, aggiungeremo un nuovo pulsante sotto i dettagli della comunità:
- **Pulsante**: "Importa Playlist e Canti" con icona `cloud-download-outline`.

#### [MODIFY] [settings.page.ts](file:///Users/davidfrassi/SRC/agenti/canti/src/app/pages/settings/settings.page.ts)
Implementeremo il metodo `importComunitaPlaylists()` che svolgerà i seguenti passaggi:
1. **Verifica dello Stato**: Si assicura che una comunità sia attiva e che i dati siano caricati.
2. **Importazione dei Canti Personalizzati**:
   - Scorrerà i canti di `comunitaService.comunitaCantiPersonali()`.
   - Per ciascun canto, verificherà se è già presente nei "Miei Canti" (tramite `myCantiService.myCanti()`).
   - Se assente, lo aggiungerà con prefisso ID `my_` ed effettuerà il salvataggio in locale su `MyCantiService`.
3. **Creazione della Playlist della Comunità**:
   - Creerà una playlist avente come nome il nome della comunità stessa.
   - Popolerà i canti associando sia i canti standard sia i canti personali importati.
   - Assocerà le impostazioni di tonalità e velocità di scorrimento da `comunitaCantiSettings()`. Per la velocità, si utilizzerà la formula di conversione standard (es. `Math.round(speed / 100)`).
4. **Importazione delle Scalette (Playlist) Aggiuntive**:
   - Per ciascuna scaletta in `comunitaService.comunitaScalette()`, creerà una playlist locale corrispondente.
   - Per ciascun canto della scaletta, cercherà se esiste un'impostazione in `comunitaCantiSettings()` per impostare tonalità e velocità specifiche all'interno della playlist.
5. **Salvataggio e Feedback**:
   - Salverà tutte le nuove playlist tramite `playlistService.savePlaylist()`.
   - Mostrerà un alert di conferma iniziale e un toast di successo finale.

## Verification Plan

### Manual Verification
- Attivare una comunità di prova (es. con codice noto o inserendone uno valido).
- Andare nelle impostazioni e cliccare sul nuovo pulsante "Importa Playlist e Canti".
- Verificare la comparsa dell'alert di conferma.
- Confermare l'importazione.
- Verificare tramite Toast e navigando nella home che:
  - Sia presente una playlist locale con il nome della comunità contenente tutti i canti ordinati e configurati.
  - Siano presenti le playlist secondarie della comunità convertite in playlist locali.
  - Le tonalità modificate e le velocità di scorrimento siano state importate correttamente per ciascun canto all'interno delle playlist.
  - I canti personali/aggiuntivi siano stati importati nella sezione "Miei Canti" e siano visualizzabili.
