import requests
from bs4 import BeautifulSoup

def fetch_lottery_by_date(date_str):
    """
    ទាញយកទិន្នន័យឆ្នោតតាមកាលបរិច្ឆេទ (Format: YYYY-MM-DD)
    ដោយប្រើ Form Data / AJAX Request ដូច Browser ដែរ
    """
    url = "https://newkhmerlottery.com/"
    
    headers = {
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
        "X-Requested-With": "XMLHttpRequest",
        "Referer": "https://newkhmerlottery.com/"
    }
    
    # ផ្ញើ request តាម Form Data ដែល Web ដើមប្រើសម្រាប់ដូរថ្ងៃ
    payload = {
        'date': date_str,
        'action': 'get_results' # ឬ field សម្រាប់ trigger AJAX
    }
    
    try:
        # ១. ព្យាយាម POST ទៅកាន់ Web ដើម
        response = requests.post(url, data=payload, headers=headers, timeout=15)
        
        # បើ POST មិនបោះ Data មកទេ ព្យាយាម GET API endpoint
        if response.status_code != 200 or len(response.text) < 200:
            api_url = f"https://newkhmerlottery.com/api/results?date={date_str}"
            response = requests.get(api_url, headers=headers, timeout=15)

        soup = BeautifulSoup(response.text, 'html.parser')
        results = []

        # ស្រង់យក Data ចេញពី Table (ម៉ោង, A, B, C, D)
        rows = soup.find_all('tr')
        for row in rows:
            cols = row.find_all('td')
            if len(cols) >= 5:
                time_str = cols[0].text.strip()
                a_val = cols[1].text.strip()
                b_val = cols[2].text.strip()
                c_val = cols[3].text.strip()
                d_val = cols[4].text.strip()

                # យកតែជួរណាដែលមានលេខរង្វាន់ពិតប្រាកដ (ការពារជួរ Header)
                if any(char.isdigit() for char in a_val):
                    results.append({
                        'draw_date': date_str,
                        'draw_time': time_str,
                        'prize_a': a_val,
                        'prize_b': b_val,
                        'prize_c': c_val,
                        'prize_d': d_val
                    })
        return results

    except Exception as e:
        print(f"❌ Scraping Error ថ្ងៃទី {date_str}: {e}")
        return []