package org.springframework.prospring.ticket.service;

import java.util.*;

import org.springframework.prospring.ticket.domain.*;

/**
 * Represents the event calendar of the system. The event calendar provides services regarding the
 * genres, shows, and performances available.
 * Reprezentuje kalendarz zdarzeń w systemie. Kalendarz ten dostarcza usług związanych z dostępnymi 
 * kategoriami przedstawień, przedstawieniamiami oraz spektaklami.
 */
public interface EventsCalendar {

    /**
     * Zwraca wszystkie zdefiniowane kategorie przedstawień.
     * @return Wszystkie zdefiniowane kategorie przedstawień.
     */
    public List getAllGenres();

    /**
     * Zwraca wszystkie przedstawienia dla jakich są zdefiniowane spektakle.
     * @return Wszystkie przedstawienia dla jakich są zdefiniowane spektakle.
     */
    public List getCurrentGenres();

    /**
     * Zwraca spektakl o podanym identyfikatorze.
     * @param performanceId Identyfikator żądanego spektaklu.
     * @return Spaktakl o podanym identyfikatorze.
     */
    public Performance getPerformance(long performanceId);

    /**
     * Zwraca przedstawienie o podanym identyfikatorze.
     * @param showId Identyfikator żądanego przedstawienia.
     * @return Przedstawienie o podanym identyfikatorze.
     */
    public Show getShow(long showId);
}
