From 06fd65156cc73a47f6b60b5eb35e09d3eceeb836 Mon Sep 17 00:00:00 2001
From: Elora VPN <125687916+eloravpn@users.noreply.github.com>
Date: Mon, 6 Jan 2025 23:36:04 +0330
Subject: [PATCH] Fix bugs account management (#72)
* Fix bug on create and modify Payment Account
* Improve notification on account expiration
---
src/commerce/router.py | 14 ++++++++++----
src/commerce/service.py | 6 ++++--
src/jobs/account_jobs.py | 2 ++
src/jobs/notification_jobs.py | 2 ++
src/telegram/user/messages.py | 6 +++---
5 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/src/commerce/router.py b/src/commerce/router.py
index 6125e09..6bff536 100644
--- a/src/commerce/router.py
+++ b/src/commerce/router.py
@@ -43,9 +43,9 @@
transaction_router = APIRouter()
payment_account_router = APIRouter()
-
logger = logging.getLogger("uvicorn.error")
+
# Order Routes
@@ -186,7 +186,6 @@ def add_service(
db: Session = Depends(get_db),
admin: Admin = Depends(Admin.get_current),
):
-
try:
db_service = commerce_service.create_service(db=db, service=service)
except IntegrityError as error:
@@ -550,12 +549,19 @@ def get_transactions(
"/payment-accounts/", tags=["PaymentAccount"], response_model=PaymentAccountResponse
)
def add_payment_account(
- account: PaymentAccountCreate,
+ payment_account: PaymentAccountCreate,
db: Session = Depends(get_db),
admin: Admin = Depends(Admin.get_current),
):
+ db_user = user_service.get_user(db, payment_account.user_id)
+
+ if not db_user:
+ raise HTTPException(status_code=404, detail="User not found")
+
try:
- db_account = commerce_service.create_payment_account(db=db, account=account)
+ db_account = commerce_service.create_payment_account(
+ db=db, account=payment_account, db_user=db_user
+ )
except IntegrityError:
raise HTTPException(status_code=409, detail="Payment account already exists")
diff --git a/src/commerce/service.py b/src/commerce/service.py
index c7466b2..fdf6218 100644
--- a/src/commerce/service.py
+++ b/src/commerce/service.py
@@ -739,11 +739,13 @@ def _get_query_result(limit, offset, query, return_with_count, sort):
return query.all()
-def create_payment_account(db: Session, account: PaymentAccountCreate):
+def create_payment_account(db: Session, account: PaymentAccountCreate, db_user: User):
db_account = PaymentAccount(
- user_id=account.user_id,
+ user_id=db_user.id,
card_number=account.card_number,
account_number=account.account_number,
+ bank_name=account.bank_name,
+ shaba=account.shaba,
owner_name=account.owner_name,
owner_family=account.owner_family,
enable=account.enable,
diff --git a/src/jobs/account_jobs.py b/src/jobs/account_jobs.py
index 6a9b576..7c3c42f 100644
--- a/src/jobs/account_jobs.py
+++ b/src/jobs/account_jobs.py
@@ -620,6 +620,7 @@ def review_accounts():
db_user=account.user,
message=messages.USER_NOTIFICATION_ACCOUNT_EXPIRED.format(
id=account.email,
+ service_title=account.service_title,
due=captions.EXPIRE_TIME,
),
type_=NotificationType.account,
@@ -642,6 +643,7 @@ def review_accounts():
db_user=account.user,
message=messages.USER_NOTIFICATION_ACCOUNT_EXPIRED.format(
id=account.email,
+ service_title=account.service_title,
due=captions.EXCEEDED_DATA_LIMIT,
),
type_=NotificationType.account,
diff --git a/src/jobs/notification_jobs.py b/src/jobs/notification_jobs.py
index 641dae2..f267134 100644
--- a/src/jobs/notification_jobs.py
+++ b/src/jobs/notification_jobs.py
@@ -71,6 +71,7 @@ def percent_used_traffic_notification_job(min_percent: int, max_percent: int):
message=messages.USED_TRAFFIC_NOTIFICATION.format(
admin_id=config.TELEGRAM_ADMIN_USER_NAME,
account_email=account.email,
+ service_title=account.service_title,
used_traffic_percent=min_percent,
),
level=level.value,
@@ -118,6 +119,7 @@ def days_to_expire_notification_job(min_days: int, max_days: int):
notification=NotificationCreate(
user_id=account.user.id,
message=messages.EXPIRE_TIME_NOTIFICATION.format(
+ service_title=account.service_title,
account_email=account.email,
days=max_days,
),
diff --git a/src/telegram/user/messages.py b/src/telegram/user/messages.py
index cd1b6d0..fc058c4 100644
--- a/src/telegram/user/messages.py
+++ b/src/telegram/user/messages.py
@@ -273,7 +273,7 @@
"""
USER_NOTIFICATION_ACCOUNT_EXPIRED = """
-سرویس شما با شناسه {id} بدلیل {due} منقضی شد.
+سرویس {service_title} شما با شناسه {id} بدلیل {due} منقضی شد.
✴️ جهت شارژ مجدد سرویس می توانید از طریق منوی 🛍 خرید سرویس اقدام نمایید.
"""
@@ -286,7 +286,7 @@
"""
USED_TRAFFIC_NOTIFICATION = """
-⚠️ شما تا این لحظه بیش از {used_traffic_percent} درصد از ترافیک سرویس یا شناسه {account_email} را مصرف نموده اید.
+⚠️ شما تا این لحظه بیش از {used_traffic_percent} درصد از ترافیک سرویس {service_title} یا شناسه {account_email} را مصرف نموده اید.
✳️ جهت مشاهده میزان ترافیک مصرفی و همچنین تاریخ انقضا سرویس، به منوی 💎 سرویس های من مراجعه نمایید.
@@ -296,7 +296,7 @@
"""
EXPIRE_TIME_NOTIFICATION = """
-⚠️ کمتر از {days} روز دیگر زمان اعتبار سرویس شما با شناسه {account_email} به پایان می رسد.
+⚠️ کمتر از {days} روز دیگر زمان اعتبار سرویس {service_title} شما با شناسه {account_email} به پایان می رسد.
✳️ جهت مشاهده میزان ترافیک مصرفی و همچنین تاریخ انقضا سرویس، به منوی 💎 سرویس های من مراجعه نمایید.