From d2c9ceea52f656ff121f3de844c5ae8d2642f812 Mon Sep 17 00:00:00 2001 From: KKlochko Date: Tue, 20 Jun 2023 21:06:48 +0300 Subject: [PATCH] Add CartItemFormatter to show cart items. --- src/fmt/cart_item_formatter.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/fmt/cart_item_formatter.py diff --git a/src/fmt/cart_item_formatter.py b/src/fmt/cart_item_formatter.py new file mode 100644 index 0000000..bc2c2ba --- /dev/null +++ b/src/fmt/cart_item_formatter.py @@ -0,0 +1,32 @@ +from src.fmt.abstract_formatter import AbstractFormatter + +class CartItemFormatter(AbstractFormatter): + def format(self, item) -> str: + fmt, _ = self.format_and_sum(item) + + return fmt + + def format_and_sum(self, item) -> (str, float): + name = item['name'] + price = float(item['price']) + count = float(item['count']) + total_price = price*count + + return f"- {name} {count}x{price} ₴\n", total_price + + def format_all(self, items: dict, header: str = "# Кошик\n\n") -> str: + total_sum = 0 + + formated_message = header + + items = items['data'] if 'data' in items else items + + for item in items: + formated_item, item_sum = self.format_and_sum(item) + formated_message += formated_item + total_sum += item_sum + + formated_message += f"#### Сума: {total_sum} ₴" + + return formated_message +