def METHOD_NAME(cls, shift_user_data: ShiftUserData):
    if shift_user_data.get_account_balance() > FREEZE_THRESHOLD:
        return False
    if not ShiftExpectationService.is_member_expected_to_do_shifts(
        shift_user_data, timezone.now().date()
    ):
        return False
    last_warning = (
        EmailLogEntry.objects.filter(
            email_id=FreezeWarningEmail.get_unique_id(),
            user=shift_user_data.user,
        )
        .order_by("-created_date")
        .first()
    )
    if last_warning is None:
        return True
    return (
        timezone.now().date() - last_warning.created_date.date()
    ).days > FREEZE_AFTER_DAYS