from flask import Flask, jsonify, request
from services.pdf_reader import extract_text
from services.skill_matcher import check_keywords
from services.ats_score import calculate_score
from services.jd_parser import extract_keywords
import os

app = Flask(__name__)

# Upload folder
UPLOAD_FOLDER = "uploads"
app.config["UPLOAD_FOLDER"] = UPLOAD_FOLDER

# Create uploads folder if it doesn't exist
os.makedirs(UPLOAD_FOLDER, exist_ok=True)

@app.route("/")
def home():
    return "Resume Analyzer is Running!"

@app.route("/upload", methods=["POST"])
def upload_resume():

    # Check if a file is uploaded
    if "resume" not in request.files:
        return jsonify({
            "success": False,
            "message": "No file uploaded"
        }), 400
    
    file = request.files["resume"]

    job_description = request.form.get("job_description", "")

    if file.filename == "":
        return jsonify({
            "success": False,
            "message": "No file selected"
        }), 400
    
    # Save the uploaded file
    filepath = os.path.join(app.config["UPLOAD_FOLDER"], file.filename)
    file.save(filepath)

    # Extract text from the uploaded PDF
    extracted_text = extract_text(filepath)

    # Extract keywords from Job Description
    jd_keywords = extract_keywords(job_description)

    # Check keywords
    found,missing = check_keywords(extracted_text,jd_keywords)

    #calculate ATS Score
    score=calculate_score(found,missing)

    return jsonify({
        "success": True,
        "message": "File uploaded successfully",
        "filename": file.filename,
        "job_description": job_description,
        "text": extracted_text,
        "found": found,
        "missing":missing,
        "score":score
    })

if __name__ == "__main__":
    app.run(debug=True)