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/rentpix.corals.io/Corals/modules/RentPix/Services/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/rentpix.corals.io/Corals/modules/RentPix/Services/InspectionService.php
<?php

namespace Corals\Modules\RentPix\Services;

use Corals\Foundation\Services\BaseServiceClass;
use Corals\Modules\RentPix\Classes\Integration\RentalAPIService;
use Corals\Modules\RentPix\Jobs\InspectionImagesUploadedJob;
use Corals\Modules\RentPix\Models\Inspection;
use Corals\Modules\RentPix\Traits\InspectionsTrait;
use Corals\Modules\Utility\Facades\ListOfValue\ListOfValues;
use Corals\Modules\Utility\Traits\Gallery\ServiceHasGalleryTrait;
use Illuminate\Database\Eloquent\Model;

class InspectionService extends BaseServiceClass
{
    use ServiceHasGalleryTrait, InspectionsTrait;

    /**
     * excludedRequestParams.
     *
     * @var string[]
     */
    protected $excludedRequestParams = [
        'gallery_new',
        'gallery_deleted',
        'gallery_favorite',
    ];

    /**
     * preStore.
     *
     * @param $request
     * @param $additionalData
     */
    public function preStore($request, &$additionalData)
    {
        $additionalData['code'] = $request->filled('code') ? $request->get('code') : Inspection::getSeqCode();
    }

    /**
     * postStoreUpdate.
     *
     * @param $request
     * @param $additionalData
     */
    public function postStoreUpdate($request, &$additionalData)
    {
        $this->handleGalleryInputs($request, $this->model);
    }

    public function updateInspectionStatus($inspection, $status)
    {
        $inspection->update(['status' => $status]);

        if ($inspection->wasChanged(['status'])) {
            event('notifications.rentpix.inspection_submitted', [
                'inspection' => $inspection,
                'user' => user(),
            ]);
        }
        return $inspection;
    }

    public function submitInspection($inspection, $status)
    {
        $this->updateInspectionStatus($inspection, $status);

        $this->generateImagesThumbs($inspection);

        return $inspection;
    }

    public function generateImagesThumbs($inspection)
    {
        dispatch(new InspectionImagesUploadedJob($inspection));
    }

    public function fetchInspectionDrivers($inspection)
    {
        $rentalAPIService = new RentalAPIService();

        $reservation = $rentalAPIService->getReservationDetails($inspection->reservation->code, null, true);

        $drivers = data_get($reservation, 'data.drivers', []);

        $this->formatDriversAndHandler($drivers, $inspection);

        return $inspection;
    }

    public function setPrimaryDriver($inspection, $driver)
    {
        $inspection->drivers()
            ->wherePivot('driver_id', $driver->id)
            ->updateExistingPivot($driver->id, ['is_primary' => 1]);

        $inspection->drivers()
            ->where('driver_id', '!=', $driver->id)
            ->update(['is_primary' => 0]);
    }

    public function getInspectionDetails(Inspection|Model $inspection)
    {
        $details = $this->getModelDetails($inspection);

        $unit = $inspection->reservation->unit;

        $rateCodePhotos = collect([]);

        $promptedPhotos = [];

        if ($unit->rate_code) {
            $rateCodePhotos = $unit->rateCode->rateCodePhotos;
        }

        ListOfValues::get('rentPix_prompted_photos', true)
            ->map(function ($lov) use ($rateCodePhotos, &$promptedPhotos) {
                $is_required = $lov->getProperty('is_required', 0);
                $damage_circle_enabled = $lov->getProperty('damage_circle_enabled');

                $photo = $rateCodePhotos->where('photo_lov_code', $lov->code)->first();

                if ($photo) {
                    if ($photo->exclude) {
                        return;
                    }

                    $is_required = $photo->is_required;
                    $damage_circle_enabled = $photo->damage_circle_enabled;
                }

                $promptedPhotos[] = [
                    'key' => $lov->code,
                    'value' => $lov->label,
                    'is_required' => (int)$is_required,
                    'sample_link' => $lov->getProperty('sample_link') ? asset($lov->getProperty('sample_link')) : '',
                    'sample_link_thumb' => $lov->getProperty('sample_link') ? asset($lov->getProperty('sample_link_thumb')) : '',
                    'damage_circle_enabled' => $damage_circle_enabled,
                ];
            });

        $details['prompted_photos'] = $promptedPhotos;

        return $details;
    }
}

Spamworldpro Mini