# -*- coding: utf-8 -*-
import os
from flask import Flask, request, render_template
import subprocess
import shutil

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    result = verdict = None
    if request.method == 'POST':
        code = request.form['code']
        with open('grader/run.py', 'w', encoding='utf-8') as f:
            f.write(code)
        shutil.copy('testcases/input.txt', 'grader/input.txt')
        try:
            subprocess.run(['docker', 'build', '-t', 'python_grader', './grader'], check=True)
            output = subprocess.check_output(['docker', 'run', '--rm', 'python_grader'], timeout=10)
            result = output.decode('utf-8').strip()
        except subprocess.CalledProcessError:
            result = '❌ เกิดข้อผิดพลาดระหว่างการคอมไพล์หรือรันโปรแกรม'
        except subprocess.TimeoutExpired:
            result = '⏰ โปรแกรมใช้เวลารันนานเกินไป (timeout)'
        with open('testcases/expected_output.txt', 'r', encoding='utf-8') as f:
            expected = f.read().strip()
        verdict = "✅ ถูกต้อง" if result == expected else "❌ ผิด (ผลลัพธ์ไม่ตรงกับที่คาดไว้)"
    return render_template('index.html', result=result, verdict=verdict)

if __name__ == '__main__':
    app.run(debug=True)
