#!/usr/bin/env python3
"""Apply batch updates from JSON file"""

import csv
import json
import sys
from datetime import datetime

def load_facilities():
    with open('verified-scored-facilities.csv', 'r', encoding='utf-8') as f:
        return list(csv.DictReader(f))

def save_facilities(facilities):
    timestamp = datetime.now().strftime('%Y%m%d-%H%M%S')
    backup = f'verified-scored-facilities-BACKUP-{timestamp}.csv'
    
    with open('verified-scored-facilities.csv', 'r') as f:
        with open(backup, 'w') as bf:
            bf.write(f.read())
    
    fieldnames = facilities[0].keys()
    with open('verified-scored-facilities.csv', 'w', encoding='utf-8', newline='') as f:
        writer = csv.DictWriter(f, fieldnames=fieldnames)
        writer.writeheader()
        writer.writerows(facilities)
    
    return backup

def apply_updates(facilities, updates_file='batch-updates.json'):
    with open(updates_file, 'r') as f:
        updates_list = json.load(f)
    
    updated_count = 0
    
    for update_entry in updates_list:
        company = update_entry['company']
        region = update_entry['region']
        updates = update_entry['updates']
        
        # Find matching facility
        for facility in facilities:
            if (facility['Company'].strip().lower() == company.strip().lower() or
                company.lower() in facility['Company'].lower() or
                facility['Company'].lower() in company.lower()):
                if region.lower() in facility['Region'].lower() or facility['Region'].lower() in region.lower():
                    
                    # Apply updates
                    for key, value in updates.items():
                        facility[key] = value
                    
                    print(f"✓ Updated: {facility['Company']} ({facility['Region']})")
                    updated_count += 1
                    break
    
    return updated_count

# Execute
updates_file = sys.argv[1] if len(sys.argv) > 1 else 'batch-updates.json'
facilities = load_facilities()
count = apply_updates(facilities, updates_file)
print(f"\n{'='*60}")
print(f"Updated {count} facilities from {updates_file}")

if count > 0:
    backup = save_facilities(facilities)
    print(f"Saved to CSV. Backup: {backup}")
    
    # Show new stats
    verified = sum(1 for f in facilities if f['Confidence Level'] == 'Verified')
    total = len(facilities)
    print(f"\n🎯 NEW STATUS: {verified}/{total} Verified ({verified/total*100:.1f}%)")
