Sh3ll
OdayForums


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/public_html/dev-test/app/Modules/Users/Http/Controllers/Api/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/tradze/public_html/dev-test/app/Modules/Users/Http/Controllers/Api/ApiLocationController.php
<?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

ZeroDay Forums Mini