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} به پایان می رسد. ✳️ جهت مشاهده میزان ترافیک مصرفی و همچنین تاریخ انقضا سرویس، به منوی 💎 سرویس های من مراجعه نمایید.