import fs from "fs"
import { OH } from "../../UI/OpeningHours/OpeningHours"

const cashpunten = JSON.parse(
    fs.readFileSync("/home/pietervdvn/Downloads/cash_punten.json", "utf8")
).data

const features: any[] = []
const weekdays = ["MO", "TU", "WE", "TH", "FR", "SA", "SU"]
for (const atm of cashpunten) {
    const properties = {
        amenity: "atm",
        "addr:street": atm.adr_street,
        "addr:housenumber": atm.adr_street_number,
        phone: <string>atm.phone_number,
        operator: "Batopin",
        network: "CASH",
        fee: "no",
        speech_output: "yes",
        brand: "CASH",
        website: "https://batopin.be",
        source: "https://batopin.be",
        "brand:wikidata": "Q112875867",
        "operator:wikidata": "Q97142699",
        "currency:EUR": "yes",
    }
    features.push({
        geometry: { type: "Point", coordinates: [atm.adr_longitude, atm.adr_latitude] },
        properties: {
            tags: properties,
        },
    })

    switch (atm.accessibility) {
        case "Green":
            properties["wheelchair"] = "yes"
            break
        case "Orange":
            properties["wheelchair"] = "limited"
            break
        case "Red":
            properties["wheelchair"] = "no"
            break
        default:
            break
    }
    delete atm.accessibility

    if (atm.deposit_cash) {
        properties["cash_in"] = atm.deposit_cash === "1" ? "yes" : "no"
        delete atm.deposit_cash
    }

    if (!weekdays.some((wd) => atm.regular_hours[wd] !== "00:00-00:00")) {
        properties["opening_hours"] = "24/7"
        delete atm.regular_hours
    } else {
        const rules = weekdays
            .filter((wd) => atm.regular_hours[wd] !== undefined)
            .map((wd) => wd[0] + wd.toLowerCase()[1] + " " + atm.regular_hours[wd])
            .join(";")
        properties["opening_hours"] = OH.ToString(OH.MergeTimes(OH.Parse(rules)))
        delete atm.regular_hours
    }

    delete atm.special_hours // Only one data point has this

    delete atm.location_language
    delete atm.location_name
    delete atm.shop_code
    delete atm.id
    delete atm.adr_longitude
    delete atm.adr_latitude
    delete atm.adr_street_number
    delete atm.adr_street
    delete atm.adr_zipcode
    delete atm.adr_city
    delete atm.adr_country
    delete atm.phone_number
    if (Object.keys(atm).length == 0) {
        continue
    }
    console.log(atm, properties)
    break
}

fs.writeFileSync("atms.geojson", JSON.stringify({ type: "FeatureCollection", features }))
