import json
import random
import string
from datetime import datetime
from pathlib import Path
import numpy
import numpy.typing as npt
from os import listdir
from os.path import isfile, join


# Save map to file
def export_map(grid: npt.NDArray):
    json_data = {"map": grid.tolist()}

    now = datetime.now()
    file_name = "map_" + now.strftime("%Y_%m_%d_%H_%M_%S") + ".json"
    path = Path("../../resources/maps/")
    file_to_open = path / file_name

    with open(file_to_open, "w+") as write_file:
        json.dump(json_data, write_file)
    print("Saved map to file " + file_name)


def import_random_map() -> object:
    path = "resources/maps"
    files = [f for f in listdir(path) if isfile(join(path, f))]
    random_map_name = random.choice(files)
    return import_map(random_map_name)


# Read map from file
def import_map(file_name: string) -> object:
    file_to_open = "resources/maps/" + file_name
    with open(file_to_open, "r") as read_file:
        print("Reading map from file " + file_name)
        decoded_json = json.load(read_file)

        decoded_grid = numpy.asarray(decoded_json["map"])
        print(decoded_grid)
    return decoded_grid.tolist()