<?php

use App\Libs\Facades\Localization;
use Carbon\Carbon;

if (!function_exists('db_date_to_carbon')) {
    function db_date_to_carbon($db_date, $tz = 'UTC')
    {
        return Carbon::createFromFormat(
            "Y-m-d H:i:s",
            $db_date,
            new DateTimeZone($tz));
    }
}

if (!function_exists('format_date')) {
    function format_date($date, $short = false)
    {
        if (is_string($date)) {
            $date = strtotime($date);
        }
        $langId = Localization::getActiveLocale();

        $monthTrans = [
            '', 'january', 'february', 'march', 'april', 'may', 'june', 'july', 'august',
            'september', 'october', 'november', 'december'
        ];
        $month = $short ? trans('frontend.short_month_'.date('n', $date)) : trans('frontend.'.$monthTrans[date('n', $date)]);
        $day = date("d", $date);
        $year = date("Y", $date);
        // TODO: perhaps implementing this in a more generic way
        if ($langId == 'ja') {
            return $year.' '.$month.' '.$day;
        }
        return $day.' '.$month.' '.$year;
    }
}

if (!function_exists('event_date')) {
    function event_date($start, $end)
    {
        $langId = Localization::getActiveLocale();
        $startDay = date('d', strtotime($start));
        $startMonth = trans('frontend.' . strtolower(date('F', strtotime($start))));
        $startYear = date('Y', strtotime($start));
        if ($end && $end > $start) {
            $endDay = date('d', strtotime($end));
            $endMonth = trans('frontend.' . strtolower(date('F', strtotime($end))));
            $endYear = date('Y', strtotime($end));

            if ($startYear != $endYear) {
                // TODO: perhaps implementing this in a more generic way
                if ($langId == 'ja') {
                    return "$startYear $startMonth $startDay - $endYear $endMonth $endDay";
                }
                return "$startDay $startMonth $startYear - $endDay $endMonth $endYear";
            }
            if ($startMonth == $endMonth) {
                if ($langId == 'ja') {
                    return "$endYear $startMonth $startDay-$endDay ";
                }
                return "$startDay-$endDay $startMonth $endYear";
            } else {
                if ($langId == 'ja') {
                    return "$endYear, $startMonth $startDay - $endMonth $endDay";
                }
                return "$startDay $startMonth - $endDay $endMonth, $endYear";
            }
        } else {
            if ($langId == 'ja') {
                return "$startYear $startMonth $startDay";
            }
            return "$startDay $startMonth $startYear";
        }
    }
}
