NOJIRA more restructuring

This commit is contained in:
2021-09-15 16:34:29 +02:00
parent 5aed069992
commit afc542aecb
13 changed files with 50 additions and 28 deletions

34
src/models/dto.py Normal file
View File

@@ -0,0 +1,34 @@
from typing import List, Dict
from models.item import Item
from models.order import Order
class DTO:
def __init__(self):
self.__applicants: List[str] = []
self.__items: Dict[str, int] = {}
self.__orders: List[Order] = []
def add(self, applicant_name: str, item_names: List[str]):
self.__applicants.append(applicant_name)
for item_name in item_names:
if item_name not in self.__items:
self.__items[item_name] = 0
self.__items[item_name] += 1
order = Order(applicant_name, item_names)
self.__orders.append(order)
@property
def items(self) -> List[Item]:
return sorted([Item(name, amount) for name, amount in self.__items.items()])
@property
def applicants(self) -> List[str]:
return sorted(self.__applicants)
@property
def orders(self) -> List[Order]:
return sorted(self.__orders)

13
src/models/item.py Normal file
View File

@@ -0,0 +1,13 @@
class Item:
def __init__(self, name: str, amount: int):
assert name == name.lower()
self.name = name
self.amount = amount
self.__contains_fries = 'friet' in self.name or 'twister' in self.name
def __lt__(self: "Item", other: "Item") -> bool:
if self.__contains_fries and not other.__contains_fries:
return True
if not self.__contains_fries and other.__contains_fries:
return False
return self.name < other.name

10
src/models/order.py Normal file
View File

@@ -0,0 +1,10 @@
from typing import List
class Order:
def __init__(self, name: str, items: List[str]):
self.name = name
self.items = items
def __lt__(self: "Order", other: "Order") -> bool:
return self.name < other.name