"""
Vietnam Provinces After Administrative Merger (32 provinces)
32 tỉnh thành Việt Nam sau sáp nhập theo Nghị quyết 1211/2023
Bbox đã được mở rộng để bao phủ các tỉnh đã hợp nhất
"""

VIETNAM_PROVINCES_32 = {
    # Thành phố trực thuộc TW (5)
    "Hà Nội": {
        "bbox": [105.35, 20.53, 105.92, 21.33],
        "name_en": "Hanoi",
        "region": "Đồng bằng Bắc Bộ",
        "merged_from": None,
        "area_km2": 3359
    },
    
    "Hải Phòng": {
        "bbox": [106.14, 20.68, 107.07, 21.09],  # Bao gồm cả Hải Dương
        "name_en": "Hai Phong",
        "region": "Đồng bằng Bắc Bộ",
        "merged_from": ["Hải Phòng", "Hải Dương"],
        "area_km2": 2914
    },
    
    "Đà Nẵng": {
        "bbox": [107.04, 14.93, 108.70, 16.28],  # Bao gồm cả Quảng Nam
        "name_en": "Da Nang - Quang Nam",
        "region": "Duyên hải Nam Trung Bộ",
        "merged_from": ["Đà Nẵng", "Quảng Nam"],
        "area_km2": 11065
    },
    
    "Hồ Chí Minh": {
        "bbox": [106.36, 10.35, 107.04, 11.16],
        "name_en": "Ho Chi Minh City",
        "region": "Đông Nam Bộ",
        "merged_from": None,
        "area_km2": 2061
    },
    
    "Cần Thơ": {
        "bbox": [105.48, 9.77, 106.14, 10.35],
        "name_en": "Can Tho",
        "region": "Đồng bằng sông Cửu Long",
        "merged_from": None,
        "area_km2": 1402
    },
    
    # Các tỉnh sau sáp nhập (27)
    
    # Vùng núi phía Bắc
    "Lào Cai": {
        "bbox": [103.22, 21.82, 104.45, 22.77],
        "name_en": "Lao Cai",
        "region": "Vùng núi phía Bắc",
        "merged_from": None,
        "area_km2": 6384
    },
    
    "Điện Biên": {
        "bbox": [102.72, 21.09, 103.72, 22.21],  # Bao gồm cả Lai Châu
        "name_en": "Dien Bien - Lai Chau",
        "region": "Vùng núi phía Bắc",
        "merged_from": ["Điện Biên", "Lai Châu"],
        "area_km2": 15274
    },
    
    "Hà Giang": {
        "bbox": [104.42, 22.33, 105.59, 23.39],
        "name_en": "Ha Giang",
        "region": "Vùng núi phía Bắc",
        "merged_from": None,
        "area_km2": 7946
    },
    
    "Cao Bằng": {
        "bbox": [105.48, 21.95, 106.70, 23.04],  # Bao gồm cả Bắc Kạn
        "name_en": "Cao Bang - Bac Kan",
        "region": "Vùng núi phía Bắc",
        "merged_from": ["Cao Bằng", "Bắc Kạn"],
        "area_km2": 11335
    },
    
    "Lạng Sơn": {
        "bbox": [106.22, 21.40, 107.18, 22.41],
        "name_en": "Lang Son",
        "region": "Vùng núi phía Bắc",
        "merged_from": None,
        "area_km2": 8327
    },
    
    "Tuyên Quang": {
        "bbox": [104.97, 21.65, 105.65, 22.42],
        "name_en": "Tuyen Quang",
        "region": "Vùng núi phía Bắc",
        "merged_from": None,
        "area_km2": 5868
    },
    
    "Yên Bái": {
        "bbox": [103.97, 21.35, 105.20, 22.21],
        "name_en": "Yen Bai",
        "region": "Vùng núi phía Bắc",
        "merged_from": None,
        "area_km2": 6899
    },
    
    "Thái Nguyên": {
        "bbox": [105.48, 21.27, 106.15, 22.07],
        "name_en": "Thai Nguyen",
        "region": "Vùng núi phía Bắc",
        "merged_from": None,
        "area_km2": 3534
    },
    
    "Phú Thọ": {
        "bbox": [104.83, 21.01, 105.48, 21.82],
        "name_en": "Phu Tho",
        "region": "Vùng núi phía Bắc",
        "merged_from": None,
        "area_km2": 3533
    },
    
    "Hòa Bình": {
        "bbox": [103.22, 20.35, 105.74, 21.82],  # Bao gồm cả Sơn La
        "name_en": "Hoa Binh - Son La",
        "region": "Vùng núi phía Bắc",
        "merged_from": ["Hòa Bình", "Sơn La"],
        "area_km2": 19210
    },
    
    # Đồng bằng Bắc Bộ
    "Quảng Ninh": {
        "bbox": [106.48, 20.70, 108.26, 21.62],
        "name_en": "Quang Ninh",
        "region": "Đồng bằng Bắc Bộ",
        "merged_from": None,
        "area_km2": 6102
    },
    
    "Bắc Ninh": {
        "bbox": [105.83, 20.93, 106.70, 21.68],  # Bao gồm cả Bắc Giang
        "name_en": "Bac Ninh - Bac Giang",
        "region": "Đồng bằng Bắc Bộ",
        "merged_from": ["Bắc Ninh", "Bắc Giang"],
        "area_km2": 4631
    },
    
    "Vĩnh Phúc": {
        "bbox": [105.31, 21.14, 105.81, 21.61],
        "name_en": "Vinh Phuc",
        "region": "Đồng bằng Bắc Bộ",
        "merged_from": None,
        "area_km2": 1236
    },
    
    "Hưng Yên": {
        "bbox": [105.83, 20.58, 106.26, 21.03],
        "name_en": "Hung Yen",
        "region": "Đồng bằng Bắc Bộ",
        "merged_from": None,
        "area_km2": 926
    },
    
    "Nam Định": {
        "bbox": [105.79, 20.04, 106.47, 20.73],  # Bao gồm cả Hà Nam
        "name_en": "Nam Dinh - Ha Nam",
        "region": "Đồng bằng Bắc Bộ",
        "merged_from": ["Nam Định", "Hà Nam"],
        "area_km2": 2442
    },
    
    "Thái Bình": {
        "bbox": [106.23, 20.27, 106.70, 20.76],
        "name_en": "Thai Binh",
        "region": "Đồng bằng Bắc Bộ",
        "merged_from": None,
        "area_km2": 1570
    },
    
    # Bắc Trung Bộ
    "Thanh Hóa": {
        "bbox": [104.83, 19.33, 106.14, 20.66],  # Bao gồm cả Ninh Bình
        "name_en": "Thanh Hoa - Ninh Binh",
        "region": "Bắc Trung Bộ",
        "merged_from": ["Thanh Hóa", "Ninh Bình"],
        "area_km2": 12490
    },
    
    "Nghệ An": {
        "bbox": [103.97, 17.98, 106.23, 19.89],  # Bao gồm cả Hà Tĩnh
        "name_en": "Nghe An - Ha Tinh",
        "region": "Bắc Trung Bộ",
        "merged_from": ["Nghệ An", "Hà Tĩnh"],
        "area_km2": 22793
    },
    
    "Quảng Bình": {
        "bbox": [105.74, 16.97, 107.04, 18.06],
        "name_en": "Quang Binh",
        "region": "Bắc Trung Bộ",
        "merged_from": None,
        "area_km2": 8065
    },
    
    "Quảng Trị": {
        "bbox": [106.48, 16.38, 107.54, 17.20],
        "name_en": "Quang Tri",
        "region": "Bắc Trung Bộ",
        "merged_from": None,
        "area_km2": 4746
    },
    
    "Thừa Thiên Huế": {
        "bbox": [107.04, 16.01, 108.01, 16.95],
        "name_en": "Thua Thien Hue",
        "region": "Bắc Trung Bộ",
        "merged_from": None,
        "area_km2": 5033
    },
    
    # Duyên hải Nam Trung Bộ
    "Quảng Ngãi": {
        "bbox": [108.01, 14.66, 109.18, 15.53],
        "name_en": "Quang Ngai",
        "region": "Duyên hải Nam Trung Bộ",
        "merged_from": None,
        "area_km2": 5153
    },
    
    "Bình Định": {
        "bbox": [108.33, 12.75, 109.46, 14.72],  # Bao gồm cả Phú Yên
        "name_en": "Binh Dinh - Phu Yen",
        "region": "Duyên hải Nam Trung Bộ",
        "merged_from": ["Bình Định", "Phú Yên"],
        "area_km2": 11092
    },
    
    "Khánh Hòa": {
        "bbox": [108.70, 11.75, 109.46, 12.95],
        "name_en": "Khanh Hoa",
        "region": "Duyên hải Nam Trung Bộ",
        "merged_from": None,
        "area_km2": 5218
    },
    
    "Bình Thuận": {
        "bbox": [107.54, 10.49, 109.18, 12.04],  # Bao gồm cả Ninh Thuận
        "name_en": "Binh Thuan - Ninh Thuan",
        "region": "Duyên hải Nam Trung Bộ",
        "merged_from": ["Bình Thuận", "Ninh Thuận"],
        "area_km2": 11234
    },
    
    # Tây Nguyên
    "Gia Lai": {
        "bbox": [107.54, 13.17, 108.70, 15.17],  # Bao gồm cả Kon Tum
        "name_en": "Gia Lai - Kon Tum",
        "region": "Tây Nguyên",
        "merged_from": ["Gia Lai", "Kon Tum"],
        "area_km2": 25536
    },
    
    "Đắk Lắk": {
        "bbox": [107.04, 11.75, 108.70, 13.40],  # Bao gồm cả Đắk Nông
        "name_en": "Dak Lak - Dak Nong",
        "region": "Tây Nguyên",
        "merged_from": ["Đắk Lắk", "Đắk Nông"],
        "area_km2": 19850
    },
    
    "Lâm Đồng": {
        "bbox": [107.04, 10.99, 108.70, 12.52],
        "name_en": "Lam Dong",
        "region": "Tây Nguyên",
        "merged_from": None,
        "area_km2": 9776
    },
    
    # Đông Nam Bộ
    "Đồng Nai": {
        "bbox": [106.36, 10.49, 107.54, 12.24],  # Bao gồm cả Bình Phước
        "name_en": "Dong Nai - Binh Phuoc",
        "region": "Đông Nam Bộ",
        "merged_from": ["Đồng Nai", "Bình Phước"],
        "area_km2": 13317
    },
    
    "Bình Dương": {
        "bbox": [106.36, 10.87, 106.96, 11.51],
        "name_en": "Binh Duong",
        "region": "Đông Nam Bộ",
        "merged_from": None,
        "area_km2": 2695
    },
    
    "Bà Rịa - Vũng Tàu": {
        "bbox": [107.04, 10.16, 107.77, 10.87],
        "name_en": "Ba Ria - Vung Tau",
        "region": "Đông Nam Bộ",
        "merged_from": None,
        "area_km2": 1990
    },
    
    "Tây Ninh": {
        "bbox": [105.74, 10.87, 106.70, 11.75],
        "name_en": "Tay Ninh",
        "region": "Đông Nam Bộ",
        "merged_from": None,
        "area_km2": 4040
    },
    
    # Đồng bằng sông Cửu Long
    "Tiền Giang": {
        "bbox": [105.74, 9.99, 106.70, 11.16],  # Bao gồm cả Long An
        "name_en": "Tien Giang - Long An",
        "region": "Đồng bằng sông Cửu Long",
        "merged_from": ["Tiền Giang", "Long An"],
        "area_km2": 6935
    },
    
    "Bến Tre": {
        "bbox": [105.98, 9.77, 106.70, 10.35],
        "name_en": "Ben Tre",
        "region": "Đồng bằng sông Cửu Long",
        "merged_from": None,
        "area_km2": 2360
    },
    
    "Vĩnh Long": {
        "bbox": [105.74, 9.33, 106.70, 10.35],  # Bao gồm cả Trà Vinh
        "name_en": "Vinh Long - Tra Vinh",
        "region": "Đồng bằng sông Cửu Long",
        "merged_from": ["Vĩnh Long", "Trà Vinh"],
        "area_km2": 4567
    },
    
    "Đồng Tháp": {
        "bbox": [105.20, 10.16, 105.98, 11.16],
        "name_en": "Dong Thap",
        "region": "Đồng bằng sông Cửu Long",
        "merged_from": None,
        "area_km2": 3377
    },
    
    "An Giang": {
        "bbox": [104.83, 9.99, 105.74, 10.99],
        "name_en": "An Giang",
        "region": "Đồng bằng sông Cửu Long",
        "merged_from": None,
        "area_km2": 3537
    },
    
    "Kiên Giang": {
        "bbox": [103.22, 8.68, 105.48, 10.52],
        "name_en": "Kien Giang",
        "region": "Đồng bằng sông Cửu Long",
        "merged_from": None,
        "area_km2": 6348
    },
    
    "Sóc Trăng": {
        "bbox": [105.31, 9.16, 106.23, 9.99],  # Bao gồm cả Hậu Giang
        "name_en": "Soc Trang - Hau Giang",
        "region": "Đồng bằng sông Cửu Long",
        "merged_from": ["Sóc Trăng", "Hậu Giang"],
        "area_km2": 4750
    },
    
    "Bạc Liêu": {
        "bbox": [105.31, 8.93, 105.98, 9.60],
        "name_en": "Bac Lieu",
        "region": "Đồng bằng sông Cửu Long",
        "merged_from": None,
        "area_km2": 2585
    },
    
    "Cà Mau": {
        "bbox": [104.58, 8.18, 105.48, 9.60],
        "name_en": "Ca Mau",
        "region": "Đồng bằng sông Cửu Long",
        "merged_from": None,
        "area_km2": 5332
    },
}


def get_all_provinces_32():
    """Lấy danh sách tất cả 32 tỉnh thành sau sáp nhập"""
    return list(VIETNAM_PROVINCES_32.keys())


def get_provinces_by_region_32():
    """Lấy danh sách 32 tỉnh thành theo vùng miền"""
    regions = {}
    for province, data in VIETNAM_PROVINCES_32.items():
        region = data["region"]
        if region not in regions:
            regions[region] = []
        regions[region].append({
            "name": province,
            "name_en": data["name_en"],
            "bbox": data["bbox"],
            "merged_from": data.get("merged_from"),
            "area_km2": data.get("area_km2")
        })
    return regions


def get_province_bbox_32(province_name):
    """Lấy bbox của một tỉnh thành (32 tỉnh)"""
    if province_name in VIETNAM_PROVINCES_32:
        return VIETNAM_PROVINCES_32[province_name]["bbox"]
    return None


def get_merged_info(province_name):
    """Lấy thông tin sáp nhập của tỉnh"""
    if province_name in VIETNAM_PROVINCES_32:
        data = VIETNAM_PROVINCES_32[province_name]
        return {
            "name": province_name,
            "bbox": data["bbox"],
            "merged_from": data.get("merged_from"),
            "region": data["region"],
            "area_km2": data.get("area_km2")
        }
    return None


def search_province_32(query):
    """Tìm kiếm tỉnh thành theo tên (32 tỉnh)"""
    query = query.lower()
    results = []
    for province, data in VIETNAM_PROVINCES_32.items():
        if (query in province.lower() or 
            query in data["name_en"].lower()):
            results.append({
                "name": province,
                "name_en": data["name_en"],
                "bbox": data["bbox"],
                "region": data["region"],
                "merged_from": data.get("merged_from"),
                "area_km2": data.get("area_km2")
            })
    return results


def get_provinces_statistics():
    """Thống kê các tỉnh đã sáp nhập"""
    total = len(VIETNAM_PROVINCES_32)
    merged = len([p for p in VIETNAM_PROVINCES_32.values() if p.get("merged_from")])
    original = total - merged
    
    return {
        "total_provinces": total,
        "merged_provinces": merged,
        "original_provinces": original,
        "regions": list(set(p["region"] for p in VIETNAM_PROVINCES_32.values())),
        "total_area_km2": sum(p.get("area_km2", 0) for p in VIETNAM_PROVINCES_32.values())
    }
