Le temps est enfin venu de dévoiler la programmation officielle le 12 juillet 2050**. En tant qu’organisateur du festival, je dois gérer la logistique du transport et de l’oxgène en lien avec l’organisation des spectacles et des activités afin de répondre aux besoins de tous.

Chaque jour du festival (8 jours total), une activité est prévue le matin et un spectacle est programmé le soir.

Activités possibles:

  • Yoga en apesanteur => Une période de yoga nécessite l’achat de 10 bonbonnes d’oxygène de catégorie E par festivalier participant
  • Cardio space => Une période de cardio space nécessite l’achat de 15 bonbonnes d’oxygène de catégorie E par festivalier participant

:exclamation: Le champ eventDate (présent lors de l’achat de passes (ACP)) indique à quel événement un festivalier participe. Si un festivalier a acheté une passe pour le 17 juillet 2050, considérez qu’il sera nécessairement à l’activité du 17 juillet (pas d’absentéisme). L’achat d’un package signifie que le festivalier participera aux 8 activités et 8 spectacles.

Une activité peut revenir plusieurs fois dans la programmation. Un artiste ou groupe ne peut être présent qu’une seule fois dans la programmation.

Chaque artiste voyage à bord d’un E.T. spaceship. Sauf s’il s’agit d’un groupe, alors tous les membres du groupe doivent être à bord du même shuttle de type Millennium Falcon (Millenium Falcon aussi accepté).

Chaque artiste aura besoin de 6 bonbonnes d’oxygène de catégorie E.

:exclamation: Si un groupe est composé de 4 artistes, alors le besoin total d’oxygène sera 6 bonbonnes/artiste * 4 artistes = 24 bonbonnes.

Les artistes ne sont présents que la journée même de leur spectacle, donc arrivée et départ le même jour.

Conditions de succès

Condition Description
COS 1 Pour chaque jour du festival, une activité est organisée pour la période du matin (am) et un spectacle est organisé pour la période du soir (pm).
COS 2 Un artiste ne peut pas être présent deux fois durant toute la durée du festival.
COS 3 Les bonbonnes d’oxygène pour les artistes sont achetées dès le dévoilement de l’horaire du festival (12 juillet 2050**)
COS 4 Les bonbonnes d’oxygène nécessaires pour les activités sont commandées dès le dévoilement de l’horaire du festival.
COS 5 Les shuttles pour les artistes sont réservés dès le dévoilement de l’horaire du festival.
COS 6 L’id des artistes est inscrit dans le shuttle manifest***.

:exclamation: Il faut respecter les COS des stories précédentes.

Informations supplémentaires:

  • Les artistes présents dans la programmation n’ont pas besoin d’être les artistes les moins dispendieux ou les plus populaires.
  • Il n’y a pas de limite du nombre de festivaliers qui peuvent participer aux activités ou aux spectacles.
  • Une activité peut être présente plusieurs fois pendant le festival (ex. 8 matins avec du yoga OU 8 matins avec du cardio OU 6 matins avec du yoga et 2 matins avec du cardio, etc.)

API

Requête:

POST /program/

{
"program": [
         {
            "eventDate": ""::string,
            "am": activity::string,
            "pm": artistName::string
         },
         ...
}

Réponse

HTTP 200 Ok

HTTP 400 Bad Request

  • S’il y a 2 fois la même date comme eventDate,
  • Si un artiste est programmé le matin,
  • Si une activité est progammée le soir,
  • Si un artiste est présent 2 fois

:exclamation: Ne pas gérer plusieurs erreurs en même temps. C’est-à-dire que dans les tests, nous ne testerons pas plusieurs erreurs en même temps (de toute manière, retournez la même exception, soit INVALID_PROGRAM dans chacun des cas).

{
  "error": "INVALID_PROGRAM"::string,
  "description" : "the program is invalid"::string
} 

Exemple:

POST /program

{
   "program": [
            {
               "eventDate": "2050-07-17",
               "am": "yoga",
               "pm": "Kid Rocket"
            },
            {
               "eventDate": "2050-07-18",
               "am": "yoga",
               "pm": "Freddie Mercury"
            },
            {
               "eventDate": "2050-07-19",
               "am": "cardio",
               "pm": "Kelvin Harris"
            },
            {
               "eventDate": "2050-07-20",
               "am": "cardio",
               "pm": "Lady Gamma"
            },
            {
               "eventDate": "2050-07-21",
               "am": "yoga",
               "pm": "30 Seconds to Mars"
            },
            {
               "eventDate": "2050-07-22",
               "am": "yoga",
               "pm": "Coldray"
            },
            {
               "eventDate": "2050-07-23",
               "am": "cardio",
               "pm": "Suns N’ Roses"
            },
            {
               "eventDate": "2050-07-24",
               "am": "yoga",
               "pm": "Eclipse Presley"
            }
       ]
}

HTTP 200 Ok

Les informations sur les quantités d’oxygène et sur les shuttles réservés seront vérifiées dans les requêtes concernant le transport (US2) et l’oxygène (US3)

Questions et réponses sur la story:

15/10/2019

** Considérez le 12 juillet 2050 comme étant la date de dévoilement du festival. Considérez aussi que nous ne vérifierons pas l’achat de passes après la date de dévoilement pour simplifier le tout.

*** Pour les shuttles qui transportent des artistes, écrire l’id de l’artiste (si un groupe, mettre l’id du groupe x nb de personnes dans le groupe ex.: [4, 4, 4]).

10/11/2019

Typo: pas de / dans l’URL après le mot program donc on POST à /program

NOUVEAU 13/11/2019

Pas besoin de gérer les exceptions suivantes:

  • Si le champ de eventDate est invalide ou null
  • Si le champ am ou pm est présent plusieurs fois (am am, pm pm)