from datetime import datetime, timedelta from typing import List, Dict def filter_accounts_next_30_days(accounts: List[Dict[str, int]]) -> List[Dict[str, int]]: """Filter accounts whose expiry date falls within the next 30 days. Args: accounts (List[Dict[str, int]]): A list of account dictionaries, each containing an 'expiaryDate' key with an epoch timestamp as its value. Returns: List[Dict[str, int]]: A list of accounts expiring within the next 30 days. """ 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, int]]) -> List[Dict[str, int]]: """Filter accounts whose expiry date has passed. Args: accounts (List[Dict[str, int]]): A list of account dictionaries, each containing an 'expiaryDate' key with an epoch timestamp as its value. Returns: List[Dict[str, int]]: A list of accounts that have expired. """ # Get the current epoch timestamp current_timestamp = int(datetime.now().timestamp()) # Filter accounts where the current date is greater than the expiryDate 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