![]() 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/ |
<?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; } }