84 lines
2.3 KiB
C++
84 lines
2.3 KiB
C++
/**
|
|
* @file Order.h
|
|
* @brief Hlavičkový soubor pro třídu Order.
|
|
*/
|
|
|
|
#ifndef PROOP_ORDER_H
|
|
#define PROOP_ORDER_H
|
|
#include "Customer.h"
|
|
#include "IMenuItem.h"
|
|
|
|
/**
|
|
* @class Order
|
|
* @brief Třída reprezentující objednávku zákazníka.
|
|
*
|
|
* Obsahuje dynamické pole položek a odkaz na zákazníka.
|
|
*/
|
|
class Order {
|
|
private:
|
|
IMenuItem** items; ///< Dynamické pole ukazatelů na položky objednávky
|
|
int itemCount; ///< Aktuální počet položek
|
|
int capacity; ///< Maximální kapacita objednávky
|
|
static int totalOrder; ///< Statické počítadlo všech vytvořených objednávek
|
|
Customer* customer; ///< Ukazatel na zákazníka, kterému objednávka patří
|
|
|
|
public:
|
|
/**
|
|
* @brief Konstruktor objednávky.
|
|
* @param capacity Maximální počet položek v objednávce.
|
|
* @param c Ukazatel na zákazníka.
|
|
*/
|
|
Order(int capacity, Customer * c);
|
|
|
|
/**
|
|
* @brief Destruktor. Uvolní všechny položky objednávky z paměti.
|
|
*/
|
|
~Order();
|
|
|
|
/**
|
|
* @brief Vrátí ukazatel na zákazníka.
|
|
* @return Ukazatel na objekt zákazníka.
|
|
*/
|
|
Customer* getCustomer();
|
|
|
|
/**
|
|
* @brief Přidá položku do objednávky.
|
|
* @param i Ukazatel na položku (IMenuItem).
|
|
* @return True, pokud se přidání podařilo, jinak false (plná kapacita).
|
|
*/
|
|
bool addItem(IMenuItem * i);
|
|
|
|
/**
|
|
* @brief Odebere položku z objednávky podle jména.
|
|
* @param name Název položky k odebrání.
|
|
* @return True, pokud byla položka smazána, jinak false.
|
|
*/
|
|
bool removeItem(string name);
|
|
|
|
/**
|
|
* @brief Vypočítá celkovou cenu všech položek.
|
|
* @return Součet cen položek v objednávce.
|
|
*/
|
|
double calculateTotal();
|
|
|
|
/**
|
|
* @brief Získá celkový historický počet vytvořených objednávek napříč programem.
|
|
* @return Počet objednávek (statická proměnná).
|
|
*/
|
|
static int getTotaOrders();
|
|
|
|
/**
|
|
* @brief Získá aktuální počet položek v objednávce.
|
|
* @return Počet položek.
|
|
*/
|
|
int getItemCount() const;
|
|
|
|
/**
|
|
* @brief Získá konkrétní položku podle indexu.
|
|
* @param index Pozice položky v poli.
|
|
* @return Ukazatel na položku, nebo nullptr pokud je index neplatný.
|
|
*/
|
|
IMenuItem* getItem(int index) const;
|
|
};
|
|
|
|
#endif //PROOP_ORDER_H
|