diff --git a/addons/default/visiosoft/base-theme/resources/js/visiosoft.js b/addons/default/visiosoft/base-theme/resources/js/visiosoft.js index 80c116700..52283e3c1 100644 --- a/addons/default/visiosoft/base-theme/resources/js/visiosoft.js +++ b/addons/default/visiosoft/base-theme/resources/js/visiosoft.js @@ -1,4 +1,4 @@ -function crudAjax(params, url, type, callback, async = false) { +function crudAjax(params, url, type, callback = () => {}, async = false) { return $.ajax({ type: type, data: params, diff --git a/addons/default/visiosoft/location-module/src/Http/Controller/AjaxController.php b/addons/default/visiosoft/location-module/src/Http/Controller/AjaxController.php index 09f26662d..0d804293c 100644 --- a/addons/default/visiosoft/location-module/src/Http/Controller/AjaxController.php +++ b/addons/default/visiosoft/location-module/src/Http/Controller/AjaxController.php @@ -1,6 +1,9 @@ orderBy($sorting_column, $sorting_type)->get(); } + + public function findLocation() + { + try { + $validator = Validator::make(request()->all(), [ + 'type' => [ + 'required', + Rule::in(['countries', 'cities', 'districts', 'neighborhoods', 'village']) + ], + 'id' => 'required|exists:location_' . request()->type, + ]); + + if ($validator->fails()) { + throw new \Exception($validator->messages()->first()); + } + + $dBName = 'location_' . request()->type; + $location = DB::table($dBName) + ->join( + $dBName . '_translations as location_trans', + $dBName . '.id', + '=', + 'location_trans.entry_id' + ) + ->where($dBName . '.id', request()->id) + ->first(); + + return [ + 'success' => true, + 'data' => $location + ]; + } catch (\Exception $e) { + return [ + 'success' => false, + 'msg' => $e->getMessage() + ]; + } + + } } \ No newline at end of file diff --git a/addons/default/visiosoft/location-module/src/LocationModuleServiceProvider.php b/addons/default/visiosoft/location-module/src/LocationModuleServiceProvider.php index 05667e097..d26365f34 100644 --- a/addons/default/visiosoft/location-module/src/LocationModuleServiceProvider.php +++ b/addons/default/visiosoft/location-module/src/LocationModuleServiceProvider.php @@ -76,6 +76,7 @@ class LocationModuleServiceProvider extends AddonServiceProvider 'admin/location/neighborhoods/create' => 'Visiosoft\LocationModule\Http\Controller\Admin\NeighborhoodsController@create', 'admin/location/neighborhoods/edit/{id}' => 'Visiosoft\LocationModule\Http\Controller\Admin\NeighborhoodsController@edit', + // AjaxController 'ajax/getCountry' => [ 'as' => 'location::getCountry', 'uses' => 'Visiosoft\LocationModule\Http\Controller\AjaxController@getCountries' @@ -97,6 +98,10 @@ class LocationModuleServiceProvider extends AddonServiceProvider 'as' => 'location::getVillage', 'uses' => 'Visiosoft\LocationModule\Http\Controller\AjaxController@getVillage' ], + 'api/find-location' => [ + 'as' => 'visiosoft.module.location::api_find_location', + 'uses' => 'Visiosoft\LocationModule\Http\Controller\AjaxController@findLocation' + ], ]; /**