import json
from supabase import create_client, Client
import boto3
from email_service import email_service
import traceback

# Initialize AWS SSM client
ssm = boto3.client('ssm')
def get_parameter(name):
    """Get a parameter from AWS SSM Parameter Store"""
    response = ssm.get_parameter(
        Name=name,
        WithDecryption=True
    )
    return response['Parameter']['Value']

def lambda_handler(event, context):
    # Initialize Supabase client 
    url: str = get_parameter('/supabase/url')
    key: str = get_parameter('/supabase/anon')
    
    supabase: Client = create_client(url, key)
    date = event['week_start_date']

    try:
        # Call the RPC function
        supabase.rpc('update_task_status_with_temp', {
            date
        }).execute()

        # Send success email
        email_id = email_service.send_notification(
            date=date,
            status='success',
            client_email=False,
            process_name='Task Status Update'
        )
        
        return {
            'statusCode': 200,
            'body': json.dumps({
                'message': 'success',
                'email_id': email_id
            })
        }
        
    except Exception as e:
        error_message = f"Error Type: {type(e).__name__}\nError Message: {str(e)}\n\nStack Trace:\n{traceback.format_exc()}"
        # Send error email
        email_id = email_service.send_notification(
            date=date,
            status='error',
            error_message=error_message,
            client_email=False,
            process_name='Task Status Update'
        )
        
        return {
            'statusCode': 500,
            'body': json.dumps({
                'message': 'error',
                'error': str(e),
                'email_id': email_id
            })
        }
