Merge pull request #93 from witelgroup/feature/RoadMaitenaceWebService

create sending webservices to panjereh vahed
This commit is contained in:
Amir Ghasempoor
2025-11-12 09:28:09 +03:30
committed by GitHub
13 changed files with 254 additions and 157 deletions

View File

@@ -0,0 +1,18 @@
<?php
namespace App\Events\V3\Dashboard\Harim;
use App\Models\Harim;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class PaymentExecutedEvent
{
use Dispatchable, InteractsWithSockets, SerializesModels;
/**
* Create a new event instance.
*/
public function __construct(public Harim $harim){}
}

View File

@@ -8,6 +8,7 @@ use App\Events\V3\Dashboard\Harim\ConfirmGuaranteeLetterNeedEvent;
use App\Events\V3\Dashboard\Harim\ConfirmNoRoadAccessNeedEvent;
use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessEditNeedEvent;
use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessNeedEvent;
use App\Events\V3\Dashboard\Harim\PaymentExecutedEvent;
use App\Events\V3\Dashboard\Harim\RejectRequestEvent;
use App\Facades\DataTable\DataTableFacade;
use App\Http\Controllers\Controller;
@@ -183,6 +184,8 @@ class GeneralManagerController extends Controller
]
);
PaymentExecutedEvent::dispatch();
return $this->successResponse();
}
}

View File

@@ -223,4 +223,9 @@ class RoadMaintenanceStationController extends Controller
allowedSelects: ['id', 'lat', 'lng', 'status', 'type'],
));
}
public function giveListToFms(): JsonResponse
{
return $this->successResponse(RahdariPoint::all(['id', 'name', 'lat', 'lng', 'area']));
}
}

View File

@@ -3,9 +3,9 @@
namespace App\Listeners\V3\Dashboard\Harim;
use App\Events\V3\Dashboard\Harim\ConfirmGuaranteeLetterNeedEvent;
use App\Services\PanjarehVahed\SendAccessRoadStatusService;
use Exception;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Http\Client\RequestException;
use Illuminate\Support\Facades\Http;
class ConfirmGuaranteeLetterNeedListener implements ShouldQueue
{
@@ -16,38 +16,14 @@ class ConfirmGuaranteeLetterNeedListener implements ShouldQueue
*/
public ?string $queue = 'harim';
protected string $url;
protected string $password;
protected string $username;
public function __construct()
{
$this->url = config('harim_web_services.Guarantee_Letter_Need.url');
$this->username = config('harim_web_services.Guarantee_Letter_Need.username');
$this->password = config('harim_web_services.Guarantee_Letter_Need.password');
}
public function __construct(){}
/**
* @throws RequestException
* @throws Exception
*/
public function handle(ConfirmGuaranteeLetterNeedEvent $event): void
public function handle(ConfirmGuaranteeLetterNeedEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void
{
$encodedData = openssl_decrypt($event->harim->data);
$data = [
'data' => [
'actionId' => $encodedData['actionId'],
'ruleId' => $encodedData['ruleId'],
'activityId' => $encodedData['activityId'],
'requestId' => $encodedData['requestId'],
'taskId' => $encodedData['taskId'],
'code' => $encodedData['code'],
'warrantStatus' => $encodedData['warrantStatus'],
'amountPaid' => $encodedData['amountPaid'],
],
'token' => $encodedData['token']
];
Http::post($this->url, json_encode($data))->throw();
$sendAccessRoadStatusService->makeInputParameters($event->harim->data);
$sendAccessRoadStatusService->run();
}
}

View File

@@ -3,9 +3,9 @@
namespace App\Listeners\V3\Dashboard\Harim;
use App\Events\V3\Dashboard\Harim\ConfirmNoRoadAccessNeedEvent;
use App\Services\PanjarehVahed\SendAccessRoadStatusService;
use Exception;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Http\Client\RequestException;
use Illuminate\Support\Facades\Http;
class ConfirmNoRoadAccessNeedListener implements ShouldQueue
{
@@ -16,38 +16,14 @@ class ConfirmNoRoadAccessNeedListener implements ShouldQueue
*/
public ?string $queue = 'harim';
protected string $url;
protected string $password;
protected string $username;
public function __construct()
{
$this->url = config('harim_web_services.No_Need_Access.url');
$this->username = config('harim_web_services.No_Need_Access.username');
$this->password = config('harim_web_services.No_Need_Access.password');
}
public function __construct(){}
/**
* @throws RequestException
* @throws Exception
*/
public function handle(ConfirmNoRoadAccessNeedEvent $event): void
public function handle(ConfirmNoRoadAccessNeedEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void
{
$encodedData = openssl_decrypt($event->harim->data);
$data = [
'data' => [
'actionId' => $encodedData['actionId'],
'ruleId' => $encodedData['ruleId'],
'activityId' => $encodedData['activityId'],
'requestId' => $encodedData['requestId'],
'taskId' => $encodedData['taskId'],
'code' => $encodedData['code'],
'resultStatus' => $encodedData['resultStatus'],
'Description' => $encodedData['Description'],
],
'token' => $encodedData['token']
];
Http::post($this->url, json_encode($data))->throw();
$sendAccessRoadStatusService->makeInputParameters($event->harim->data);
$sendAccessRoadStatusService->run();
}
}

View File

@@ -3,9 +3,9 @@
namespace App\Listeners\V3\Dashboard\Harim;
use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessEditNeedEvent;
use App\Services\PanjarehVahed\SendAccessRoadStatusService;
use Exception;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Http\Client\RequestException;
use Illuminate\Support\Facades\Http;
class ConfirmRoadAccessEditNeedListener implements ShouldQueue
{
@@ -16,38 +16,14 @@ class ConfirmRoadAccessEditNeedListener implements ShouldQueue
*/
public ?string $queue = 'harim';
protected string $url;
protected string $password;
protected string $username;
public function __construct()
{
$this->url = config('harim_web_services.Edit_Need_Access.url');
$this->username = config('harim_web_services.Edit_Need_Access.username');
$this->password = config('harim_web_services.Edit_Need_Access.password');
}
public function __construct(){}
/**
* @throws RequestException
* @throws Exception
*/
public function handle(ConfirmRoadAccessEditNeedEvent $event): void
public function handle(ConfirmRoadAccessEditNeedEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void
{
$encodedData = openssl_decrypt($event->harim->data);
$data = [
'data' => [
'actionId' => $encodedData['actionId'],
'ruleId' => $encodedData['ruleId'],
'activityId' => $encodedData['activityId'],
'requestId' => $encodedData['requestId'],
'taskId' => $encodedData['taskId'],
'code' => $encodedData['code'],
'resultStatus' => $encodedData['resultStatus'],
'Description' => $encodedData['Description'],
],
'token' => $encodedData['token']
];
Http::post($this->url, json_encode($data))->throw();
$sendAccessRoadStatusService->makeInputParameters($event->harim->data);
$sendAccessRoadStatusService->run();
}
}

View File

@@ -3,9 +3,9 @@
namespace App\Listeners\V3\Dashboard\Harim;
use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessNeedEvent;
use App\Services\PanjarehVahed\SendAccessRoadStatusService;
use Exception;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Http\Client\RequestException;
use Illuminate\Support\Facades\Http;
class ConfirmRoadAccessNeedListener implements ShouldQueue
{
@@ -16,40 +16,16 @@ class ConfirmRoadAccessNeedListener implements ShouldQueue
*/
public ?string $queue = 'harim';
protected string $url;
protected string $password;
protected string $username;
public function __construct()
{
$this->url = config('harim_web_services.Need_Access.url');
$this->username = config('harim_web_services.Need_Access.username');
$this->password = config('harim_web_services.Need_Access.password');
}
public function __construct(){}
/**
* Handle the event.
* @throws RequestException
* @throws Exception
*/
public function handle(ConfirmRoadAccessNeedEvent $event): void
public function handle(ConfirmRoadAccessNeedEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void
{
$encodedData = openssl_decrypt($event->harim->data);
$data = [
'data' => [
'actionId' => $encodedData['actionId'],
'ruleId' => $encodedData['ruleId'],
'activityId' => $encodedData['activityId'],
'requestId' => $encodedData['requestId'],
'taskId' => $encodedData['taskId'],
'code' => $encodedData['code'],
'resultStatus' => $encodedData['resultStatus'],
'Description' => $encodedData['Description'],
],
'token' => $encodedData['token']
];
Http::post($this->url, json_encode($data))->throw();
$sendAccessRoadStatusService->makeInputParameters($event->harim->data);
$sendAccessRoadStatusService->run();
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Listeners\V3\Dashboard\Harim;
use App\Events\V3\Dashboard\Harim\PaymentExecutedEvent;
use App\Services\PanjarehVahed\SendAccessRoadStatusService;
use App\Services\PanjarehVahed\SendPaymentInfoService;
use Exception;
use Illuminate\Contracts\Queue\ShouldQueue;
class PaymentExecutedListener implements ShouldQueue
{
/**
* The name of the queue the job should be sent to.
*
* @var string|null
*/
public ?string $queue = 'harim';
public function __construct(){}
/**
* @throws Exception
*/
public function handle(PaymentExecutedEvent $event, SendPaymentInfoService $sendPaymentInfoService): void
{
$sendPaymentInfoService->makeInputParameters($event->harim->data);
$sendPaymentInfoService->run();
}
}

View File

@@ -3,9 +3,9 @@
namespace App\Listeners\V3\Dashboard\Harim;
use App\Events\V3\Dashboard\Harim\RejectRequestEvent;
use App\Services\PanjarehVahed\SendAccessRoadStatusService;
use Exception;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Http\Client\RequestException;
use Illuminate\Support\Facades\Http;
class RejectRequestListener implements ShouldQueue
{
@@ -16,38 +16,14 @@ class RejectRequestListener implements ShouldQueue
*/
public ?string $queue = 'harim';
protected string $url;
protected string $password;
protected string $username;
public function __construct()
{
$this->url = config('harim_web_services.Reject.url');
$this->username = config('harim_web_services.Reject.username');
$this->password = config('harim_web_services.Reject.password');
}
public function __construct(){}
/**
* @throws RequestException
* @throws Exception
*/
public function handle(RejectRequestEvent $event): void
public function handle(RejectRequestEvent $event, SendAccessRoadStatusService $sendAccessRoadStatusService): void
{
$encodedData = openssl_decrypt($event->harim->data);
$data = [
'data' => [
'actionId' => $encodedData['actionId'],
'ruleId' => $encodedData['ruleId'],
'activityId' => $encodedData['activityId'],
'requestId' => $encodedData['requestId'],
'taskId' => $encodedData['taskId'],
'code' => $encodedData['code'],
'resultStatus' => $encodedData['resultStatus'],
'Description' => $encodedData['Description'],
],
'token' => $encodedData['token']
];
Http::post($this->url, json_encode($data))->throw();
$sendAccessRoadStatusService->makeInputParameters($event->harim->data);
$sendAccessRoadStatusService->run();
}
}

View File

@@ -6,12 +6,14 @@ use App\Events\V3\Dashboard\Harim\ConfirmGuaranteeLetterNeedEvent;
use App\Events\V3\Dashboard\Harim\ConfirmNoRoadAccessNeedEvent;
use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessEditNeedEvent;
use App\Events\V3\Dashboard\Harim\ConfirmRoadAccessNeedEvent;
use App\Events\V3\Dashboard\Harim\PaymentExecutedEvent;
use App\Events\V3\Dashboard\Harim\RejectRequestEvent;
use App\Events\V3\Dashboard\Mission\SendDataToFMSEvent;
use App\Listeners\V3\Dashboard\Harim\ConfirmGuaranteeLetterNeedListener;
use App\Listeners\V3\Dashboard\Harim\ConfirmNoRoadAccessNeedListener;
use App\Listeners\V3\Dashboard\Harim\ConfirmRoadAccessEditNeedListener;
use App\Listeners\V3\Dashboard\Harim\ConfirmRoadAccessNeedListener;
use App\Listeners\V3\Dashboard\Harim\PaymentExecutedListener;
use App\Listeners\V3\Dashboard\Harim\RejectRequestListener;
use App\Listeners\V3\Dashboard\Mission\SendDataToFMSListener;
use Illuminate\Auth\Events\Registered;
@@ -55,7 +57,10 @@ class EventServiceProvider extends ServiceProvider
],
SendDataToFMSEvent::class => [
SendDataToFMSListener::class
]
],
PaymentExecutedEvent::class => [
PaymentExecutedListener::class
],
];
/**

View File

@@ -0,0 +1,74 @@
<?php
namespace App\Services\PanjarehVahed;
use Exception;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
class SendAccessRoadStatusService
{
protected string $url;
protected string $channelName;
protected string $inputParameters;
public function __construct()
{
$this->url = config('harim_web_services.Reject.url');
$this->channelName = '';
}
/**
* @throws Exception
*/
public function run(): array
{
try {
return $this->sendRequest();
}
catch (Exception $e) {
Log::channel($this->channelName)
->error(get_class($this),
[
'message' => $e->getMessage(),
]
);
throw $e;
}
}
private function sendRequest(): array
{
return Http::withHeaders(['Content-Type' => 'application/json'])
->withBody($this->inputParameters)
->throw()
->withoutVerifying()
->post($this->url)
->json();
}
public function makeInputParameters($data): void
{
$arrayData = json_decode($data, true);
$inputParameters = [
'data' => [
'actionId' => $arrayData['actionId'],
'ruleId' => $arrayData['ruleId'],
'activityId' => $arrayData['activityId'],
'requestId' => $arrayData['requestId'],
'taskId' => $arrayData['taskId'],
'code' => $arrayData['code'],
'resultStatus' => $arrayData['resultStatus'],
'Description' => $arrayData['Description'],
],
'token' => $arrayData['token'],
];
$key = config('harim_web_services.Harim_Info.key');
$iv = config('harim_web_services.Harim_Info.iv');
$this->inputParameters = openssl_encrypt(json_encode($inputParameters), 'aes-256-cbc', $key, false, $iv);
}
}

View File

@@ -0,0 +1,74 @@
<?php
namespace App\Services\PanjarehVahed;
use Exception;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
class SendPaymentInfoService
{
protected string $url;
protected string $channelName;
protected string $inputParameters;
public function __construct()
{
$this->url = config('harim_web_services.Reject.url');
$this->channelName = '';
}
/**
* @throws Exception
*/
public function run(): array
{
try {
return $this->sendRequest();
}
catch (Exception $e) {
Log::channel($this->channelName)
->error(get_class($this),
[
'message' => $e->getMessage(),
]
);
throw $e;
}
}
private function sendRequest(): array
{
return Http::withHeaders(['Content-Type' => 'application/json'])
->withBody($this->inputParameters)
->throw()
->withoutVerifying()
->post($this->url)
->json();
}
public function makeInputParameters($data): void
{
$arrayData = json_decode($data, true);
$inputParameters = [
'data' => [
'actionId' => $arrayData['actionId'],
'ruleId' => $arrayData['ruleId'],
'activityId' => $arrayData['activityId'],
'requestId' => $arrayData['requestId'],
'taskId' => $arrayData['taskId'],
'code' => $arrayData['code'],
'warrantStatus' => $arrayData['warrantStatus'],
'amountPaid' => $arrayData['amountPaid'],
],
'token' => $arrayData['token'],
];
$key = config('harim_web_services.Harim_Info.key');
$iv = config('harim_web_services.Harim_Info.iv');
$this->inputParameters = openssl_encrypt(json_encode($inputParameters), 'aes-256-cbc', $key, false, $iv);
}
}

View File

@@ -2,6 +2,7 @@
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\V3\Dashboard\Harim\PanjareVahedController;
use App\Http\Controllers\V3\Dashboard\RoadMaintenanceStationController;
Route::prefix('harim')
->name('harim.')
@@ -15,4 +16,11 @@ Route::prefix('harim')
Route::post('/get_status_request','getRejectRequest')->name('getRejectRequest');
Route::post('/get_final_polygons','getFinalPolygons')->name('getFinalPolygons');
});
});
});
Route::prefix('road_maintenance_station')
->name('roadMaintenanceStation.')
->controller( RoadMaintenanceStationController::class)
->group(function () {
Route::get('/list', 'giveListToFms')->name('giveListToFms');
});