HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/agile-selling-wpb/app/Http/Controllers/Api/AddressApiController.php
<?php

namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

use App\Coverage;
use App\State;
use App\City;
use App\Address;
use App\UserInformation;
use App\Parameter;
use App\CoveragePending;
use App\Sucursal;

use App\Http\Controllers\AddressController;

use Illuminate\Support\Facades\Auth;

class AddressApiController extends Controller
{
    public function allCitiesService(){
      $citiesService = Coverage::where("active",1)->get();
      foreach ($citiesService as $city) {
        $coords = unserialize(base64_decode($city->coords));
        $city->coords = $coords;
      }
      $pointCoverage = Parameter::select('point_coverage')->where('id',1)->first();
      $data = array('status' => 'success', 'citiesService' => $citiesService, 'pointCoverage' => $pointCoverage);
      return response()->json($data, 200);
    }

    public function geocodeAddres($address){
      $c = new AddressController;
      return $c->geocodeAddres($address);
    }

    public function allDepartment(){
      $departments = State::where([["country_id",1],['active', true]])->get();

      $data = array('status' => 'success', 'departments' => $departments);
      return response()->json($data, 200);
    }

    public function allCities(Request $request){
      $cities = City::where([["state_id", $request["department_id"]],['active', true]])->get();

      $data = array('status' => 'success', 'cities' => $cities);
      return response()->json($data, 200);
    }

    public function addAddress(Request $request){
      $user_id = Auth::user()->id;
      $direction = trim($request["typeTrack"]).' '.trim($request["track1"]).' # '.trim($request["track2"]).' - '.trim($request["track3"]);
      $existsAddress = Address::where([
          ['direction', $direction],
          ['user_id', $user_id],
        ])
        ->whereNull('deleted_at')
        ->first();
      if ($existsAddress) {
        $data = array('status' => 'already_address');
        return response()->json($data, 200);
      }else{
        Address::where('user_id', $user_id)->update(['last_used' => 0]);
        $address = new Address();
        $address->tag = $request["tagName"];
        $address->direction = $direction;
        $address->district = $request["neighborhood"];
        $address->indications = $request["howToGet"];
        $address->active = true;
        $address->lat = $request["latitude"];
        $address->long = $request["longitude"];
        $address->coverage_id = $request["coverage_id"];
        $address->last_used = 1;
        $address->user_id = $user_id;
        $address->city_id = $request["city"];
        $address->save();

        UserInformation::where('user_id', $user_id)->update(['is_initial' => 0]);
        $userDirectionAll = Address::where('user_id', $user_id)->whereNull('deleted_at')->with(['city','coverage'])->get();
        $data = array('status' => 'success', 'address' => $userDirectionAll, 'address_id' => $address->id);
        return response()->json($data, 200);
      }
    }

    public function deleteAddress(Request $request){
      $user_id = Auth::user()->id;
      $userAddress = Address::where('id', $request['address_id'])->whereNull('deleted_at')->first();
      if ($userAddress->last_used) {
        $userAddress->last_used = 0;
        $userAddress->update();
        $userAddressLastUsed = Address::where([['user_id', $user_id], ['id', '!=', $request['address_id']] ])->whereNull('deleted_at')->first();
        if ($userAddressLastUsed) {
          $userAddressLastUsed->last_used = 1;
          $userAddressLastUsed->update();
        }
      }

      $address = Address::find($request['address_id']);
      $address->delete();

      $userDirectionAll = Address::where('user_id', $user_id)->whereNull('deleted_at')->with(['city','coverage'])->get();
      $data = array('status' => 'success', 'addresses' => $userDirectionAll);
      return response()->json($data, 200);
    }

    public function updateLocation(Request $request){
      $updateAddressLocation = Address::find($request["address_id"]);
      $updateAddressLocation->lat =  $request["lat"];
      $updateAddressLocation->long =  $request["lng"];
      $updateAddressLocation->update();

      if ($updateAddressLocation) {
        $data = array('status' => 'success');
        return response()->json($data, 200);
      }else{
        $data = array('status' => 'error');
        return response()->json($data, 200);
      }
    }

    public function saveCoveragePending(Request $request){
      $coveragePending = new CoveragePending();
      $coveragePending->email = $request["email"];
      $coveragePending->lat = $request["lat"];
      $coveragePending->lng = $request["lng"];
      $coveragePending->city_id = $request["city_id"];
      $coveragePending->save();
      if ($coveragePending) {
        $data = array('status' => 'success');
        return response()->json($data, 200);
      }else{
        $data = array('status' => 'error');
        return response()->json($data, 200);
      }
    }

    public function listSucursals(){
      $listSucursals = Sucursal::where("active",1)->get();
      $data = array('status' => 'success', 'listSucursals' => $listSucursals);
      return response()->json($data, 200);
    }
}