from datetime import datetime, timedelta


class PembatalanPolicyService:
    def get_allowed_date_range(self, allowed_days):
        try:
            days = int(allowed_days or 0)
        except (TypeError, ValueError):
            days = 0
        days = max(0, days)
        today = datetime.now().date()
        start_date = today - timedelta(days=days)
        return start_date, today

    def is_transaksi_date_allowed(self, raw_date, start_date, end_date):
        if not raw_date:
            return False
        try:
            tx_date = datetime.strptime(str(raw_date)[:10], "%Y-%m-%d").date()
        except (TypeError, ValueError):
            return False
        return start_date <= tx_date <= end_date
