import pytz

from . import jalali
from django.utils import timezone
from datetime import date, datetime


def persian_numbers_converter(num):
    numbers = {
        "0": "۰",
        "1": "۱",
        "2": "۲",
        "3": "۳",
        "4": "۴",
        "5": "۵",
        "6": "۶",
        "7": "۷",
        "8": "۸",
        "9": "۹",
    }
    for e, p in numbers.items():
        num = num.replace(e, p)
    return num


def jalali_converter(time):
    jalali_month = ['فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن',
                    'اسفند']
    if isinstance(time, datetime):
        time = timezone.localtime(time)
    elif isinstance(time, str):
        time = datetime.strptime(time, '%Y-%m-%dT%H:%M:%S%z')
    time_to_str = "{},{},{}".format(time.year, time.month, time.day)
    time_to_tuple = jalali.Gregorian(time_to_str).persian_tuple()
    time_to_list = list(time_to_tuple)
    for index, month in enumerate(jalali_month):
        if time_to_list[1] == index + 1:
            time_to_list[1] = month
            break
    if isinstance(time, datetime):
        output = "{} {} {}, ساعت {}:{}".format(
            time_to_list[2], time_to_list[1], time_to_list[0],
            time.hour, time.minute,
        )
    else:
        output = "{} {} {}".format(
            time_to_list[2], time_to_list[1], time_to_list[0]
        )
    return persian_numbers_converter(output)


def price_insert_seperator(price):
    price = str(price)
    n = len(price)
    i = 0
    remain = n % 3
    while remain != 0:
        price = '0' + price
        i += 1
        n = len(price)
        remain = n % 3
    arr = [price[i:i + 3] for i in range(0, len(price), 3)]
    temp = ''
    for index in arr:
        temp = temp + "," + index
    i += 1
    return temp[i:]
