from datetime import datetime
from enum import Enum
from zoneinfo import ZoneInfo

from fwd import settings
from fwd_api.exception.exceptions import InvalidException

default_zone = settings.TIME_ZONE


class FORMAT(Enum):
    DD_MM_YYYY_HHMMSS = "%d/%m/%Y %H:%M:%S"


def to_date(date_str: str, format_date: str) -> datetime:
    try:
        from_date: datetime = datetime.strptime(date_str, format_date)
        from_date = from_date.replace(tzinfo=ZoneInfo(default_zone))
        return from_date
    except ValueError:
        raise InvalidException(excArgs='dateFormat')


def to_str(date: datetime, format: str) -> str:
    try:
        return date.strftime(format)
    except ValueError:
        raise InvalidException(excArgs='dateFormat')


def get_date_time_now():
    # return datetime.utcnow().replace(tzinfo=ZoneInfo(default_zone))
    return datetime.now(tz=ZoneInfo(default_zone))