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, les paramètres de données contiennent :

  • 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 une salle avec le venueId donné existent dans festivalData. Si l'un des deux n'est pas trouvé, ajouter "Movie or venue not found!" aux résultats
  2. Vérifier qu'il n'y a pas de séance dans la même salle, à la même date et à la même heure — si une séance existe, ajouter "Screening already exists at this time!" aux résultats
  3. Créer un nouvel objet séance avec :
    • id : généré en ajoutant 1 à la longueur du tableau des séances
    • movieId, venueId, date et time provenant des données
    • availableSeats : égal à la capacité de la salle
  4. Ajouter la séance au tableau festivalData.screenings
  5. Ajouter Screening added successfully! au tableau des résultats

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

Entraînez-vous par vous-même : Compilateur JavaScript en ligne