UK ILR Eligibility Checker

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)