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/qas.sports-crowd.com/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\Country;
use App\Http\Controllers\AddressController;
use Illuminate\Support\Facades\Auth;

class AddressApiController extends Controller
{
    public function allCitiesService()
    {
        $citiesService = Coverage::where("active", 1)->orderBy('name', 'ASC')->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 geocodeAddress($address)
    {
        $c = new AddressController;
        return $c->geocodeAddress($address);
    }

    public function allDepartments()
    {
        $departments = State::select('id', 'name', 'country_id')->where('active', true)->orderBy('name', 'ASC')->get();
        $data = array('status' => 'success', 'departments' => $departments);
        return response()->json($data, 200);
    }

    public function allCities(Request $request)
    {
        $cities = City::select('id', 'name', 'state_id')->where([["state_id", $request["department_id"]], ['active', true]])->orderBy('name', 'ASC')->get();
        $data = array('status' => 'success', 'cities' => $cities);
        return response()->json($data, 200);
    }

    public function addAddress(Request $request)
    {
        $user_id = Auth::user()->id;
        if ($request["address"]) {
            $direction = $request["address"];
        } else {
            $direction = trim($request["typeTrack"]) . ' ' . trim($request["track1"]) . ' # ' . trim($request["track2"]) . ' - ' . trim($request["track3"]);
        }

        $directions = Address::where('user_id', $user_id)->whereNull('deleted_at')->with(['city', 'coverage'])->get();
        $existsAddress = Address::where([
            ['direction', $direction],
            ['user_id', $user_id],
        ])->whereNull('deleted_at')
            ->first();
        if ($existsAddress) {
            $data = array('status' => 'success', 'address' => $directions, 'address_id' => $existsAddress->id);
            return response()->json($data, 200);
        }

        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->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]);
        $data = array('status' => 'success', 'address' => $directions, '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);
    }

    public function allCountries()
    {
        $countries = Country::select('id', 'name', 'code')->orderBy('active', 'DESC')->orderBy('name', 'ASC')->get();
        $data = array('status' => 'success', 'countries' => $countries);
        return response()->json($data, 200);
    }

    public function updateAddress(Request $request, Address $address)
    {
        $address->last_used =  true;
        $address->update();

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