Merge pull request #108 from witelgroup/feature/NoProcess
add web service
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers\V3\Dashboard\Mission;
|
namespace App\Http\Controllers\V3\Dashboard\Mission;
|
||||||
|
|
||||||
|
use App\Enums\FMSResultCode;
|
||||||
use App\Enums\MissionStates;
|
use App\Enums\MissionStates;
|
||||||
use App\Events\V3\Dashboard\Mission\SendDataToFMSEvent;
|
use App\Events\V3\Dashboard\Mission\SendDataToFMSEvent;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
@@ -11,6 +12,7 @@ use App\Http\Requests\V3\Mission\ControlUnit\StartRequest;
|
|||||||
use App\Http\Traits\ApiResponse;
|
use App\Http\Traits\ApiResponse;
|
||||||
use App\Models\Mission;
|
use App\Models\Mission;
|
||||||
use App\Services\Cartables\Mission\ControlUnitService;
|
use App\Services\Cartables\Mission\ControlUnitService;
|
||||||
|
use App\Services\FMS\GetErrorRateService;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
@@ -52,9 +54,9 @@ class ControlUnitController extends Controller
|
|||||||
/**
|
/**
|
||||||
* @throws Throwable
|
* @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([
|
$mission->histories()->create([
|
||||||
'user_id' => auth()->user()->id,
|
'user_id' => auth()->user()->id,
|
||||||
'previous_state_id' => $mission->state_id,
|
'previous_state_id' => $mission->state_id,
|
||||||
@@ -69,6 +71,18 @@ class ControlUnitController extends Controller
|
|||||||
'finish_time' => now(),
|
'finish_time' => now(),
|
||||||
'mission_duration' => strtotime(now()) - strtotime($mission->start_time),
|
'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) {
|
if ($mission->category_id == 2) {
|
||||||
@@ -76,7 +90,7 @@ class ControlUnitController extends Controller
|
|||||||
$rpc->store($mission);
|
$rpc->store($mission);
|
||||||
}
|
}
|
||||||
|
|
||||||
SendDataToFMSEvent::dispatch($mission);
|
// SendDataToFMSEvent::dispatch($mission);
|
||||||
|
|
||||||
return $this->successResponse();
|
return $this->successResponse();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers\V3\Dashboard\Mission;
|
namespace App\Http\Controllers\V3\Dashboard\Mission;
|
||||||
|
|
||||||
|
use App\Enums\FMSResultCode;
|
||||||
use App\Enums\MissionCategory;
|
use App\Enums\MissionCategory;
|
||||||
use App\Enums\MissionStates;
|
use App\Enums\MissionStates;
|
||||||
use App\Enums\MissionTypes;
|
use App\Enums\MissionTypes;
|
||||||
@@ -17,6 +18,7 @@ use App\Models\CMMSMachine;
|
|||||||
use App\Models\Mission;
|
use App\Models\Mission;
|
||||||
use App\Models\RoadObserved;
|
use App\Models\RoadObserved;
|
||||||
use App\Services\Cartables\Mission\RequestPortalService;
|
use App\Services\Cartables\Mission\RequestPortalService;
|
||||||
|
use App\Services\FMS\GetErrorRateService;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
@@ -83,9 +85,9 @@ class RequestPortalController extends Controller
|
|||||||
/**
|
/**
|
||||||
* @throws Throwable
|
* @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();
|
$user = auth()->user();
|
||||||
|
|
||||||
$mission->update([
|
$mission->update([
|
||||||
@@ -94,6 +96,18 @@ class RequestPortalController extends Controller
|
|||||||
'state_name' => MissionStates::name(MissionStates::END_MISSION->value),
|
'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) {
|
if ($mission->category_id == 2) {
|
||||||
$rpc = new OperatorController;
|
$rpc = new OperatorController;
|
||||||
$rpc->store($mission);
|
$rpc->store($mission);
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ class DeallocateRequest extends FormRequest
|
|||||||
*/
|
*/
|
||||||
public function authorize(): bool
|
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;
|
$mission = $event->mission;
|
||||||
|
|
||||||
$this->getErrorRateService->setInputParameters([
|
$this->getErrorRateService->setInputParameters($mission);
|
||||||
'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,
|
|
||||||
]);
|
|
||||||
|
|
||||||
$responseData = $this->getErrorRateService->run();
|
$responseData = $this->getErrorRateService->run();
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Services\FMS;
|
namespace App\Services\FMS;
|
||||||
|
|
||||||
|
use App\Models\Mission;
|
||||||
use Exception;
|
use Exception;
|
||||||
use Illuminate\Support\Facades\Http;
|
use Illuminate\Support\Facades\Http;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
@@ -18,9 +19,17 @@ class GetErrorRateService
|
|||||||
$this->channelName = 'fms_error_rate';
|
$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