from datetime import datetime, timedelta from typing import List, Dict, Any def filter_accounts_next_30_days(accounts: List[Dict[str, Any]]) -> List[Dict[str, Any]]: """Filters accounts expiring within the next 30 days. Args: accounts: A list of account dictionaries, each with an 'expiaryDate' (epoch timestamp). Returns: A list of accounts expiring within the next 30 days, with added 'expiaryDate_rendered' and 'days_to_expiry' keys. """ now = datetime.now() thirty_days_later = now + timedelta(days=30) now_timestamp = int(now.timestamp()) thirty_days_later_timestamp = int(thirty_days_later.timestamp()) result = [] today = now.date() for account in accounts: if now_timestamp <= account['expiaryDate'] < thirty_days_later_timestamp: expiry_date = datetime.fromtimestamp(account['expiaryDate']) account['expiaryDate_rendered'] = expiry_date.strftime('%d-%m-%Y') expiry_date_date = expiry_date.date() account['days_to_expiry'] = (expiry_date_date - today).days result.append(account) return result def filter_accounts_expired(accounts: List[Dict[str, Any]]) -> List[Dict[str, Any]]: """Filters accounts that have already expired. Args: accounts: A list of account dictionaries, each with an 'expiaryDate' (epoch timestamp). Returns: A list of expired accounts with an added 'expiaryDate_rendered' key. """ current_timestamp = int(datetime.now().timestamp()) expired_accounts = [] for account in accounts: if account['expiaryDate'] < current_timestamp: expiry_date = datetime.fromtimestamp(account['expiaryDate']) account['expiaryDate_rendered'] = expiry_date.strftime('%d-%m-%Y') expired_accounts.append(account) return expired_accounts