Menu
CoddyTech

إضافة عرض سينمائي

جزء من قسم المنطق وتدفق التنفيذ في رحلة JavaScript على Coddy. الدرس 62 من 65.

challenge icon

التحدي

سهل

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

بالنسبة إلى addScreening، تحتوي مَعلمات البيانات على:

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

ينبغي أن تنفذ الدالة ما يلي:

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

جرّب بنفسك

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

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم JavaScript عبر الإنترنت