30 lines
1.0 KiB
Python
30 lines
1.0 KiB
Python
from sqlalchemy.orm import Session
|
|
from datetime import datetime, timedelta
|
|
from tg_bot.infrastructure.database.models import UserModel
|
|
|
|
|
|
class UserService:
|
|
|
|
def __init__(self, session: Session):
|
|
self.session = session
|
|
|
|
async def activate_premium(self, telegram_id: int) -> bool:
|
|
try:
|
|
user = self.session.query(UserModel) \
|
|
.filter(UserModel.telegram_id == str(telegram_id)) \
|
|
.first()
|
|
if user:
|
|
user.is_premium = True
|
|
if user.premium_until and user.premium_until > datetime.now():
|
|
user.premium_until = user.premium_until + timedelta(days=30)
|
|
else:
|
|
user.premium_until = datetime.now() + timedelta(days=30)
|
|
self.session.commit()
|
|
return True
|
|
else:
|
|
return False
|
|
except Exception as e:
|
|
print(f"Error activating premium: {e}")
|
|
self.session.rollback()
|
|
return False
|