MAT - Gérer le matériel

En tant que propriétaire du restaurant, je peux gérer les limitations physiques de mon espace. Et comme nous sommes dans l’espace, ça prendra de l’oxygène, de la coutellerie, etc.

Suite à un précédent projet, la TEAM possède déjà une bonne quantité d’oxygène dans ses entrepôts. Une chose de réglée… remerciez les équipes de GLO4002 édition 2019! Ils ont aussi appris une bonne chose: il est plus simple de cacluler le matériel nécessaire et de les gérer au jour le jour. Ainsi, il faudra créer un rapport qui décrit le matériel nécessaire au bon fonctionnement du restaurant.

Cependant, elle doit gérer la coutellerie… Entre chaque repas, la coutellerie peut soit être achetée, soit être lavée. Dans le cas où on en manque, on en achète. Dans le cas où on en a déjà assez, on la lave.

  • R1. Chaque client a besoin de trois fourchettes, trois couteaux et trois cuillères, chaque ustensile coûte 20CAD$.

  • R2. Ensuite, chaque client a aussi besoin de trois assiettes et de trois bols, chacun coûtant 170CAD$.

  • R3. Cependant, les clients qui demandent une spécificité ont besoin d’une fourchette et d’une assiette de plus.

Pour ne pas avoir de mauvaises surprises, la TEAM veut limiter ses achats et acheter au jour le jour.

  • R4. Ainsi, si un client réserve pour un repas près de l’ouverture, ils vont acheter pour la première utilisation. (voir détails plus bas)

  • R5. Cependant, la TEAM veut réutiliser ce matériel pour les clients subséquents en payant 100CAD$ pour un lavage à pression de neuf (9) objets.

  • R6. Les coutelleries peuvent seulement être utilisés s’ils sont lavés et on doit laver seulement la quantité maximale de ce qui est disponible la veille. (On ne peut pas laver les ustensiles plus vieux. Seuls ceux utilisés la veille sont disponibles)

Exemple 1:

Un client A réserve pour le premier jour
On achète son matériel

Un client B réserve pour le premier jour
On achète son matériel

Deux clients C et D réservent pour le deuxième jour
On planifie le lavage de le matériel des clients A et B

Un client E réserve pour le septième jour
On achète son matériel 

Un client F réserve le cinquième jour
On achète son matériel

Trois clients G H et I réserve le huitième jour
On lave le matériel pour G et on achète pour H et I.

Exemple 2:

Trois clients ß, ø et œ réservent pour le premier jour
On achète leur matériel

Deux clients client µ et ∆ réservent pour le deuxième jour
On lave les matériel pour les deux premiers, on jette ce qui reste


Quatre clients A, B, C et D réservent pour le quatrième jour
On lave pour deux clients, on achète pour le troisième et le quatrième

Conditions de succès

Condition Description
MAT 1 Il est possible de faire un rapport sur le matériel nécessaire n’importe quand, dès qu’une réservation est faite, le matériel peut être rapporté.
MAT 2 Le matériel est spécifié pour toutes les journées nécessaires.
MAT 3 Chaque client a besoin de 3 couteaux, 3 fourchettes, 3 cuillères, peu importe son nombre de menus.
MAT 4 Chaque client a besoin de 3 bols, 3 assiettes.
MAT 5 Chaque restriction par client demande une assiette et une fourchette supplémentaire.
MAT 6 Les dates n’ayant pas de matériel à utiliser ne sont pas affichées.
MAT 7 Le restaurant commande toujours juste assez de matériel
MAT 8 Le restaurant commande toujours ce qui manque
MAT 9 Les informations retournées considèrent toujours la période donnée par startDate et endDate. Les deux dates sont inclusives.
MAT 10 Les ustensiles coûtent 20CAD$ l’unité.
MAT 11 Les assiettes coûtent 170CAD$ l’unité.
MAT 12 Les bols coûtent 170CAD$ l’unité.
MAT 13 Les lavages coûtent 100CAD$ / 9 objets de matériel à laver.
MAT 14 Le matériel non lavé doit être jeté.

API

Requête

GET /reports/material?startDate=2020-07-20&endDate=2020-07-26

Réponses

HTTP 200 OK

Headers

Exemple 1:

{
  "dates": [
    {
        "date": "2020-07-20",
        "bought": {
            "knife": 6,
            "fork": 6,
            "spoon": 6,
            "bowl": 6,
            "plate": 6,
        }
        "totalPrice": ...
    },
    {
        "date": "2020-07-21",
        "cleaned": {
            "knife": 6,
            "fork": 6,
            "spoon": 6,
            "bowl": 6,
            "plate": 6,
        }
        "totalPrice": ...
    },
    {
        "date": "2020-07-24",
        "cleaned": {
            "knife": 3,
            "fork": 3,
            "spoon": 3,
            "bowl": 3,
            "plate": 3,
        }
        "totalPrice": ...
    },
    {
        "date": "2020-07-25",
        "cleaned": {
            "knife": 6,
            "fork": 6,
            "spoon": 6,
            "bowl": 6,
            "plate": 6,
        ],
        "bought": {
            "knife": 3,
            "fork": 3,
            "spoon": 3,
            "bowl": 3,
            "plate": 3,
        },
        "totalPrice": ...
    },
    {
        "date": "2020-07-26",
        "cleaned": {
            "knife": 3,
            "fork": 3,
            "spoon": 3,
            "bowl": 3,
            "plate": 3,
        },
        "totalPrice": ...
    }
  ]
} 

Erreurs

HTTP 400 Bad Request

Si une des deux dates (début ou fin) est à l’extérieur de la période du Hoppening. Aussi, si la endDate est avant la startDate. Aussi, si une des deux dates est manquante.

{
  "error": "INVALID_DATE"::string,
  "description" : "Dates should be between July 20 2150 and July 30 2150 and must be specified."::string
} 

Précisions

Aucunes pour le moment