# File: /Users/bpa/ForesixaQuant/local_payment_server.py
import http.server
import socketserver
import json
import os
from datetime import datetime, timezone
from log_payments import QzoticTransactionLedger

PORT = 8080

class SovereignPaymentListener(http.server.BaseHTTPRequestHandler):
    def __init__(self, *args, **kwargs):
        self.ledger = QzoticTransactionLedger()
        super().__init__(*args, **kwargs)

    def do_POST(self):
        content_length = int(self.headers['Content-Length'])
        post_data = self.rfile.read(content_length)
        
        try:
            payload = json.loads(post_data.decode('utf-8'))
            txn_id = payload.get("transaction_id")
            scope = payload.get("customer_scope", "UNKNOWN_CLIENT")
            cents = payload.get("amount_cents", 0)
            currency = payload.get("currency_marker", "USD")
            status = payload.get("payment_status", "PENDING")
            
            print("\n============================================================")
            print("     LUCXIA SANDBOX: INCOMING TRANSACTION INTERCEPTED       ")
            print("============================================================")
            print(f" [INFO] Local Server Intercept Time : {datetime.now(timezone.utc).isoformat()}")
            
            # Commit the record transactionally straight into the sqlite file
            db_write_success = self.ledger.commit_verified_payment_record(txn_id, scope, cents, currency, status)
            
            self.send_response(200 if db_write_success else 400)
            self.send_header("Content-Type", "application/json")
            self.end_headers()
            
            response_payload = {"status": "SUCCESS" if db_write_success else "RECORD_REJECTED"}
            self.wfile.write(json.dumps(response_payload).encode('utf-8'))
            print("============================================================\n")
            
        except Exception as e:
            self.send_response(500)
            self.end_headers()
            print(f" [CRITICAL ERROR] Failed parsing incoming byte array stream: {str(e)}")

if __name__ == "__main__":
    print(f"[BOOT] Initializing standalone local server on port: {PORT}")
    print(" -> Status: Running at $0 cost on local MacBook Pro hardware.")
    with socketserver.TCPServer(("", PORT), SovereignPaymentListener) as httpd:
        try:
            httpd.serve_forever()
        except KeyboardInterrupt:
            print("\n[SHUTDOWN] Local web listener deactivated cleanly.")
