package ex2_commandes;

import java.util.HashMap;
import java.util.Map;

public class Commande {
    private String code;
    private HashMap<String, Integer> quantites;

    public Commande(String code) {
        this.code = code;
        this.quantites = new HashMap<>();
    }

    public void ajouter(String codePlat) {
        /*
         * PSEUDO-CODE :
         * 1. Vérifier si quantites contient déjà la clé codePlat.
         * 2. Si non :
         *    mettre codePlat -> 1 dans la HashMap.
         * 3. Sinon :
         *    récupérer l'ancienne quantité avec get(codePlat).
         *    remettre codePlat -> ancienne quantité + 1.
         */
    }

    public int quantite(String codePlat) {
        /*
         * PSEUDO-CODE :
         * 1. Si la HashMap ne contient pas codePlat, retourner 0.
         * 2. Sinon retourner la quantité associée à codePlat.
         */
        return 0;
    }

    public double total(Map<String, Double> prixCatalogue) {
        /*
         * PSEUDO-CODE :
         * 1. Initialiser total à 0.
         * 2. Parcourir tous les codes de plats présents dans quantites.
         * 3. Pour chaque code :
         *    a. récupérer la quantité commandée.
         *    b. récupérer le prix unitaire dans prixCatalogue.
         *    c. ajouter prix * quantité au total.
         * 4. Retourner le total.
         */
        return 0.0;
    }

    public void valider() throws CommandeVideException {
        /*
         * PSEUDO-CODE :
         * 1. Si quantites est vide :
         *    lever une nouvelle CommandeVideException.
         * 2. Sinon ne rien faire.
         */
    }

    public void verifierStock(Map<String, Integer> stock) throws StockInsuffisantException {
        /*
         * PSEUDO-CODE :
         * 1. Parcourir tous les codes de plats commandés.
         * 2. Pour chaque code :
         *    a. récupérer la quantité demandée.
         *    b. récupérer la quantité disponible dans stock.
         *       Si le stock ne contient pas le code, considérer que la quantité disponible vaut 0.
         *    c. si demandé > disponible :
         *       lever une nouvelle StockInsuffisantException(code).
         */
    }
}
