from django.shortcuts import get_object_or_404 from api.models import User from api.sms import send_sms import requests from apibase.env import env, BASE_DIR import os import logging logger = logging.getLogger(__name__) env.read_env(os.path.join(BASE_DIR, ".env")) PEOPLE_API_URL = env.str("PEOPLE_API_URL", "") def verify_user_with_person_api_task(user_id: int): """ Verify the user with the Person API. :param user_id: The ID of the user to verify. """ user = get_object_or_404(User, id=user_id) # Call the Person API to verify the user if not PEOPLE_API_URL: raise ValueError("PEOPLE_API_URL is not set in the environment variables.") response = requests.get(f"{PEOPLE_API_URL}/api/person/{user.id_card}") if response.status_code == 200: data = response.json() api_nic = data.get("nic") api_name = data.get("name_en") api_house_name = data.get("house_name_en") api_dob = data.get("dob") api_atoll = data.get("atoll_en") api_island_name = data.get("island_name_en") logger.info(f"API nic: {api_nic}") logger.info(f"API name: {api_name}") logger.info(f"API house name: {api_house_name}") logger.info(f"API dob: {api_dob}") logger.info(f"API atoll: {api_atoll}") logger.info(f"API island name: {api_island_name}") user_nic = user.id_card user_name = f"{user.first_name} {user.last_name}" user_house_name = user.address user_dob = user.dob.isoformat() logger.info(f"User nic: {user_nic}") logger.info(f"User name: {user_name}") logger.info(f"User house name: {user_house_name}") logger.info(f"User dob: {user_dob}") logger.info(f"User atoll: {user.atoll}") logger.info(f"User island name: {user.island}") logger.info(f"case User atoll: {user.atoll == api_atoll}") logger.info("api atoll type: ", {type(api_atoll)}) logger.info("user atoll type: ", {type(user.atoll.name)}) logger.info(f"case User island name: {user.island == api_island_name}") logger.info(f"api island name type: {type(api_island_name)}") logger.info(f"user island name type: {type(user.island.name)}") if ( data.get("nic") == user.id_card and data.get("name_en") == f"{user.first_name} {user.last_name}" and data.get("house_name_en") == user.address and data.get("dob").split("T")[0] == user.dob.isoformat() and data.get("atoll_en").strip() == user.atoll.name and data.get("island_name_en").strip() == user.island.name ): user.verified = True user.save() send_sms( user.mobile, f"Dear {user.first_name} {user.last_name}, \n\nYour account has been successfully and verified. \n\nYou can now manage your devices and make payments through our portal at https://portal.sarlink.net. \n\n - SAR Link", ) return True else: user.verified = False user.save() send_sms( user.mobile, f"Dear {user.first_name} {user.last_name}, \n\nYour account registration is being processed. \n\nWe will notify you once verification is complete. \n\n - SAR Link", ) return False else: # Handle the error case print(f"Error verifying user: {response.status_code} - {response.text}") return False