diff --git a/core/apps/orders/serializers/order.py b/core/apps/orders/serializers/order.py index 33d5a32..13302a8 100644 --- a/core/apps/orders/serializers/order.py +++ b/core/apps/orders/serializers/order.py @@ -7,7 +7,7 @@ from rest_framework import serializers from core.apps.orders.models import Order, OrderItem from core.apps.products.models import Product from core.apps.products.serializers.product import ProductListSerializer -from core.apps.orders.tasks.order_item import send_orders_to_tg_bot +from core.apps.orders.tasks.order_item import send_orders_to_tg_bot, send_message_order_user class OrderItemCreateSerializer(serializers.Serializer): @@ -59,6 +59,10 @@ class OrderCreateSerializer(serializers.Serializer): quantity=item.get('quantity'), username=order.user.username, ) + send_message_order_user.delay( + chat_id=order.user.tg_id, + order_id=order.id, + ) OrderItem.objects.bulk_create(items) order.total_price = total_price diff --git a/core/apps/orders/tasks/order_item.py b/core/apps/orders/tasks/order_item.py index 66150aa..4985643 100644 --- a/core/apps/orders/tasks/order_item.py +++ b/core/apps/orders/tasks/order_item.py @@ -1,7 +1,7 @@ import requests from celery import shared_task -from core.apps.orders.models import OrderItem +from core.apps.orders.models import OrderItem, Order from config.env import env token = env.str("BOT_TOKEN") @@ -22,3 +22,31 @@ def send_orders_to_tg_bot(chat_id, product_name, quantity, username): response = requests.post(url, data=payload) return response.json() + +@shared_task +def send_message_order_user(chat_id, order_id): + url = f"https://api.telegram.org/bot{token}/sendMessage" + order = Order.objects.get(id=order_id) + result = [] + for order_item in order.items.all(): + product_name = order_item.product.name + unit = order_item.product.unity.name + quantity = order_item.quantity + price = order_item.price + + result.append(f"πŸ”Ή {product_name} {unit} ({quantity} x {price:.2f})") + + message = ( + f'⚑️ ΠžΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Π·Π°ΠΊΠ°Π·\n\n' + + f"Π‘ΡƒΠΌΠΌΠ° Π·Π°ΠΊΠ°Π·Π° β„–{order.order_number}: {order.total_price}\n\n" + + f"{result}" + ) + + payload = { + "chat_id": chat_id, + "text": message + } + response = requests.post(url, data=payload) + return response.json()