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);
}
}
}