Menu
Coddy logo textTech

Vorführungen stornieren

Teil des Abschnitts Logik & Ablauf der JavaScript-Journey von Coddy. Lektion 65 von 65.

challenge icon

Aufgabe

Einfach

Füge den Fall cancelScreening hinzu, der die Stornierung von Vorführungen behandelt. Der Datenparameter enthält:

  • screeningId (number)

 

Die Funktion sollte:

  1. Wenn die Vorführung mit der angegebenen screeningId in festivalData.screenings nicht vorhanden ist, Screening not found! zu results hinzufügen und den Vorgang beenden
  2. Die Vorführung im Array festivalData.screenings finden und entfernen
  3. Alle zugehörigen Tickets aus dem Set festivalData.tickets entfernen
  4. Screening cancelled successfully! zum Array results hinzufügen

Probier es selbst

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;

            case "addScreening":
                const movie = festivalData.movies.find(m => m.id === currentData.movieId);
                const venue = festivalData.venues.find(v => v.id === currentData.venueId);
                
                if (!movie || !venue) {
                    results.push("Movie or venue not found!");
                    break;
                }
                
                const existingScreening = festivalData.screenings.find(s => 
                    s.venueId === currentData.venueId && 
                    s.date === currentData.date && 
                    s.time === currentData.time
                );
                
                if (existingScreening) {
                    results.push("Screening already exists at this time!");
                    break;
                }
                
                const newScreening = {
                    id: festivalData.screenings.length + 1,
                    movieId: currentData.movieId,
                    venueId: currentData.venueId,
                    date: currentData.date,
                    time: currentData.time,
                    availableSeats: venue.capacity
                };
                
                festivalData.screenings.push(newScreening);
                results.push("Screening added successfully!");
                break;

            case "buyTicket":
                const screening = festivalData.screenings.find(s => s.id === currentData.screeningId);
                
                if (!screening) {
                    results.push("Screening not found!");
                    break;
                }
                
                if (screening.availableSeats < currentData.quantity) {
                    results.push("Not enough seats available!");
                    break;
                }
                
                for (let i = 0; i < currentData.quantity; i++) {
                    const ticketId = `${currentData.screeningId}-${screening.availableSeats - i}`;
                    festivalData.tickets.add(ticketId);
                }
                
                screening.availableSeats -= currentData.quantity;
                results.push("Tickets purchased successfully!");
                break;


            case "rateMovie":
                const tempMovie = festivalData.movies.find(m => m.id === currentData.movieId);
                
                if (!tempMovie) {
                    results.push("Movie not found!");
                    break;
                }
                
                if (currentData.avgRating < 1 || currentData.avgRating > 5) {
                    results.push("Invalid rating! Must be between 1 and 5");
                    break;
                }

                tempMovie.avgRating = currentData.avgRating
                
                
                results.push("Rating added successfully!");
                break;

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

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-JavaScript-Compiler