import logging
from typing import List

import openpyxl

logger = logging.getLogger("desktopenv.metrics.calc")


def compare_conference_city_in_order(actual_city_list_path, expected_city):
    expected_city_list = expected_city["expected"]
    wb = openpyxl.load_workbook(actual_city_list_path)
    sheet = wb.active
    actual_city_list = []
    for row in sheet["C2:C22"]:
        for cell in row:
            actual_city_list.append(cell.value)
    # expected_city is the city that we want to compare with the actual city list
    # must in order index
    # debug
    try:
        for i in range(len(actual_city_list)):
            if isinstance(expected_city_list[i], str):
                if expected_city_list[i] not in actual_city_list[i]:
                    logger.debug(f"Expected city {expected_city_list[i]}; Actual city {actual_city_list[i]}")
                    print(f"Expected city {expected_city_list[i]}; Actual city {actual_city_list[i]}")
                    return 0.


            elif isinstance(expected_city_list[i], List):
                if not any(possible_str in actual_city_list[i] for possible_str in expected_city_list[i]):
                    logger.debug(f"Expected city {expected_city_list[i]}; Actual city {actual_city_list[i]}")
                    print(f"Expected city {expected_city_list[i]}; Actual city {actual_city_list[i]}")
                    return 0.

            else:
                raise TypeError("Expected city should be a string or a list of strings")

    except:
        return 0.

    return 1.
