add web service

This commit is contained in:
2025-12-21 15:15:24 +03:30
parent e435aa8372
commit 7ba3d53155
5 changed files with 47 additions and 17 deletions

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers\V3\Dashboard\Mission;
use App\Enums\FMSResultCode;
use App\Enums\MissionStates;
use App\Events\V3\Dashboard\Mission\SendDataToFMSEvent;
use App\Http\Controllers\Controller;
@@ -11,6 +12,7 @@ use App\Http\Requests\V3\Mission\ControlUnit\StartRequest;
use App\Http\Traits\ApiResponse;
use App\Models\Mission;
use App\Services\Cartables\Mission\ControlUnitService;
use App\Services\FMS\GetErrorRateService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
@@ -52,9 +54,9 @@ class ControlUnitController extends Controller
/**
* @throws Throwable
*/
public function finish(FinishRequest $request, Mission $mission): JsonResponse
public function finish(FinishRequest $request, Mission $mission, GetErrorRateService $getErrorRateService): JsonResponse
{
DB::transaction(function () use ($mission) {
DB::transaction(function () use ($mission, $getErrorRateService) {
$mission->histories()->create([
'user_id' => auth()->user()->id,
'previous_state_id' => $mission->state_id,
@@ -69,6 +71,18 @@ class ControlUnitController extends Controller
'finish_time' => now(),
'mission_duration' => strtotime(now()) - strtotime($mission->start_time),
]);
$getErrorRateService->setInputParameters($mission);
$responseData = $getErrorRateService->run();
$mission->update([
'in_area_duration' => $responseData['timeInAreaSeconds'],
'first_enter' => $responseData['firstEnter'],
'last_exit' => $responseData['lastExit'],
'point_number_sent' => $responseData['noOfPointsInMission'],
'fms_result_code' => $responseData['resultCode'],
'fms_result_message' => FMSResultCode::name($responseData['resultCode']),
]);
});
if ($mission->category_id == 2) {
@@ -76,7 +90,7 @@ class ControlUnitController extends Controller
$rpc->store($mission);
}
SendDataToFMSEvent::dispatch($mission);
// SendDataToFMSEvent::dispatch($mission);
return $this->successResponse();
}

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers\V3\Dashboard\Mission;
use App\Enums\FMSResultCode;
use App\Enums\MissionCategory;
use App\Enums\MissionStates;
use App\Enums\MissionTypes;
@@ -17,6 +18,7 @@ use App\Models\CMMSMachine;
use App\Models\Mission;
use App\Models\RoadObserved;
use App\Services\Cartables\Mission\RequestPortalService;
use App\Services\FMS\GetErrorRateService;
use Carbon\Carbon;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
@@ -83,9 +85,9 @@ class RequestPortalController extends Controller
/**
* @throws Throwable
*/
public function continueMission(ContinueMissionRequest $request, Mission $mission): JsonResponse
public function continueMission(ContinueMissionRequest $request, Mission $mission, GetErrorRateService $getErrorRateService): JsonResponse
{
DB::transaction(function () use ($request, $mission) {
DB::transaction(function () use ($request, $mission, $getErrorRateService) {
$user = auth()->user();
$mission->update([
@@ -94,6 +96,18 @@ class RequestPortalController extends Controller
'state_name' => MissionStates::name(MissionStates::END_MISSION->value),
]);
$getErrorRateService->setInputParameters($mission);
$responseData = $getErrorRateService->run();
$mission->update([
'in_area_duration' => $responseData['timeInAreaSeconds'],
'first_enter' => $responseData['firstEnter'],
'last_exit' => $responseData['lastExit'],
'point_number_sent' => $responseData['noOfPointsInMission'],
'fms_result_code' => $responseData['resultCode'],
'fms_result_message' => FMSResultCode::name($responseData['resultCode']),
]);
if ($mission->category_id == 2) {
$rpc = new OperatorController;
$rpc->store($mission);

View File

@@ -13,7 +13,8 @@ class DeallocateRequest extends FormRequest
*/
public function authorize(): bool
{
return $this->mission->edare_shahri_id == auth()->user()->edarate_shahri_id && $this->mission->state_id == MissionStates::REQUEST_CREATED->value;
return $this->mission->edare_shahri_id == auth()->user()->edarate_shahri_id &&
in_array($this->mission->state_id, [MissionStates::REQUEST_CREATED->value, MissionStates::PENDING_CONFIRMATION->value]);
}
/**

View File

@@ -28,15 +28,7 @@ class SendDataToFMSListener implements ShouldQueue
{
$mission = $event->mission;
$this->getErrorRateService->setInputParameters([
'username' => config('fms_web_services.Error_Rate.username'),
'password' => config('fms_web_services.Error_Rate.password'),
'missionArea' => $mission->getMissionAreaForFms(),
'missionStartDT' => $mission->start_time->format('Y-m-d\TH:i:s'),
'missionEndDT' => $mission->finish_time->format('Y-m-d\TH:i:s'),
'machineCode' => $mission->machine_code,
'areaType' => $mission->area['type'] === 'polygon' ? 1 : 2,
]);
$this->getErrorRateService->setInputParameters($mission);
$responseData = $this->getErrorRateService->run();

View File

@@ -2,6 +2,7 @@
namespace App\Services\FMS;
use App\Models\Mission;
use Exception;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
@@ -18,9 +19,17 @@ class GetErrorRateService
$this->channelName = 'fms_error_rate';
}
public function setInputParameters(array $inputs): void
public function setInputParameters(Mission $mission): void
{
$this->inputParameters = $inputs;
$this->inputParameters = [
'username' => config('fms_web_services.Error_Rate.username'),
'password' => config('fms_web_services.Error_Rate.password'),
'missionArea' => $mission->getMissionAreaForFms(),
'missionStartDT' => $mission->start_time->format('Y-m-d\TH:i:s'),
'missionEndDT' => $mission->finish_time->format('Y-m-d\TH:i:s'),
'machineCode' => $mission->machine_code,
'areaType' => $mission->area['type'] === 'polygon' ? 1 : 2,
];
}
/**