Menu
Coddy logo textTech

Gösterim Ekle

Coddy'nin JavaScript Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 62 / 65.

challenge icon

Görev

Kolay

Switch ifadenize yeni bir test durumu ekle: addScreening.

addScreening için veri parametreleri şunları içerir:

  • movieId (sayı)
  • venueId (sayı)
  • date ('YYYY-MM-DD' biçiminde dize)
  • time ('HH:MM:SS' biçiminde dize)

Fonksiyon şunları yapmalıdır:

  1. Verilen movieId değerine sahip bir filmin ve verilen venueId değerine sahip bir salonun festivalData içinde mevcut olup olmadığını doğrula. Bunlardan biri bulunamazsa sonuçlara "Movie or venue not found!" ekle
  2. Aynı salonda, tarihte ve saatte bir gösterim olmadığını kontrol et - Gösterim mevcutsa sonuçlara "Screening already exists at this time!" ekle
  3. Şunları içeren yeni bir gösterim nesnesi oluştur:
    • id: screening dizisinin uzunluğuna 1 eklenerek oluşturulur
    • verilerden alınan movieId, venueId, date ve time
    • availableSeats: salonun kapasitesine eşit
  4. Gösterimi festivalData.screenings dizisine ekle
  5. Sonuçlar dizisine Screening added successfully! ekle

Kendin dene

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

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online JavaScript derleyicisi