add web service
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user