<?php

use Carbon\Carbon;

if (! function_exists('formatDate')) {
    function formatDate(?string $date = null, ?string $format = 'l, d M Y')
    {
        return ! $date ? '-' : Carbon::parse($date)->translatedFormat($format);
    }
}

if (! function_exists('formatTime')) {
    function formatTime(?string $time = null, ?string $format = 'H:i')
    {
        return ! $time ? '-' : Carbon::parse($time)->format($format);
    }
}

if (! function_exists('formatDateTime')) {
    function formatDateTime(?string $dateTime = null)
    {

        return ! $dateTime ? '-' : Carbon::parse($dateTime)->translatedFormat('l, d M Y H:i:s');
    }
}

if (! function_exists('formatDateDash')) {
    function formatDateDash(string $date)
    {
        return Carbon::parse($date)->translatedFormat('Y-m-d');
    }
}

if (! function_exists('getAge')) {
    function getAge(string $birthdate)
    {
        $birth = Carbon::parse($birthdate);
        $now = Carbon::now();

        $diff = $birth->diff($now);

        return "{$diff->y} tahun {$diff->m} bulan";
    }
}

if (! function_exists('timeAgo')) {
    function timeAgo(?string $date = null)
    {
        return ! $date ? '-' : Carbon::parse($date)->diffForHumans();
    }
}

if (! function_exists('normalizeOpeningHours')) {
    function normalizeOpeningHours(array $openingHours)
    {
        $days = ['senin', 'selasa', 'rabu', 'kamis', 'jumat', 'sabtu', 'minggu'];

        return collect($days)
            ->mapWithKeys(fn ($day) => [
                $day => $openingHours[$day] ?? ['open' => null, 'close' => null],
            ])
            ->toArray();
    }
}
