"""
Ingress FS Google Sheets Handler
Author: Patrick Diepold
"""

import gspread
from datetime import datetime
from google.oauth2.service_account import Credentials
import os

SCOPES = ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive']

class SheetsManager:
    def __init__(self, json_key_path, spreadsheet_id):
        self.creds = Credentials.from_service_account_file(json_key_path, scopes=SCOPES)
        self.client = gspread.authorize(self.creds)
        self.sheet = self.client.open_by_key(spreadsheet_id).worksheet("Data")

    def register_or_update_agent(self, agent_name, faction, stats):
        try:
            cell = self.sheet.find(agent_name, in_column=5)
            row = cell.row
            # Update End-Werte: H=Lvl, K=AP, N=Dist
            self.sheet.update(f'H{row}', [[stats.get('Level', '')]])
            self.sheet.update(f'K{row}', [[stats.get('Lifetime AP', '')]])
            self.sheet.update(f'N{row}', [[stats.get('Distance Walked', '')]])
            return f"Stats für {agent_name} aktualisiert."
        except gspread.exceptions.CellNotFound:
            all_names = self.sheet.col_values(5)
            next_row = len(all_names) + 1
            timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            # Neu anlegen (D-M)
            new_row = [timestamp, agent_name, faction, stats.get('Level', ''), "", "", stats.get('Lifetime AP', ''), "", "", stats.get('Distance Walked', '')]
            self.sheet.update(f'D{next_row}:M{next_row}', [new_row])
            return f"Agent {agent_name} neu registriert."

    def verify_agent(self, agent_name):
        """Setzt die Checkbox in Spalte B auf TRUE."""
        try:
            cell = self.sheet.find(agent_name, in_column=5)
            # Spalte B ist Index 2
            self.sheet.update_cell(cell.row, 2, "TRUE")
            return True
        except:
            return False