import os
import sys

sys.path.append(os.path.dirname(os.path.abspath(__file__)))
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'hotelfinder.settings')

import django
django.setup()

from hotel.models import RoomTypeAvailability, RoomType, HotelBooking
from datetime import timedelta

print("Fixing RoomTypeAvailability...")

for rt in RoomType.objects.all():
    print(f"Processing {rt.name} (Total: {rt.total_rooms})...")
    
    # Get all availabilities
    avails = RoomTypeAvailability.objects.filter(room_type=rt)
    # Get all confirmed/pending bookings
    bookings = HotelBooking.objects.filter(room_type=rt, status__in=['pending', 'confirmed'])
    
    for a in avails:
        date = a.date
        # Count rooms booked on this date
        booked_rooms = 0
        for b in bookings:
            # check_in inclusive, check_out exclusive
            if b.check_in <= date < b.check_out:
                booked_rooms += b.rooms_booked
        
        correct_avail = rt.total_rooms - booked_rooms
        if a.available_rooms != correct_avail:
            print(f"  Fixing {date}: {a.available_rooms} -> {correct_avail}")
            a.available_rooms = correct_avail
            a.save()
            
print("Done fixing availability.")
