import uuid

from celery import shared_task
from django.utils import timezone

from .models import Settlement

@shared_task
def process_due_settlements():
    """
    Finds all 'pending' settlements whose scheduled_for date is today or earlier.
    Mocks processing the payment to the hotel and updates the status to 'processed'.
    """
    today = timezone.now().date()
    due_settlements = Settlement.objects.filter(
        status='pending',
        scheduled_for__lte=today
    )

    processed_count = 0
    for settlement in due_settlements:
        # Here we would normally call a Payment Gateway API (like Stripe Connect or Razorpay Route)
        # to transfer `settlement.settlement_amount` to the hotel's bank account.
        
        # MOCK SUCCESS
        settlement.status = 'processed'
        settlement.processed_at = timezone.now()
        settlement.transaction_id = f"SETT-{uuid.uuid4().hex[:12].upper()}"
        settlement.save()
        processed_count += 1

    return f"Processed {processed_count} settlements."
