# πŸ“‹ PROGETTO: App Film con OMDb API **Obiettivo**: App Blazor che cerca film via API OMDb e gestisce una lista preferiti in memoria. **3 Pagine**: Ricerca β†’ Dettaglio β†’ Preferiti --- ## **FASE 1: SETUP C# su VSCode** ### Cosa fare: 1. **Installa le estensioni essenziali** in VSCode: - `C# Dev Kit` (Microsoft) - `Blazor WASM Debugging` (Microsoft) - `Thunder Client` o `REST Client` (opzionale, per testare API) 2. **Verifica che hai .NET 10** installato: ```powershell dotnet --version ``` 3. **Crea il progetto da template Blazor Web**: ```powershell dotnet new blazor -n TestAlebro cd TestAlebro ``` *(Tu hai giΓ  la struttura, quindi skippa questo se vuoi ripartire da quella)* 4. **Apri la cartella in VSCode** e verifica che riconosca il progetto (se no, controlla le estensioni) --- ## **FASE 2: AGGIUNTA DIPENDENZE (NuGet Packages)** ### Cosa ti serve: Solo **2-3 package** oltre a quelli di default: | Package | Motivo | Comando | |---------|--------|---------| | `HttpClient` | Per chiamare API OMDb (giΓ  incluso) | *(niente da fare)* | | `Newtonsoft.Json` (opzionale) | Se vuoi semplificare il parsing JSON rispetto a `System.Text.Json` | `dotnet add package Newtonsoft.Json` | ### Come aggiungerli: **Opzione A (Command Line)** - Nel terminale della cartella progetto: ```powershell dotnet add package Newtonsoft.Json ``` **Opzione B (Manuale nel .csproj)** - Apri `TestAlebro.csproj` e aggiungi sotto ``: ```xml ``` Poi esegui: ```powershell dotnet restore ``` ### Cosa NON ti serve: - ❌ Entity Framework (non hai database) - ❌ Authentication (il test non lo richiede) - ❌ Dependency Injection esterno (Blazor lo ha integrato) --- ## **FASE 3: PIANIFICAZIONE FEATURES** ### Ordine di implementazione (suggerito): #### **STEP 1: Setup della comunicazione con OMDb** **Cosa fare:** 1. Registrati su [omdbapi.com](https://www.omdbapi.com/) e prendi l'API key 2. Crea una **cartella `Services`** nel progetto 3. Crea una **classe `OmdbService.cs`** con metodi: - `SearchMoviesAsync(string title)` - chiama l'API di ricerca - `GetMovieDetailsAsync(string imdbId)` - chiama l'API dettagli singolo film **Cosa imparare:** - Come usare `HttpClient` in C# - Come deserializzare JSON in C# (`JsonSerializer` o Newtonsoft) - Come gestire le risposte dell'API #### **STEP 2: Gestire i Preferiti in memoria** **Cosa fare:** 1. Crea una **classe `FavoritesService.cs`** (in cartella `Services`) 2. Implementa metodi: - `AddFavorite(Movie movie)` - aggiunge film a lista locale - `RemoveFavorite(string imdbId)` - rimuove dalla lista - `GetFavorites()` - ritorna la lista - `IsFavorite(string imdbId)` - controlla se Γ¨ salvato **Nota**: I preferiti devono stare **in memoria del componente** o in **sessionStorage** (JavaScript interop). #### **STEP 3: Pagina di Ricerca** **Cosa fare:** 1. Crea `Pages/Search.razor` 2. Aggiungi: - Una `` per il titolo film - Un `