Menu
Coddy logo textTech

Aggiungere una proiezione

Fa parte della sezione Logica e flusso del percorso JavaScript di Coddy. Lezione 62 di 65.

challenge icon

Sfida

Facile

Aggiungi un nuovo caso di test alla tua istruzione switch: addScreening.

Per addScreening, i parametri dei dati contengono:

  • movieId (numero)
  • venueId (numero)
  • date (stringa nel formato 'YYYY-MM-DD')
  • time (stringa nel formato 'HH:MM:SS')

La funzione dovrebbe:

  1. Verificare se in festivalData esistono un film con il movieId specificato e una sede con il venueId specificato. Se uno dei due non viene trovato, aggiungere "Movie or venue not found!" ai risultati
  2. Verificare che non ci sia una proiezione nella stessa sede, data e ora: se esiste già una proiezione, aggiungere "Screening already exists at this time!" ai risultati
  3. Creare un nuovo oggetto proiezione con:
    • id: generato aggiungendo 1 alla lunghezza dell'array delle proiezioni
    • movieId, venueId, date e time dai dati
    • availableSeats: uguale alla capienza della sede
  4. Aggiungere la proiezione all'array festivalData.screenings
  5. Aggiungere Screening added successfully! all'array dei risultati

Provalo tu

const festivalData = {
	movies: [{
		id: 1,
		title: "Inception",
		director: "Christopher Nolan",
		year: 2010,
		mainGenre: "Sci-Fi",
		secondGenre: undefined,
		avgRating: 0,
		available: true
	}],
	venues: [{
		id: 1,
		name: "Main Theater",
		capacity: 200,
	}],
	screenings: [{
		id: 1,
		movieId: 1,
		venueId: 1,
		date: '2023-10-29',
		time: '13:35:00',
		availableSeats: 200
	}],
	tickets: new Set()
};

function manageFestival(actions, data) {
    let results = [];
    
    actions.forEach((action, index) => {
        const currentData = data[index];
        
        switch(action) {
            case "listMovies":
                results.push(festivalData.movies);
                break;
                
            case "listVenues":
                results.push(festivalData.venues);
                break;

            case "listTickets":
                results.push(festivalData.tickets);
                break;

            case "listScreenings":
                results.push(festivalData.screenings);
                break;

            case "addMovie":
                const newMovie = {
                    id: festivalData.movies.length + 1,
                    title: currentData.title,
                    director: currentData.director,
                    year: currentData.year,
                    mainGenre: currentData.mainGenre,
                    secondGenre: currentData.secondGenre,
                    avgRating: 0,
                    available: true
                };
                festivalData.movies.push(newMovie);
                results.push("Movie added successfully!");
                break;

            case "addVenue":
                const newVenue = {
                    id: festivalData.venues.length + 1,
                    name: currentData.name,
                    capacity: currentData.capacity,
                };
                festivalData.venues.push(newVenue);
                results.push("Venue added successfully!");
                break;


            default:
                results.push("Invalid action!");
        }
    });
    
    return results;
}

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore JavaScript online