Adding more shit
This commit is contained in:
@@ -4,11 +4,12 @@ from typing import List
|
||||
from datetime import date, timedelta
|
||||
|
||||
from ...core.database import get_db
|
||||
from ...models.models import Membership, MembershipStatus, User, MembershipTier
|
||||
from ...models.models import Membership, MembershipStatus, User, MembershipTier, Payment, PaymentStatus
|
||||
from ...schemas import (
|
||||
MembershipCreate, MembershipUpdate, MembershipResponse, MessageResponse
|
||||
)
|
||||
from ...api.dependencies import get_current_active_user, get_admin_user
|
||||
from ...services.email_service import email_service
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -112,6 +113,11 @@ async def update_membership(
|
||||
)
|
||||
|
||||
update_data = membership_update.model_dump(exclude_unset=True)
|
||||
was_activated = False
|
||||
|
||||
# Check if status is being changed to ACTIVE
|
||||
if update_data.get("status") == MembershipStatus.ACTIVE and membership.status != MembershipStatus.ACTIVE:
|
||||
was_activated = True
|
||||
|
||||
for field, value in update_data.items():
|
||||
setattr(membership, field, value)
|
||||
@@ -119,6 +125,32 @@ async def update_membership(
|
||||
db.commit()
|
||||
db.refresh(membership)
|
||||
|
||||
# Send activation email if membership was just activated
|
||||
if was_activated:
|
||||
try:
|
||||
# Get the most recent payment for this membership
|
||||
recent_payment = db.query(Payment).filter(
|
||||
Payment.membership_id == membership.id,
|
||||
Payment.status == PaymentStatus.COMPLETED
|
||||
).order_by(Payment.payment_date.desc()).first()
|
||||
|
||||
payment_amount = recent_payment.amount if recent_payment else membership.tier.annual_fee
|
||||
payment_method = recent_payment.payment_method.value if recent_payment else "N/A"
|
||||
|
||||
# Send activation email (non-blocking)
|
||||
await email_service.send_membership_activation_email(
|
||||
to_email=membership.user.email,
|
||||
first_name=membership.user.first_name,
|
||||
membership_tier=membership.tier.name,
|
||||
annual_fee=membership.tier.annual_fee,
|
||||
payment_amount=payment_amount,
|
||||
payment_method=payment_method,
|
||||
renewal_date=membership.end_date.strftime("%d %B %Y")
|
||||
)
|
||||
except Exception as e:
|
||||
# Log error but don't fail the membership update
|
||||
print(f"Failed to send membership activation email: {e}")
|
||||
|
||||
return membership
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user