Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

إضافة عرض

جزء من قسم Logic & Flow في رحلة JavaScript على Coddy — الدرس 62 من 65.

challenge icon

التحدي

سهل

أضف حالة اختبار جديدة إلى عبارة switch الخاصة بك: addScreening.

بالنسبة لـ addScreening تحتوي معلمات data على:

  • movieId (رقم)
  • venueId (رقم)
  • date (سلسلة نصية بتنسيق 'YYYY-MM-DD')
  • time (سلسلة نصية بتنسيق 'HH:MM:SS')

يجب على الدالة أن تقوم بـ:

  1. التحقق مما إذا كان الفيلم ذو movieId المعطى والدار ذات venueId المعطى موجودين في festivalData. إذا لم يتم العثور على أي منهما، أضف "Movie or venue not found!" إلى results
  2. التحقق من عدم وجود عرض في نفس الدار والتاريخ والوقت - إذا كان العرض موجودًا، أضف "Screening already exists at this time!" إلى results
  3. إنشاء كائن عرض جديد يحتوي على:
    • id: يتم توليده بإضافة 1 إلى طول مصفوفة screenings
    • movieId و venueId و date و time من البيانات
    • availableSeats: يساوي سعة الدار (capacity)
  4. إضافة العرض إلى مصفوفة festivalData.screenings
  5. إضافة "Screening added successfully!" إلى مصفوفة results

جرّب بنفسك

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

جميع دروس Logic & Flow