create FMS service with test

This commit is contained in:
2024-04-22 11:28:19 +03:30
parent 5f839385f8
commit acd7c496b5
15 changed files with 701 additions and 67 deletions

View File

@@ -7,6 +7,7 @@ use App\Models\CMMS_Form;
use App\Models\CMMS_Forms_histories;
use App\Models\CMMS_Province;
use App\Models\CmmsDemo;
use App\Services\FMSService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
@@ -18,7 +19,7 @@ use Illuminate\Support\Facades\Http;
class CMMSController extends Controller
{
public function getVehicleActivity(Request $request)
public function getVehicleActivity(Request $request, FMSService $FMSService)
{
if (!$request->machineCode || !$request->startDT || !$request->endDT || !$request->minStopDuration) {
@@ -26,22 +27,8 @@ class CMMSController extends Controller
'message' => 'error'
]);
}
$r = $request->machineCode;
$s = $request->startDT;
$e = $request->endDT;
$d = $request->minStopDuration;
$url = 'http://fms.141.ir/api/RMS/GetVehicleActivity?';
$query = "username=RMS&password=XSW@1qaz&machineCode={$r}&startDT={$s}&endDT={$e}&minStopDuration={$d}";
$full_url = $url . $query;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $full_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"username=RMS&password=XSW@1qaz&machineCode={$r}&startDT={$s}&endDT={$e}&minStopDuration={$d}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
$server_output = $FMSService->getVehicleActivity($request);
$d = json_decode($server_output, true);
@@ -58,7 +45,7 @@ class CMMSController extends Controller
}
public function getVehicleLastPoints(Request $request)
public function getVehicleLastPoints(Request $request, FMSService $FMSService)
{
if (!$request->machineCode) {
@@ -66,19 +53,8 @@ class CMMSController extends Controller
'message' => 'error'
]);
}
$r = $request->machineCode;
$url = 'http://fms.141.ir/api/RMS/GetVehicleLastPoints?';
$query = "username=RMS&password=XSW@1qaz&machineCodes={$r}";
$full_url = $url . $query;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $full_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"username=RMS&password=XSW@1qaz&machineCode={$r}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
$server_output = $FMSService->getVehicleLastPoints($request);
$d = json_decode($server_output, true);
return $d;
@@ -95,7 +71,7 @@ class CMMSController extends Controller
}
public function getVehicleActivitySummary(Request $request)
public function getVehicleActivitySummary(Request $request, FMSService $FMSService)
{
if (!$request->machineCode || !$request->startDT || !$request->endDT) {
@@ -103,21 +79,8 @@ class CMMSController extends Controller
'message' => 'error'
]);
}
$r = $request->machineCode;
$s = $request->startDT;
$e = $request->endDT;
$url = 'http://fms.141.ir/api/RMS/GetVehicleActivitySummary?';
$query = "username=RMS&password=XSW@1qaz&machineCode={$r}&startDT={$s}&endDT={$e}";
$full_url = $url . $query;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $full_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"username=RMS&password=XSW@1qaz&machineCode={$r}&startDT={$s}&endDT={$e}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
$server_output = $FMSService->getVehicleActivitySummary($request);
$d = json_decode($server_output, true);
@@ -135,17 +98,9 @@ class CMMSController extends Controller
}
public function getVehicleData(Request $request)
{
$r = $request->machine;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://fms.141.ir/api/RMS/GetVehicleLastPoints?username=RMS&password=XSW@1qaz&machineCodes={$r}");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"username=RMS&password=XSW@1qaz&machineCodes={$r}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
public function getVehicleData(Request $request, FMSService $FMSService)
{
$server_output = $FMSService->getVehicleData($request);
$d = json_decode($server_output);

View File

@@ -3,10 +3,12 @@
namespace App\Http\Controllers;
use App\Models\Coridor;
use App\Models\RoadPatrol;
use App\Models\RoutePath;
use App\Models\RoadItemsProject;
use App\Models\InfoItem;
use App\Services\NominatimService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
@@ -484,7 +486,7 @@ class CoridorsController extends Controller
return 0;
}
public function axisReportByLatAndLng(Request $request)
public function axisReportByLatAndLng(Request $request, NominatimService $nominatimService)
{
if (! $request->type) {
return response()->json([
@@ -496,7 +498,7 @@ class CoridorsController extends Controller
$date_from = $request->date_from;
$info_id = $request->daily_activity;
$roadObservedTypes = $request->road_type;
$idArrays = self::getIDFromNominatim($request->slng, $request->slat, $request->dlng, $request->dlat);
$idArrays = $nominatimService->getIDFromNominatim($request->slng, $request->slat, $request->dlng, $request->dlat);
$typeArrays = $request->type;
$contractStatusArrays = $request->contract_status ?? [];
$projectTypeArrays = $request->project_type ?? [];
@@ -514,13 +516,13 @@ class CoridorsController extends Controller
}
if ( in_array(2, $typeArrays) ) {
$roadPatrolProject = RoadPatrolProject::where(function($query) use($idArrays){
$roadPatrolProject = RoadPatrol::where(function($query) use($idArrays){
$query->whereIn("start_way_id", $idArrays)
->orWhereIn("end_way_id", $idArrays);
})
->whereBetween('created_at', [$date_from . ' 00:00:00', $date_to . ' 23:59:59'])
->whereNotNull('start_lat')
->select('start_lat', 'start_lng', 'id')
->select('start_lat', 'start_lon', 'id')
->get();
}
@@ -686,7 +688,7 @@ class CoridorsController extends Controller
}
public function axisReportExcelRedirector(Request $request)
public function axisReportExcelRedirector(Request $request, NominatimService $nominatimService)
{
if (! $request->type) {
return response()->json([
@@ -698,7 +700,7 @@ class CoridorsController extends Controller
$date_from = $request->date_from;
$info_id = $request->daily_activity;
$roadObservedTypes = $request->road_type;
$idArrays = self::getIDFromNominatim($request->slng, $request->slat, $request->dlng, $request->dlat);
$idArrays = $nominatimService->getIDFromNominatim($request->slng, $request->slat, $request->dlng, $request->dlat);
$typeArrays = $request->type;
$contractStatusArrays = $request->contract_status ?? [];
$projectTypeArrays = $request->project_type ?? [];

View File

@@ -2,12 +2,13 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Traits\ReceiptReportAble;
class Accident extends Model
{
use ReceiptReportAble;
use ReceiptReportAble, HasFactory;
public static function boot()
{
parent::boot();

View File

@@ -2,13 +2,14 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Models\ContractSubItemsHistory;
use App\Http\Controllers\Api\ContractSubItemsController;
class ContractSubItems extends Model
{
use HasFactory;
public static function boot()
{
parent::boot();

View File

@@ -2,13 +2,14 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Models\Province;
use Illuminate\Http\Request;
class Contracts extends Model
{
use HasFactory;
public static function boot()
{
parent::boot();

View File

@@ -0,0 +1,98 @@
<?php
namespace App\Services;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
class FMSService
{
public function getVehicleActivity(Request $request)
{
if (App::isProduction()) {
$r = $request->machineCode;
$s = $request->startDT;
$e = $request->endDT;
$d = $request->minStopDuration;
$url = 'http://fms.141.ir/api/RMS/GetVehicleActivity?';
$query = "username=RMS&password=XSW@1qaz&machineCode={$r}&startDT={$s}&endDT={$e}&minStopDuration={$d}";
$full_url = $url . $query;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $full_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"username=RMS&password=XSW@1qaz&machineCode={$r}&startDT={$s}&endDT={$e}&minStopDuration={$d}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
return curl_exec($ch);
}
return json_encode([
'ResultCode' => 0
]);
}
public function getVehicleData(Request $request)
{
if (App::isProduction()) {
$r = $request->machine;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://fms.141.ir/api/RMS/GetVehicleLastPoints?username=RMS&password=XSW@1qaz&machineCodes={$r}");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"username=RMS&password=XSW@1qaz&machineCodes={$r}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
return curl_exec($ch);
}
$output = (object)['ResultCode' => 0];
return json_encode([
[$output]
]);
}
public function getVehicleLastPoints(Request $request)
{
if (App::isProduction()) {
$r = $request->machineCode;
$url = 'http://fms.141.ir/api/RMS/GetVehicleLastPoints?';
$query = "username=RMS&password=XSW@1qaz&machineCodes={$r}";
$full_url = $url . $query;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $full_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"username=RMS&password=XSW@1qaz&machineCode={$r}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
return curl_exec($ch);
}
return json_encode([
'ResultCode' => 0
]);
}
public function getVehicleActivitySummary(Request $request)
{
if (App::isProduction()) {
$r = $request->machineCode;
$s = $request->startDT;
$e = $request->endDT;
$url = 'http://fms.141.ir/api/RMS/GetVehicleActivitySummary?';
$query = "username=RMS&password=XSW@1qaz&machineCode={$r}&startDT={$s}&endDT={$e}";
$full_url = $url . $query;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $full_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"username=RMS&password=XSW@1qaz&machineCode={$r}&startDT={$s}&endDT={$e}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
return curl_exec($ch);
}
return json_encode([
'ResultCode' => 0
]);
}
}

View File

@@ -30,4 +30,36 @@ class NominatimService
return 0;
}
function getIDFromNominatim($s_lng, $s_lat, $d_lng, $d_lat)
{
if (App::isProduction())
{
$url = "https://testmap.141.ir/route/v1/driving/" . $s_lng . "," . $s_lat . ";" . $d_lng . "," . $d_lat . "?overview=full&alternatives=true&steps=true";
$arrContextOptions = array(
"ssl" => array(
"verify_peer" => false,
"verify_peer_name" => false,
),
);
$result = file_get_contents($url, false, stream_context_create($arrContextOptions));
$result = json_decode($result);
if (count($result->routes) > 1 && $result->routes[1]->distance < $result->routes[0]->distance) {
// if(){
$ways = $result->routes[1]->legs[0]->steps;
// }
} else
$ways = $result->routes[0]->legs[0]->steps;
$ids = array();
foreach ($ways as $key => $value) {
if (!in_array($value->name, $ids)) {
$ids[] = $value->name;
}
}
return $ids;
}
return [1, 2, 3];
}
}