from datetime import datetime, timedelta
from flask import jsonify

def parse_date(date_string):
    try:
        return datetime.strptime(date_string, '%d-%m-%Y')
    except ValueError:
        return None

def validate_date_range(start_date_str, end_date_str):
    start_date = parse_date(start_date_str)
    end_date = parse_date(end_date_str)
    
    if not start_date or not end_date:
        return False, "Invalid date format. Use dd-mm-yyyy"
    
    if start_date > end_date:
        return False, "Start date cannot be after end date"
    
    date_diff = (end_date - start_date).days
    if date_diff > 30:
        return False, "Date range cannot exceed 30 days"
    
    return True, None

def format_date_for_db(date_obj):
    return date_obj.strftime('%Y%m%d')

def validate_account_types(art22, art33):
    if art22 not in ['true', 'false'] or art33 not in ['true', 'false']:
        return None, "art22 and art33 must be 'true' or 'false'"
    
    if art22 == 'false' and art33 == 'false':
        return None, "At least one account type must be selected"
    
    if art22 == 'true' and art33 == 'true':
        account_types = '2,4'
    elif art22 == 'true' and art33 == 'false':
        account_types = '4'
    else:
        account_types = '2'
    
    return account_types, None
