En tant qu’organisateur du festival, il faut gérer le transport des festivaliers sur la planète Ulavalogy afin que ceux-ci arrivent à bon port pour assister à l’événement.

Les vaisseaux disponibles sont :

Nom Capacité Coût
E.T. Spaceship 1 personne 100 000$
Millennium Falcon 20 personnes 65 000$
SpaceX 30 personnes 30 000$

Les festivaliers sont placés sur un vaisseau selon leur option de passe :

Option de passe Vaisseau
VIP E.T. Spaceship
Premium Millennium Falcon
Standard SpaceX (à vos risques)

Pour une même catégorie, un vaisseau doit être plein avant qu’un autre commence à se remplir. C’est-à-dire qu’il faut attendre qu’il y ait 30 personnes à bord d’un vaisseau SpaceX avant qu’un autre vaisseau SpaceX soit appelé.

Présumez qu’il y a autant de navettes nécessaires autant sur la Terre que sur la planète Ulavalogy pour les départs et les arrivées. Donc même si 3 navettes sont allées sur Ulavalogy, mais qu’on a besoin de 4 navettes pour ramener les festivaliers ce soir là, alors considérez qu’il y une 4e navette qui était déjà sur place pour satisfaire les besoins. Pour connaître le prix d’un retour seulement, divisez le prix d’un aller-retour par 2.

Note: Le coût n’est pas important pour l’instant, il s’agit du coût que le festival devra débourser pour chaque vaisseau. C’est transparent pour le client, mais ce sera important dans une prochaine story. Le coût est pour le vaisseau au complet et non pas par passager.

Conditions de succès

Condition Description
COS 1 La place du client sur le bon vaisseau est automatiquement réservé pour lui lors de l’achat du billet.
COS 2 Tenir compte des dates d’arrivée et de départ (passe journalière: aller-retour la même journée, forfait: aller le 1er jour et retour le dernier jour).
COS 3 Il est possible d’obtenir le manifeste (liste des passagers, identifiés par leur numéro de passe) d’un vaisseau, pour une date spécifique ou pour tout le festival

Note 1: Un départ est un trajet de la Terre vers la planète Ulavalogy et une arrivée est un trajet de la planète Ulavalogy vers la Terre.

Note 2: Même si un festivalier participe au festival X jours consécutifs, il effectue un aller-retour à chaque jour, sauf s’il a un package (aller 1er jour de la semaine et retour le dernier jour)

Exemple

Étant donné 21 passes journalières Premium pour la journée du 2060-07-19 
Et 1 passe journalière Standard pour la journée du 2060-07-19 
Quand on demande les informations sur les navettes du 2060-07-19
Alors on a un départ avec un 1er vaisseau Millenium Falcon avec 20 passagers
Et on a un départ avec un 2e Millenium Falcon avec 1 passager 
Et on a un départ avec un 1er vaisseau SpaceX avec un passager 
Et on a un arrivé avec le 1er vaisseau Millenium Falcon avec 20 passagers
Et on a un arrivé avec le 2e Millenium Falcon avec 1 passager 
Et on a un arrivé avec le 1er vaisseau SpaceX avec un passager 

API

Requête: Obtenir le manifeste

GET /shuttle-manifests?date=2060-07-19

Le paramètre de query “date” est optionnel.

Réponses

HTTP 200 Ok

{
 "departures: [  
                 {
                   "date": "2060-07-19",
                   "shuttleName": "ET Spaceship" || "Millenium Falcon" || "SpaceX"::string,
                   "passengers": [<numéro de passe 1>, <numéro de passe 2>] ::long[]
                 }, 
                 ...
              ],
"arrivals: [
               {
                 "date": "2060-07-19",
                 "shuttleName": "ET Spaceship" || "Millenium Falcon" || "SpaceX"::string,
                 "passengers": [<numéro de passe 1>, <numéro de passe 2>] ::long[]
               }, 
                ...
            ]
}

HTTP 400 Bad Request

Si le paramètre “date” est en dehors de la durée du festival (17 juillet 2060 au 24 juillet 2060 inclusivement).

{
  "error": "INVALID_EVENT_DATE"::string,
  "description" : "event date should be between July 17 2060 and July 24 2060"::string
}