import json, csv, collections, sys
rc = {r['scheme_id']: r for r in json.load(open('realtycheck_schemes.json'))}
cat = {c['uuid']: c for c in json.load(open('catalogue_my_projects.json'))}
KV_SEL = {'Petaling', 'Klang', 'Gombak', 'Hulu Langat', 'Sepang'}
AREA_DISTRICT = {
 # Selangor → district
 'Klang':'Klang','Kapar':'Klang','Bukit Raja':'Klang','Pandamaran':'Klang','Port Klang':'Klang','Meru':'Klang','Bandar Botanic':'Klang','Bandar Bukit Tinggi':'Klang',
 'Petaling Jaya':'Petaling','Shah Alam':'Petaling','Subang Jaya':'Petaling','Bandar Sunway':'Petaling','Puchong':'Petaling','Seri Kembangan':'Petaling','Damansara':'Petaling','Kota Damansara':'Petaling','Sungai Buloh':'Petaling','Ara Damansara':'Petaling','USJ':'Petaling','Serdang':'Petaling','Setia Alam':'Petaling','Glenmarie':'Petaling','Kelana Jaya':'Petaling','Bandar Utama':'Petaling','Mutiara Damansara':'Petaling',
 'Kajang':'Hulu Langat','Semenyih':'Hulu Langat','Bangi':'Hulu Langat','Balakong':'Hulu Langat','Batu 9th Cheras':'Hulu Langat','Cheras':'Hulu Langat','Cheras South':'Hulu Langat','Ampang':'Hulu Langat','Pandan Indah':'Hulu Langat','Pandan Jaya':'Hulu Langat','Hulu Langat':'Hulu Langat','Bandar Damai Perdana':'Hulu Langat','Beranang':'Hulu Langat','Taman Melawati':'Gombak','Bandar Mahkota Cheras':'Hulu Langat','Sungai Long':'Hulu Langat',
 'Selayang':'Gombak','Gombak':'Gombak','Rawang':'Gombak','Batu Caves':'Gombak',
 'Sepang':'Sepang','Dengkil':'Sepang','Cyberjaya':'Sepang','Salak Tinggi':'Sepang','Bandar Baru Salak Tinggi':'Sepang',
 'Rasa':'Hulu Selangor','Kerling':'Hulu Selangor','Batang Kali':'Hulu Selangor','Serendah':'Hulu Selangor','Kuala Kubu Bharu':'Hulu Selangor',
 'Sungai Besar':'Sabak Bernam','Sabak Bernam':'Sabak Bernam','Sekinchan':'Sabak Bernam',
 'Kuala Selangor':'Kuala Selangor','Batang Berjuntai':'Kuala Selangor','Jeram':'Kuala Selangor','Tanjong Karang':'Kuala Selangor',
 'Banting':'Kuala Langat','Jenjarom':'Kuala Langat','Telok Panglima Garang':'Kuala Langat',
 # Negeri Sembilan
 'Seremban':'Seremban','Seremban 2':'Seremban','Senawang':'Seremban','Rasah':'Seremban','Nilai':'Seremban','Mantin':'Seremban','Port Dickson':'Port Dickson',
}
def norm_state(s):
    s = (s or '').strip()
    return {'WP Kuala Lumpur':'Kuala Lumpur','W.P. Kuala Lumpur':'Kuala Lumpur','WP Putrajaya':'Putrajaya','Penang':'Pulau Pinang'}.get(s, s)
def locate(r):
    s = rc[r['scheme_id']]; c = cat.get(r['catalog_project_uuid'], {})
    state = norm_state(s['state']) or norm_state(c.get('state'))
    district = s['district'] or AREA_DISTRICT.get(c.get('area') or '', '')
    if state == 'Kuala Lumpur': district = 'Kuala Lumpur'
    mk = (s['mukim'] or '').lower(); area = (c.get('area') or '').lower(); name = (s['display_name'] or '').lower()
    town = ''
    if 'kajang' in mk or area == 'kajang': town = 'Kajang'
    elif 'semenyih' in mk or area == 'semenyih': town = 'Semenyih'
    return state, district, town
def region_flags(state, district, town):
    return {
        'Kuala Lumpur': state == 'Kuala Lumpur',
        'Selangor': state == 'Selangor',
        'Klang Valley': state in ('Kuala Lumpur','Putrajaya') or (state == 'Selangor' and district in KV_SEL),
        'Kajang': town == 'Kajang',
        'Semenyih': town == 'Semenyih',
        'Seremban': state == 'Negeri Sembilan' and district == 'Seremban',
    }
