import fs from 'fs'
import path from 'path'

interface Commune {
      id: number;
      commune_name_ascii: string;
      commune_name: string;
      daira_name_ascii: string;
      daira_name: string;
      wilaya_code: string;
      wilaya_name_ascii: string;
      wilaya_name: string;
}

interface Daira {
      id: string;
      name: {
            arabic: string;
            ascii: string;
      };
      wilaya_code: string;
}


const extractDairas = () => {

      const rawData = JSON.parse(
            fs.readFileSync(path.join(__dirname, '../data/communes.json'), 'utf-8')
      ) as Commune[];


      const dairasMap = new Map<string, Daira>();

      rawData.forEach(commune => {
            const dairaKey = `${commune.wilaya_code}-${commune.daira_name_ascii}`;

            if(!dairasMap.has(dairaKey)) {
                  dairasMap.set(dairaKey,{
                        id : dairaKey,
                        name : {
                              arabic : commune.daira_name,
                              ascii : commune.daira_name_ascii
                        },
                        wilaya_code : commune.wilaya_code
                  })
            }})


      const dairas = Array.from(dairasMap.values()).sort((a,b) => {
            if(a.wilaya_code  !== b.wilaya_code) {
                  return Number(a.wilaya_code) - Number(b.wilaya_code)
            }
            return a.name.ascii.localeCompare(b.name.ascii)
      })

      fs.writeFileSync(
            path.join(__dirname, '../data/dairas.json'),
            JSON.stringify(dairas, null, 2)
          );
        
      console.log(`Successfully extracted ${dairas.length} dairas`);

}

extractDairas();