#pragma once
#include "../../repository/FileRepository.h"
#include "../../domain/trench.h"
#include <vector>
#include <memory>

class UserController {
private:
    std::shared_ptr<FileRepository> _repo;
    std::shared_ptr<FileRepository> _shoppingRepository;
public:



    /*
    * Constructor for the UserController class
    * Input: repo - Repository object
    * Output: userController object
    */
    UserController(std::shared_ptr<FileRepository> repo,std::shared_ptr<FileRepository> shoppingRepo);

    /*
    * 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);    

    /*
    * 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
    */
    std::vector<Trench> getTrenchCarousel(int size);

    void openShoppingList();

};