Check Your ILR Eligibility
from flask import Flask, request, jsonify, render_template
from datetime import datetime, timedelta
from flask_cors import CORS # Allows frontend to communicate properly
app = Flask(__name__, template_folder='templates')
CORS(app) # Enables frontend to make AJAX calls without CORS issues
def check_ilr_eligibility(visa_type, entry_date, absences_days):
"""
Check ILR eligibility based on visa type, entry date, and absences.
"""
ilr_rules = {
'Skilled Worker': 5,
'Spouse': 5,
'Ancestry': 5,
'Long Residence': 10,
}
if visa_type not in ilr_rules:
return {"eligible": False, "reason": "Visa type not recognized."}
required_years = ilr_rules[visa_type]
try:
entry_date = datetime.strptime(entry_date, "%Y-%m-%d")
except ValueError:
return {"eligible": False, "reason": "Invalid date format. Please use YYYY-MM-DD."}
eligibility_date = entry_date + timedelta(days=required_years * 365)
today = datetime.today()
if today < eligibility_date:
return {
"eligible": False,
"reason": f"You must complete {required_years} years in the UK. Eligible from {eligibility_date.strftime('%Y-%m-%d')}"
}
if absences_days > (180 * required_years):
return {"eligible": False, "reason": "You exceeded the allowable absences limit (180 days per year)."}
return {"eligible": True, "reason": "You meet the ILR requirements."}
@app.route('/')
def index():
return render_template('index.html')
@app.route('/check_ilr', methods=['POST'])
def check_ilr():
try:
# Ensure request is JSON
if not request.is_json:
return jsonify({"eligible": False, "reason": "Invalid request format. Must be JSON."}), 400
data = request.get_json()
visa = data.get("visa_type")
entry = data.get("entry_date")
absences = int(data.get("absences_days", 0))
if not visa or not entry or absences is None:
return jsonify({"eligible": False, "reason": "Missing required fields."}), 400
result = check_ilr_eligibility(visa, entry, absences)
return jsonify(result)
except Exception as e:
return jsonify({"eligible": False, "reason": f"Error processing request: {str(e)}"}), 500
if __name__ == "__main__":
app.run(debug=True)