Menu
Coddy logo textTech

Ajouter une projection

Fait partie de la section Logique & Flux du Journey JavaScript de Coddy — leçon 62 sur 65.

challenge icon

Défi

Facile

Ajoutez un nouveau cas de test à votre instruction switch : addScreening.

Pour addScreening, le paramètre data contient :

  • movieId (nombre)
  • venueId (nombre)
  • date (chaîne au format 'YYYY-MM-DD')
  • time (chaîne au format 'HH:MM:SS')

La fonction doit :

  1. Vérifier si un film avec le movieId donné et un lieu avec le venueId donné existent dans festivalData. Si l'un ou l'autre n'est pas trouvé, ajoutez "Movie or venue not found!" dans results
  2. Vérifier s'il n'y a pas de séance au même lieu, à la même date et heure - Si la séance existe déjà, ajoutez "Screening already exists at this time!" dans results
  3. Créer un nouvel objet screening avec :
    • id : généré en ajoutant 1 à la longueur du tableau screening
    • movieId, venueId, date et time à partir de data
    • availableSeats : égal à la capacité du lieu (capacity)
  4. Ajouter la séance au tableau festivalData.screenings
  5. Ajouter "Screening added successfully!" au tableau results

Essayez vous-même

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;
}

Toutes les leçons de Logique & Flux