160 lines
8.2 KiB
PHP
160 lines
8.2 KiB
PHP
<?php
|
|
|
|
namespace App\Helpers;
|
|
|
|
use Carbon\Carbon;
|
|
use Carbon\CarbonPeriod;
|
|
|
|
class Helper
|
|
{
|
|
public static function genderNormalization($anyGenderCode)
|
|
{
|
|
if ($anyGenderCode == 'M') {
|
|
return 'male';
|
|
} else if ($anyGenderCode == 'F') {
|
|
return 'female';
|
|
} else if ($anyGenderCode == 'O') {
|
|
return 'others';
|
|
} else if ($anyGenderCode == 'U') {
|
|
return 'unknown';
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public static function paginateResources($resource)
|
|
{
|
|
return [
|
|
'current_page' => $resource->currentPage(),
|
|
'data' => $resource->items(),
|
|
'first_page_url' => '',
|
|
'from' => $resource->firstItem(),
|
|
'last_page' => $resource->lastPage(),
|
|
'last_page_url' => '',
|
|
'links' => $resource->links(null, $resource->items()),
|
|
'next_page_url' => $resource->nextPageUrl(),
|
|
];
|
|
}
|
|
|
|
public static function dailyAvailabilitiesToDate($dailyAvailabilities, $startDate, $endDate = null)
|
|
{
|
|
|
|
Carbon::setLocale('id');
|
|
|
|
$startDate = Carbon::parse($startDate);
|
|
if (empty($endDate)) {
|
|
$endDate = $startDate;
|
|
} else {
|
|
$endDate = Carbon::parse($endDate);
|
|
}
|
|
$ranges = CarbonPeriod::create($startDate, $endDate);
|
|
|
|
$datesAvailabilities = [];
|
|
foreach ($ranges as $date) {
|
|
|
|
$datesAvailabilities[] = [
|
|
'date' => $date->format('Y-m-d'),
|
|
'day' => $date->dayName,
|
|
'slot' => $dailyAvailabilities[$date->dayName],
|
|
'timezone' => 'WIB'
|
|
];
|
|
}
|
|
|
|
return $datesAvailabilities;
|
|
}
|
|
|
|
public static function dailyAvailabilities($availabilities)
|
|
{
|
|
$hours = [
|
|
'Pagi' => [],
|
|
'Siang' => [],
|
|
'Sore' => [],
|
|
'Petang' => [],
|
|
'Malam' => []
|
|
];
|
|
|
|
foreach ($availabilities as $availability) {
|
|
$time = explode(':', $availability->start_time);
|
|
|
|
if (count($availability->days)) {
|
|
foreach ($availability->days as $key => $day) {
|
|
$periods = CarbonPeriod::create(now(), now()->lastOfMonth()->addDays(1))
|
|
->filter(function (Carbon $date) use ($day) {
|
|
switch ($day->day) {
|
|
case 'Senin':
|
|
return $date->isMonday();
|
|
break;
|
|
case 'Selasa':
|
|
return $date->isTuesday();
|
|
break;
|
|
case 'Rabu':
|
|
return $date->isWednesday();
|
|
break;
|
|
case 'Kamis':
|
|
return $date->isThursday();
|
|
break;
|
|
case 'Jumat':
|
|
return $date->isFriday();
|
|
break;
|
|
case 'Sabtu':
|
|
return $date->isSaturday();
|
|
break;
|
|
case 'Minggu':
|
|
return $date->isSunday();
|
|
break;
|
|
}
|
|
})->toArray();
|
|
}
|
|
|
|
foreach ($periods as $day) {
|
|
foreach ($hours as $hour => $value) {
|
|
if (Carbon::createFromTime($time[0], $time[1], $time[2])->timestamp >= Carbon::createFromTime(05, 00, 00)->timestamp && Carbon::createFromTime($time[0], $time[1], $time[2])->timestamp <= Carbon::createFromTime(10, 59, 00)->timestamp && $hour === "Pagi") {
|
|
$schedules[Carbon::create($day)->day][$hour][] = substr($availability->start_time, 0, -3);
|
|
} elseif (Carbon::createFromTime($time[0], $time[1], $time[2])->timestamp >= Carbon::createFromTime(11, 00, 00)->timestamp && Carbon::createFromTime($time[0], $time[1], $time[2])->timestamp <= Carbon::createFromTime(15, 00, 00)->timestamp && $hour === "Siang") {
|
|
$schedules[Carbon::create($day)->day][$hour][] = substr($availability->start_time, 0, -3);
|
|
} elseif (Carbon::createFromTime($time[0], $time[1], $time[2])->timestamp >= Carbon::createFromTime(15, 01, 00)->timestamp && Carbon::createFromTime($time[0], $time[1], $time[2])->timestamp <= Carbon::createFromTime(18, 00, 00)->timestamp && $hour === "Sore") {
|
|
$schedules[Carbon::create($day)->day][$hour][] = substr($availability->start_time, 0, -3);
|
|
} elseif (Carbon::createFromTime($time[0], $time[1], $time[2])->timestamp >= Carbon::createFromTime(18, 00, 00)->timestamp && Carbon::createFromTime($time[0], $time[1], $time[2])->timestamp <= Carbon::createFromTime(19, 00, 00)->timestamp && $hour === "Petang") {
|
|
$schedules[Carbon::create($day)->day][$hour][] = substr($availability->start_time, 0, -3);
|
|
} elseif (Carbon::createFromTime($time[0], $time[1], $time[2])->timestamp >= Carbon::createFromTime(19, 00, 00)->timestamp && Carbon::createFromTime($time[0], $time[1], $time[2])->timestamp <= Carbon::createFromTime(24, 00, 00)->timestamp && $hour === "Malam") {
|
|
$schedules[Carbon::create($day)->day][$hour][] = substr($availability->start_time, 0, -3);
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
foreach ($hours as $hour => $value) {
|
|
for ($i = Carbon::now()->day; $i <= Carbon::now()->daysInMonth; $i++) {
|
|
if (Carbon::createFromTime($time[0], $time[1], $time[2])->timestamp >= Carbon::createFromTime(05, 00, 00)->timestamp && Carbon::createFromTime($time[0], $time[1], $time[2])->timestamp <= Carbon::createFromTime(10, 59, 00)->timestamp && $hour === "Pagi") {
|
|
$schedules[$i][$hour][] = substr($availability->start_time, 0, -3);
|
|
} elseif (Carbon::createFromTime($time[0], $time[1], $time[2])->timestamp >= Carbon::createFromTime(11, 00, 00)->timestamp && Carbon::createFromTime($time[0], $time[1], $time[2])->timestamp <= Carbon::createFromTime(15, 00, 00)->timestamp && $hour === "Siang") {
|
|
$schedules[$i][$hour][] = substr($availability->start_time, 0, -3);
|
|
} elseif (Carbon::createFromTime($time[0], $time[1], $time[2])->timestamp >= Carbon::createFromTime(15, 01, 00)->timestamp && Carbon::createFromTime($time[0], $time[1], $time[2])->timestamp <= Carbon::createFromTime(18, 00, 00)->timestamp && $hour === "Sore") {
|
|
$schedules[$i][$hour][] = substr($availability->start_time, 0, -3);
|
|
} elseif (Carbon::createFromTime($time[0], $time[1], $time[2])->timestamp >= Carbon::createFromTime(18, 00, 00)->timestamp && Carbon::createFromTime($time[0], $time[1], $time[2])->timestamp <= Carbon::createFromTime(19, 00, 00)->timestamp && $hour === "Petang") {
|
|
$schedules[$i][$hour][] = substr($availability->start_time, 0, -3);
|
|
} elseif (Carbon::createFromTime($time[0], $time[1], $time[2])->timestamp >= Carbon::createFromTime(19, 00, 00)->timestamp && Carbon::createFromTime($time[0], $time[1], $time[2])->timestamp <= Carbon::createFromTime(24, 00, 00)->timestamp && $hour === "Malam") {
|
|
$schedules[$i][$hour][] = substr($availability->start_time, 0, -3);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return (object) $schedules;
|
|
}
|
|
|
|
public static function currencyIdrFormat($price)
|
|
{
|
|
return "Rp. " . number_format($price, 0, ',', '.');
|
|
}
|
|
|
|
public static function makeJsonResponse($data, $statusCode = 200, $message = "Data berhasil diambil")
|
|
{
|
|
return response()->json([
|
|
'statusCode' => $statusCode,
|
|
'message' => $message,
|
|
'data' => $data
|
|
], $statusCode);
|
|
}
|
|
}
|