#pragma once
#include "../../repository/repository.h"
#include "../../domain/trench.h"
#include "../../vector/vector.h"

class UserController {
private:
    Repository* _repo;
    Repository* _shoppingRepository;
public:

    /*
    * Constructor for the UserController class
    * Input: repo - Repository object
    * Output: userController object
    */
    UserController(Repository* repo,Repository* shoppingRepository);

    /*
    * Destructor for the UserController class
    * Input: -
    * Output: -
    */
    ~UserController();

    /*
    * Adds a trench coat to the shopping list
    * Input: trench - Trench object
    * Output: -
    */
    void addProductToShoppingList(Trench* trench);    

    /*
    * Empties the shopping list
    * Input: -
    * Output: -
    */
    void emptyShoppingList();

    /*
    * Buys the shopping list
    * Input: -
    * Output: -
    */
    void buyShoppingList();

    /*
    * Returns the total price of the shopping list
    * Input: -
    * Output: total - integer
    */
    int shoppingListTotal();


    /*
    * Returns a vector of trench coats that are in the shopping list
    * Input: size - integer
    * Output: trenchCarousel - Vector<Trench*> object
    */
    Vector<Trench*> getTrenchCarousel(int size);

    Vector<Trench*> getShoppingListTrench();
};