Server : Apache System : Linux 145.162.205.92.host.secureserver.net 5.14.0-611.45.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Apr 1 05:56:53 EDT 2026 x86_64 User : tradze ( 1001) PHP Version : 8.1.34 Disable Function : NONE Directory : /home/tradze/www/app/Modules/Users/Http/Controllers/Api/ |
<?php
namespace App\Modules\Users\Http\Controllers\Api;
use App\Http\Controllers\ApiController;
use App\Modules\Users\Http\Requests\AccountAddressRequest;
use App\Modules\Users\Models\UserLocation;
use App\User;
use Illuminate\Http\Request;
use App\Modules\Users\Models\UserAddress;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use App\Modules\Postcodes\Models\Postcode;
class ApiLocationController extends ApiController
{
/**
* Store new location address
* @param Request $request
*/
public function store(Request $request)
{
$locationData = $request->location['coords'];
//set validator rules
if (!$locationData['latitude'] || !$locationData['longitude'])
return response([
'success'=>false,
'message' => 'Longitude and Latitude are required!',
'data'=>[],
],422);
// dd($request->all());
// return response(['data'=>$request->location['is_moving']],200);
//create data array
$data = [
'user_id' => $this->user->id,
'lat' => $locationData['latitude'],
'lng' => $locationData['longitude'],
'is_moving' => $request->location['is_moving'],
'input' => json_encode($request->all()),
];
//try to get existing location
$location = UserLocation::where('user_id',$this->user->id)->first();
//update user location
if ($location){
$location->lat = $locationData['latitude'];
$location->lng = $locationData['longitude'];
$location->is_moving = $request->location['is_moving'];
$location->input = json_encode($request->all());
$location->save();
}
else{
//create user location entry
$status = UserLocation::create($data);
}
//save new user location
return response([
'success'=>true,
'message'=>'The location was successfully updated.',
'data'=>$data,
],200);
} //end method
/**
* Get postcode
* @param string $postcode
* @return mixed
*/
public function get_address_list(Request $request)
{
$postcode = $request->postcode;
$param = [
'find' => 'PAInteractiveFind', // perform 'find' action calling 'FindByPostcode' web service
'param' => ['SearchTerm'=>$postcode, 'endpoint'=>'json'] // parameters for web service called
];
$response = \PA::getResponse( $param );
$results = json_decode($response);
return response([
'success'=>true,
'message'=>null,
'items_no'=>count($response),
'items'=>$results,
],200);
}
/**
* Get address details from Postcode Anyware
*
* @param Request $request
* @return string
*/
public function get_address_details(Request $request)
{
$postcode = '';
$param = [
'retrieve' => 'RetrieveById', // perform 'find' action calling 'FindByPostcode' web service
'param' => ['Id'=>$request->addressId, 'endpoint'=>'json'] // parameters for web service called
];
$response = \PA::getResponse( $param );
$result = json_decode($response,true)[0];
if (key_exists('Error',$result)){
$response = [
'success'=>false,
'message'=>'Something went wrong. Please enter again your location.',
];
return response($response,200);
} //endif
$postcode = Postcode::where('postcode',trim($result['Postcode']))->first();
if (!$postcode)
return response([
'success'=>false,
'message'=>trans('postcodes::postcodes.message_search_not_found')
],200);
if ($postcode->in_use=="no")
return response([
'success'=>false,
'message'=>trans('postcodes::postcodes.message_search_not_found')
],200);
$response = [
'success'=>true,
'message'=>'Postcode valid',
'data' => [
'postcode'=>$result['Postcode'],
'address'=>$result['Line1'].' '.$result['Line2'].' '.$result['Line3'].' '.$result['PostTown'],
'pobox'=>$result['PoBox'],
],
];
//return postcode
return response($response,200);
}
public function updateLocationViaSocket(Request $request)
{
$locationData = $request->location['coords'];
//set validator rules
if (!$locationData['latitude'] || !$locationData['longitude'])
return response([
'success'=>false,
'message' => 'Longitude and Latitude are required!',
'data'=>[],
],422);
//create data array
$data = [
'user_id' => $request->user_id,
'lat' => $locationData['latitude'],
'lng' => $locationData['longitude'],
'is_moving' => $request->location['is_moving'],
'input' => json_encode($request->all()),
];
//try to get existing location
$location = UserLocation::where('user_id',$request->user_id)->first();
//update user location
if ($location){
$location->lat = $locationData['latitude'];
$location->lng = $locationData['longitude'];
$location->is_moving = $request->location['is_moving'];
$location->input = json_encode($request->all());
$location->save();
}
else{
//create user location entry
$status = UserLocation::create($data);
}
//save new user location
return response([
'success'=>true,
'message'=>'The location was successfully updated.',
'data'=>$data,
],200);
}
} //end controller class