package shop.backend;

import java.util.ArrayList;
import java.util.List;

public class Cart {
/*
Ich hätte auch über eine ProdukteListe Iterieren können,
jedoch würde dann die Klasse CartPositions wegfallen
 */
private List<CartPosition> positions;

public Cart(){
    this.positions = new ArrayList<>();

}

public boolean addProduct(Product prod, int quantity){
    if (quantity > prod.getStock()){
        return false;
    }

    //Ich überprüfe damit ob es das Produkt gibt
    for(CartPosition pos : positions){
        //Ist es das Produkt? Hat es dieselbe ID? ---> Ja ---> Quantity erhöhen---->break
        if(pos.getProduct().getProdID() == prod.getProdID()){
            pos.setQuantity(pos.getQuantity() + quantity); //Damit erhöhe ich quantity
            return true;
        }

    }
    positions.add(new CartPosition(prod, quantity));
    return true;
}
public void updateProductQuantity(int prodID,int quantity) {

        if (quantity <= 0) {
            removeProduct(prodID);
            return;
        }
        //KI
            for(CartPosition pos : positions){
                if(pos.getProduct().getProdID() == prodID){
                    pos.setQuantity(quantity);
                    break;
                }
            }
    }



public void removeProduct(int productID){
    CartPosition gettinYETTED = null; //Pointer ref
    for(CartPosition pos : positions){

        if(pos.getProduct().getProdID() == productID){
            gettinYETTED = pos;
            break; // Gefunden, abbrechnen
        }
    }
    /*
    Wenn man nach einer ID sucht und diese es nicht gibt, dann passiert nichts
    weil der Referenz pointer auf NULL zeigt.
    Wenn ID gefunden wird nach der man sucht dann wird Pointer Referent auf nicht Null
    dann ----> Call zu delete mit remove aus der List
    */


    if(gettinYETTED != null){
        positions.remove(gettinYETTED);
    }
}

    //Auto completion hat eingegriffen lol
    public boolean isEmpty(){
    return positions.isEmpty();
    }
    //Autocompl ist eig aus
    public List<CartPosition> getPositions() {
        return positions;
    }
    //wäre das autocomplete? ---> video
    public void clear(){
    positions.clear();
    }
    public double getTotalNet() {
        double sum = 0;
        for (CartPosition pos : positions) {
            sum += pos.getProduct().getNetPrice() * pos.getQuantity();
        }
        return sum;
    }
    public double getTotalGross() {
        double sum = 0;
        for (CartPosition pos : positions) {
            sum += pos.getProduct().getBruttoPrice() * pos.getQuantity();
        }
        return sum;
    }









}
