66 lines
1.4 KiB
C++
66 lines
1.4 KiB
C++
|
|
//
|
||
|
|
// Created by Franc on 04.05.2026.
|
||
|
|
//
|
||
|
|
|
||
|
|
#include "Order.h"
|
||
|
|
int Order::totalOrder=0;
|
||
|
|
Order::Order(int capacity, Customer * c) {
|
||
|
|
this->capacity = capacity;
|
||
|
|
items = new IMenuItem*[capacity](nullptr);
|
||
|
|
this->customer = c;
|
||
|
|
this->itemCount = 0;
|
||
|
|
totalOrder++;
|
||
|
|
}
|
||
|
|
Order::~Order() {
|
||
|
|
for (int i = 0; i < itemCount; i++) {
|
||
|
|
delete items[i];
|
||
|
|
}
|
||
|
|
delete[] items;
|
||
|
|
totalOrder--;
|
||
|
|
}
|
||
|
|
|
||
|
|
bool Order::addItem(IMenuItem * i) {
|
||
|
|
if (itemCount >= capacity)
|
||
|
|
return false;
|
||
|
|
items[itemCount++] = i;
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
bool Order::removeItem(string name) {
|
||
|
|
for (int i=0; i<capacity; i++) {
|
||
|
|
if (items[i]->getName() == name) {
|
||
|
|
delete items[i];
|
||
|
|
for (int j=i; j<capacity-1; j++) {
|
||
|
|
items[j] = items[j+1];
|
||
|
|
}
|
||
|
|
itemCount--;
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return false;
|
||
|
|
}
|
||
|
|
double Order::calculateTotal() {
|
||
|
|
double amount=0;
|
||
|
|
for (int i=0; i<itemCount; i++) {
|
||
|
|
amount += items[i]->getPrice();
|
||
|
|
}
|
||
|
|
return amount;
|
||
|
|
}
|
||
|
|
int Order::getTotaOrders() {
|
||
|
|
return totalOrder;
|
||
|
|
}
|
||
|
|
|
||
|
|
int Order::getItemCount() const {
|
||
|
|
return itemCount;
|
||
|
|
}
|
||
|
|
|
||
|
|
IMenuItem* Order::getItem(int index) const {
|
||
|
|
// Bezpečnostní kontrola, abychom nečetli mimo pole
|
||
|
|
if (index >= 0 && index < itemCount) {
|
||
|
|
return items[index];
|
||
|
|
}
|
||
|
|
return nullptr;
|
||
|
|
}
|
||
|
|
|
||
|
|
Customer * Order::getCustomer() {
|
||
|
|
return customer;
|
||
|
|
}
|