#!/usr/bin/env python3
"""
Extract April and May 2026 events from the calendar images
"""

import pandas as pd
from datetime import datetime
import os

def extract_april_2026_events():
    """
    Extract April 2026 events from the calendar image
    """
    
    # April 2026 events - extracted from the calendar image
    april_events = {
        '2026-04-01': 'JOINT CAPTAINS DAY',
        '2026-04-03': 'EPIC LADIES Q',
        '2026-04-04': 'MENS 60 TEES LADIES 52\'S, JOINT CAPTAINS DINNER/DANCE',
        '2026-04-05': 'SCRAMBLE',
        '2026-04-06': 'EPIC LADIES Alliance Team (a.m), MENS Invitation Day',
        '2026-04-08': 'PAIRS SCRAMBLE. (OWN PARTNER), Men\'s Away Trip',
        '2026-04-09': 'Men\'s Away Trip',
        '2026-04-10': 'EPIC LADIES MEN, Men\'s Away Trip',
        '2026-04-11': 'MENS 60 TEES LADIES 52\'S, Men\'s Away Trip',
        '2026-04-12': 'SCRAMBLE',
        '2026-04-13': 'EPIC LADIES (p.m) Waltz (draw), MEN (a.m)',
        '2026-04-14': 'Ladies Away Trip',
        '2026-04-15': 'Ladies Away Trip',
        '2026-04-16': 'Ladies Away Trip',
        '2026-04-17': 'EPIC LADIES MEN',
        '2026-04-18': 'MENS 60 TEES LADIES 52\'S',
        '2026-04-19': 'SCRAMBLE',
        '2026-04-20': 'EPIC - Q LADIES Q-Ladies Spring Meeting (a.m), MEN (p.m)',
        '2026-04-22': 'ST GEORGES DAY. PAIRS BETTER BALL. (OWN PARTNER)',
        '2026-04-24': 'EPIC LADIES MEN',
        '2026-04-25': 'MENS 60 TEES LADIES 52\'S',
        '2026-04-26': 'SCRAMBLE',
        '2026-04-27': 'SPRING TEAM WEEK',
        '2026-04-28': 'SPRING TEAM WEEK',
        '2026-04-29': 'AGM',
        '2026-04-30': 'SPRING TEAM WEEK',
    }
    
    return april_events

def extract_may_2026_events():
    """
    Extract May 2026 events from the calendar image
    """
    
    # May 2026 events - extracted from the calendar image
    may_events = {
        '2026-05-01': 'SPRING TEAM WEEK',
        '2026-05-03': 'JOINT CAPTAINS DRIVE-IN. SHOTGUN START + LUNCH. PAIRS BETTERBALL.',
        '2026-05-04': 'EPIC LADIES - AMAM Draw (a.m), MEN - Q (p.m)',
        '2026-05-06': 'SHAREHOLDER TROPHY. STABLEFORD QUALIFIER',
        '2026-05-08': 'EPIC LADIES - Q MEN',
        '2026-05-09': 'PAST CAPTAINS TROPHY',
        '2026-05-10': 'SCRAMBLE',
        '2026-05-11': 'EPIC LADIES (p.m), AMAM MEN (a.m)',
        '2026-05-13': 'VETERANS AND SENIORS TROPHY (LADIES + MEN)',
        '2026-05-15': 'EPIC LADIES MEN',
        '2026-05-16': 'MENS 60 TEES LADIES 52\'S',
        '2026-05-17': 'SCRAMBLE',
        '2026-05-18': 'EPIC - Q LADIES - Jack Newman Trophy - Q (a.m), MEN (p.m)',
        '2026-05-20': 'MATCHPLAY',
        '2026-05-22': 'EPIC LADIES MEN',
        '2026-05-23': 'MENS 60 TEES LADIES 52\'S',
        '2026-05-24': 'SCRAMBLE',
        '2026-05-25': 'EPIC LADIES Shambles Draw (a.m), MEN (p.m)',
        '2026-05-27': 'MEDAL STABLEFORD 9-HOLE QUALIFIERS',
        '2026-05-29': 'EPIC LADIES MEN',
        '2026-05-30': 'ANDALUCIAN DUTCH OPEN',
        '2026-05-31': 'ANDALUCIAN DUTCH OPEN',
    }
    
    return may_events

def categorize_april_events():
    """
    Categorize April events by type
    """
    event_types = {}
    
    april_events = extract_april_2026_events()
    
    for date, event_name in april_events.items():
        if 'SCRAMBLE' in event_name:
            event_types[date] = 'Regular Event'
        elif 'EPIC' in event_name:
            event_types[date] = 'Regular Event'
        elif 'MENS' in event_name and 'LADIES' in event_name:
            event_types[date] = 'Regular Event'
        elif 'CAPTAINS' in event_name:
            event_types[date] = 'Special Event'
        elif 'AWAY TRIP' in event_name:
            event_types[date] = 'Away Trip'
        elif 'SPRING TEAM WEEK' in event_name:
            event_types[date] = 'Team Event'
        elif 'AGM' in event_name:
            event_types[date] = 'Meeting'
        elif 'ST GEORGES' in event_name:
            event_types[date] = 'Special Event'
        else:
            event_types[date] = 'Regular Event'
    
    return event_types

def categorize_may_events():
    """
    Categorize May events by type
    """
    event_types = {}
    
    may_events = extract_may_2026_events()
    
    for date, event_name in may_events.items():
        if 'SCRAMBLE' in event_name:
            event_types[date] = 'Regular Event'
        elif 'EPIC' in event_name:
            event_types[date] = 'Regular Event'
        elif 'MENS' in event_name and 'LADIES' in event_name:
            event_types[date] = 'Regular Event'
        elif 'TROPHY' in event_name:
            event_types[date] = 'Tournament'
        elif 'MATCHPLAY' in event_name:
            event_types[date] = 'Match Play'
        elif 'STABLEFORD' in event_name or 'QUALIFIER' in event_name:
            event_types[date] = 'Qualifier'
        elif 'ANDALUCIAN' in event_name:
            event_types[date] = 'Special Event'
        elif 'SPRING TEAM WEEK' in event_name:
            event_types[date] = 'Team Event'
        else:
            event_types[date] = 'Regular Event'
    
    return event_types

def update_calendar_with_april_may():
    """
    Update the calendar with April and May events
    """
    
    # Get April and May events and types
    april_events = extract_april_2026_events()
    may_events = extract_may_2026_events()
    april_types = categorize_april_events()
    may_types = categorize_may_events()
    
    # Read existing calendar
    calendar_file = '/var/www/html/wordpress6/wordpress/EP/2026_CALENDAR_WITH_MARCH.xlsx'
    
    try:
        # Read the main calendar sheet
        df = pd.read_excel(calendar_file, sheet_name='Full Calendar')
        
        # Update with April events
        for date, event_name in april_events.items():
            mask = df['Date'] == date
            df.loc[mask, 'Event Name'] = event_name
            if date in april_types:
                df.loc[mask, 'Event Type'] = april_types[date]
        
        # Update with May events
        for date, event_name in may_events.items():
            mask = df['Date'] == date
            df.loc[mask, 'Event Name'] = event_name
            if date in may_types:
                df.loc[mask, 'Event Type'] = may_types[date]
        
        # Save updated calendar
        output_file = '/var/www/html/wordpress6/wordpress/EP/2026_CALENDAR_WITH_APRIL_MAY.xlsx'
        
        with pd.ExcelWriter(output_file, engine='openpyxl') as writer:
            # Main calendar sheet
            df.to_excel(writer, sheet_name='Full Calendar', index=False)
            
            # Create individual month sheets
            months = ['January', 'February', 'March', 'April', 'May', 'June',
                     'July', 'August', 'September', 'October', 'November', 'December']
            
            for month in months:
                month_data = df[df['Month'] == month].copy()
                month_data.to_excel(writer, sheet_name=month, index=False)
            
            # Create summary sheet
            summary_data = []
            for month in months:
                month_events = df[df['Month'] == month]
                events_count = len(month_events[month_events['Event Name'] != ''])
                summary_data.append({
                    'Month': month,
                    'Total Days': len(month_events),
                    'Events Scheduled': events_count,
                    'Days Available': len(month_events) - events_count,
                    'Event Percentage': f"{(events_count/len(month_events)*100):.1f}%"
                })
            
            summary_df = pd.DataFrame(summary_data)
            summary_df.to_excel(writer, sheet_name='Summary', index=False)
        
        print(f"Calendar updated with April and May events: {output_file}")
        print(f"April events added: {len(april_events)}")
        print(f"May events added: {len(may_events)}")
        
        return output_file
        
    except Exception as e:
        print(f"Error updating calendar: {e}")
        return None

if __name__ == "__main__":
    print("Extracting April and May 2026 events...")
    
    # Extract April and May events
    april_events = extract_april_2026_events()
    may_events = extract_may_2026_events()
    print(f"April events extracted: {len(april_events)}")
    print(f"May events extracted: {len(may_events)}")
    
    # Update calendar
    updated_file = update_calendar_with_april_may()
    
    if updated_file:
        print(f"\n✅ SUCCESS!")
        print(f"Updated calendar: {updated_file}")
        print("\nApril 2026 events added:")
        for date, event in april_events.items():
            print(f"  {date}: {event}")
        
        print("\nMay 2026 events added:")
        for date, event in may_events.items():
            print(f"  {date}: {event}")
        
        print(f"\nTotal April events: {len(april_events)}")
        print(f"Total May events: {len(may_events)}")
        print("\nNext: Ready to extract June 2026 events")
    else:
        print("❌ Error updating calendar")


