first commit
This commit is contained in:
93
app/Http/Middleware/PropertyMiddleware.php
Normal file
93
app/Http/Middleware/PropertyMiddleware.php
Normal file
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use App\Core\Service\ServiceLogService;
|
||||
use Closure;
|
||||
use Exception;
|
||||
use App\Models\User;
|
||||
use App\Core\Repository\UserPropertyMapping\UserPropertyMappingRepository;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
class PropertyMiddleware
|
||||
{
|
||||
|
||||
private $userPropertyMappingRepository;
|
||||
|
||||
public function __construct(
|
||||
UserPropertyMappingRepository $userPropertyMappingRepository,
|
||||
ServiceLogService $serviceLogService
|
||||
)
|
||||
{
|
||||
$this->userPropertyMappingRepository = $userPropertyMappingRepository;
|
||||
$this->serviceLogService = $serviceLogService;
|
||||
}
|
||||
|
||||
|
||||
public function handle($request, Closure $next, $guard = null)
|
||||
{
|
||||
$userId = $request->credentials->user_id;
|
||||
|
||||
$propertyId = $request->property_id ? $request->property_id : fillOnUndefined($request->params, 'property_id');
|
||||
if (!$propertyId) {
|
||||
return apiResponse(0, 'Property_id required.', null, 401);
|
||||
}
|
||||
$checkPropertyUserRequest = [
|
||||
'criteria' => [
|
||||
['field' => 'user_id', 'condition' => '=', 'value' => $userId],
|
||||
['field' => 'property_id', 'condition' => '=', 'value' => $propertyId],
|
||||
['field' => 'status', 'condition' => '=', 'value' => 1],
|
||||
],
|
||||
'with' => ['property'],
|
||||
'firstRow' => 1
|
||||
];
|
||||
|
||||
$checkPropertyUser = $this->userPropertyMappingRepository->findByCriteria($checkPropertyUserRequest);
|
||||
if (!$checkPropertyUser) {
|
||||
return apiResponse(0, 'User not matched this property.', null, 400);
|
||||
}
|
||||
|
||||
if (!$checkPropertyUser['property']['status']) {
|
||||
return apiResponse(0, 'User not matched this property.', null, 400);
|
||||
}
|
||||
|
||||
/** ServiceLog **/
|
||||
$request->serviceLogId = null;
|
||||
$request->serviceLogRequestTime = microtime(true);
|
||||
$selectedRoute = [
|
||||
//'Property.Dashboard',
|
||||
'Property.RoomRateMapping.RoomRateAvailabilityUpdate',
|
||||
'Property.RoomRateMapping.BulkUpdate',
|
||||
'RoomRateChannelPromotion.Update',
|
||||
'Property.Promotion.Update',
|
||||
'PA.Property.Quick-Pricing.Sync'
|
||||
];
|
||||
$route = $request->route();
|
||||
$routeName = isset($route[1]['as']) ? $route[1]['as'] : null;
|
||||
$inputs = json_decode($request->getContent(), true);
|
||||
if (in_array($routeName, $selectedRoute)) {
|
||||
$serviceLogParam = [
|
||||
'property_id' => $propertyId,
|
||||
'user_id' => $userId,
|
||||
'service' => $routeName,
|
||||
'request' => json_encode($inputs),
|
||||
'ip_address' => $request->ip(),
|
||||
'status' => 2
|
||||
];
|
||||
|
||||
$serviceLog = $this->serviceLogService->create($serviceLogParam);
|
||||
|
||||
if($serviceLog['status'] == 'success' && !empty($serviceLog['data'])) {
|
||||
$request->serviceLogId = $serviceLog['data']['id'];
|
||||
}
|
||||
|
||||
}
|
||||
/** ServiceLog **/
|
||||
|
||||
return $next($request);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user