Files
OOP_projekt_franc/Order.cpp
T
2026-05-04 14:52:32 +02:00

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;
}