Menu
Coddy logo textTech

Adicionar Sessão

Parte da seção Lógica & Fluxo do Journey de JavaScript da Coddy. Lição 62 de 65.

challenge icon

Desafio

Fácil

Adicione um novo caso de teste à sua instrução switch: addScreening.

Para addScreening, os parâmetros de dados contêm:

  • movieId (número)
  • venueId (número)
  • date (string no formato 'YYYY-MM-DD')
  • time (string no formato 'HH:MM:SS')

A função deve:

  1. Validar se um filme com o movieId fornecido e um local com o venueId fornecido existem em festivalData. Se algum dos dois não for encontrado, adicionar "Filme ou local não encontrado!" aos resultados
  2. Verificar se não há uma sessão no mesmo local, data e horário — se a sessão existir, adicionar "A sessão já existe neste horário!" aos resultados
  3. Criar um novo objeto de sessão com:
    • id: gerar adicionando 1 ao tamanho do array de sessões
    • movieId, venueId, date e time dos dados
    • availableSeats: igual à capacidade do local
  4. Adicionar a sessão ao array festivalData.screenings
  5. Adicionar Screening added successfully! ao array de resultados

Experimente você mesmo

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

Todas as lições de Lógica & Fluxo

Pratique por conta própria: Compilador de JavaScript online