import csv
import datetime
import os

def main():
    csv_path = os.path.join(os.path.dirname(__file__), 'decisions.csv')
    if not os.path.exists(csv_path):
        print(f"Error: decisions.csv not found at {csv_path}")
        return

    today = datetime.date.today()
    updated = False
    rows = []
    
    with open(csv_path, 'r', newline='', encoding='utf-8') as f:
        reader = csv.reader(f)
        try:
            headers = next(reader)
        except StopIteration:
            print("Error: decisions.csv is empty")
            return
            
        rows.append(headers)
        
        # Map headers
        try:
            review_date_idx = headers.index('Review Date')
            status_idx = headers.index('Status')
        except ValueError as e:
            print(f"Error: missing expected header column in decisions.csv: {e}")
            return
        
        for row in reader:
            if len(row) > review_date_idx:
                review_date_str = row[review_date_idx].strip()
                try:
                    review_date = datetime.datetime.strptime(review_date_str, '%Y-%m-%d').date()
                    if review_date <= today:
                        # Ensure row is padded to match status index
                        while len(row) <= status_idx:
                            row.append('')
                        
                        if row[status_idx].strip() != 'REVIEW DUE':
                            row[status_idx] = 'REVIEW DUE'
                            updated = True
                            print(f"🔔 [REVIEW DUE] Decision '{row[1]}' has reached its review date ({review_date_str}).")
                except ValueError:
                    # Ignore rows with empty or malformed dates
                    pass
            rows.append(row)
            
    if updated:
        with open(csv_path, 'w', newline='', encoding='utf-8') as f:
            writer = csv.writer(f)
            writer.writerows(rows)
        print("Updated decisions.csv successfully.")
    else:
        print("All decisions are up to date. No new reviews due today.")

if __name__ == '__main__':
    main()
