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