![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/job-board.corals.io/Corals/modules/Reservation/Transformers/ |
<?php namespace Corals\Modules\Reservation\Transformers; use Corals\Foundation\Transformers\BaseTransformer; use Corals\Modules\Reservation\Facades\ReservationFacade; use Corals\Modules\Reservation\Models\Reservation; use Corals\Modules\Reservation\Models\Service; use Illuminate\Support\Str; class ReservationTransformer extends BaseTransformer { public function __construct($extras = []) { $this->resource_url = config('reservation.models.reservation.resource_url'); parent::__construct($extras); } /** * @param Reservation $reservation * @return array * @throws \Throwable */ public function transform(Reservation $reservation) { $transformedArray = [ 'id' => $reservation->id, 'code' => HtmlElement('a', ['href' => $reservation->getShowURL()], $reservation->code), 'owner_type' => $reservation->owner_type, 'owner' => optional($reservation->owner, function ($owner) { return $owner->present('name'); }) ?? '-', 'object_type' => $reservation->object_type, 'status' => ReservationFacade::reservationStatusColoring($reservation->status), 'object' => $reservation->object_type === getMorphAlias(Service::class) ? $reservation->service->present('name') : $reservation->object->present('identifier'), 'starts_at' => format_date_time($reservation->starts_at), 'ends_at' => format_date_time($reservation->ends_at), 'service' => $reservation->service->present('name'), 'quantity' => $reservation->quantity ?? 1, 'period' => $this->formatPeriod($reservation->period_in_minutes), 'notes' => $reservation->notes ?? '-', 'created_at' => format_date($reservation->created_at), 'updated_at' => format_date($reservation->updated_at), 'action' => $this->actions($reservation) ]; return parent::transformResponse($transformedArray); } protected function formatPeriod($periodInMinutes) { if (!$periodInMinutes) { return '-'; } $hour = 60; $day = $hour * 24; $week = $day * 7; $month = $day * 30; $year = $day * 365; $periods = [ 'year' => $year, 'month' => $month, 'week' => $week, 'day' => $day, 'hour' => $hour, 'minute' => 1 ]; $output = []; foreach ($periods as $period_name => $period) { $value = floor($periodInMinutes / $period); if (!$value) { continue; } $output[] = sprintf("%s %s", $value, Str::plural($period_name, $value)); $periodInMinutes -= $value * $period; } return ucwords(implode(' : ', $output)); } }