diff --git a/addons/default/visiosoft/advs-module/src/Adv/AdvPresenter.php b/addons/default/visiosoft/advs-module/src/Adv/AdvPresenter.php index 1f0aaa106..38b99bb8f 100644 --- a/addons/default/visiosoft/advs-module/src/Adv/AdvPresenter.php +++ b/addons/default/visiosoft/advs-module/src/Adv/AdvPresenter.php @@ -62,7 +62,7 @@ class AdvPresenter extends EntryPresenter public function isCorporate() { $user_id = $this->getObject()->created_by; - if ($user_id->register_type != null) { + if ($user_id && $user_id->register_type != null) { return $user_id->register_type; } else { return 1; diff --git a/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php b/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php index 5c1db1afd..f46783a6e 100644 --- a/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php +++ b/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php @@ -436,9 +436,10 @@ class AdvsController extends PublicController $user = null; if (\request()->user) { - $user = $this->userRepository->find(\request()->user); - $showTitle = false; - $metaTitle = $user->name() . ' ' . trans('visiosoft.module.advs::field.ads'); + if ($user = $this->userRepository->find(\request()->user)) { + $showTitle = false; + $metaTitle = $user->name() . ' ' . trans('visiosoft.module.advs::field.ads'); + } } $this->template->set('showTitle', $showTitle); diff --git a/addons/default/visiosoft/location-module/resources/config/settings/settings.php b/addons/default/visiosoft/location-module/resources/config/settings/settings.php index cc295bd84..e3c06b3c8 100644 --- a/addons/default/visiosoft/location-module/resources/config/settings/settings.php +++ b/addons/default/visiosoft/location-module/resources/config/settings/settings.php @@ -94,7 +94,8 @@ return [ 'options' => [ 'slug' => 'slug', 'id' => 'id', - 'order' => 'order' + 'order' => 'order', + 'name' => 'name', ], ], ], diff --git a/addons/default/visiosoft/location-module/src/City/CityRepository.php b/addons/default/visiosoft/location-module/src/City/CityRepository.php index 02350097f..26c711983 100644 --- a/addons/default/visiosoft/location-module/src/City/CityRepository.php +++ b/addons/default/visiosoft/location-module/src/City/CityRepository.php @@ -1,5 +1,6 @@ model = $model; + $this->citiesEntryTranslationsModel = $citiesEntryTranslationsModel; } public function findById($id) { return $this->model->orderBy('created_at', 'DESC')->where('location_cities.id', $id)->first(); } + + public function getByEntryIDsAndOrderByTransCol($entryIDs, $orderBy, $direction = 'asc') + { + return $this->citiesEntryTranslationsModel->newQuery() + ->select('entry_id as id', 'name') + ->whereIn('locale', [ + Request()->session()->get('_locale'), + setting_value('streams::default_locale'), + 'en' + ]) + ->whereIn('entry_id', $entryIDs) + ->orderBy($orderBy, $direction) + ->get(); + } } diff --git a/addons/default/visiosoft/location-module/src/City/Contract/CityRepositoryInterface.php b/addons/default/visiosoft/location-module/src/City/Contract/CityRepositoryInterface.php index 78f8e25c6..2e8993d9d 100644 --- a/addons/default/visiosoft/location-module/src/City/Contract/CityRepositoryInterface.php +++ b/addons/default/visiosoft/location-module/src/City/Contract/CityRepositoryInterface.php @@ -5,4 +5,6 @@ use Anomaly\Streams\Platform\Entry\Contract\EntryRepositoryInterface; interface CityRepositoryInterface extends EntryRepositoryInterface { public function findById($id); + + public function getByEntryIDsAndOrderByTransCol($entryIDs, $orderBy, $direction = 'asc'); } diff --git a/addons/default/visiosoft/location-module/src/Country/Contract/CountryRepositoryInterface.php b/addons/default/visiosoft/location-module/src/Country/Contract/CountryRepositoryInterface.php index 6bdc2fed1..b4659e6ac 100644 --- a/addons/default/visiosoft/location-module/src/Country/Contract/CountryRepositoryInterface.php +++ b/addons/default/visiosoft/location-module/src/Country/Contract/CountryRepositoryInterface.php @@ -7,4 +7,6 @@ interface CountryRepositoryInterface extends EntryRepositoryInterface public function findById($id); public function viewAll(); + + public function getByEntryIDsAndOrderByTransCol($entryIDs, $orderBy, $direction = 'asc'); } diff --git a/addons/default/visiosoft/location-module/src/Country/CountryRepository.php b/addons/default/visiosoft/location-module/src/Country/CountryRepository.php index dd1f6d455..a8a25a6e2 100644 --- a/addons/default/visiosoft/location-module/src/Country/CountryRepository.php +++ b/addons/default/visiosoft/location-module/src/Country/CountryRepository.php @@ -1,5 +1,6 @@ model = $model; + $this->countriesEntryTranslationsModel = $countriesEntryTranslationsModel; } public function findById($id) { @@ -30,4 +40,18 @@ class CountryRepository extends EntryRepository implements CountryRepositoryInte public function viewAll(){ return $this->model->get(); } + + public function getByEntryIDsAndOrderByTransCol($entryIDs, $orderBy, $direction = 'asc') + { + return $this->countriesEntryTranslationsModel->newQuery() + ->select('entry_id as id', 'name') + ->whereIn('locale', [ + Request()->session()->get('_locale'), + setting_value('streams::default_locale'), + 'en' + ]) + ->whereIn('entry_id', $entryIDs) + ->orderBy($orderBy, $direction) + ->get(); + } } diff --git a/addons/default/visiosoft/location-module/src/District/Contract/DistrictRepositoryInterface.php b/addons/default/visiosoft/location-module/src/District/Contract/DistrictRepositoryInterface.php index 40f36e204..465cb1a16 100644 --- a/addons/default/visiosoft/location-module/src/District/Contract/DistrictRepositoryInterface.php +++ b/addons/default/visiosoft/location-module/src/District/Contract/DistrictRepositoryInterface.php @@ -4,5 +4,5 @@ use Anomaly\Streams\Platform\Entry\Contract\EntryRepositoryInterface; interface DistrictRepositoryInterface extends EntryRepositoryInterface { - + public function getByEntryIDsAndOrderByTransCol($entryIDs, $orderBy, $direction = 'asc'); } diff --git a/addons/default/visiosoft/location-module/src/District/DistrictRepository.php b/addons/default/visiosoft/location-module/src/District/DistrictRepository.php index e84861e8d..3790d78f9 100644 --- a/addons/default/visiosoft/location-module/src/District/DistrictRepository.php +++ b/addons/default/visiosoft/location-module/src/District/DistrictRepository.php @@ -1,5 +1,6 @@ model = $model; + $this->districtsEntryTranslationsModel = $districtsEntryTranslationsModel; + } + + public function getByEntryIDsAndOrderByTransCol($entryIDs, $orderBy, $direction = 'asc') + { + return $this->districtsEntryTranslationsModel->newQuery() + ->select('entry_id as id', 'name') + ->whereIn('locale', [ + Request()->session()->get('_locale'), + setting_value('streams::default_locale'), + 'en' + ]) + ->whereIn('entry_id', $entryIDs) + ->orderBy($orderBy, $direction) + ->get(); } } 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 0ac30691e..09f26662d 100644 --- a/addons/default/visiosoft/location-module/src/Http/Controller/AjaxController.php +++ b/addons/default/visiosoft/location-module/src/Http/Controller/AjaxController.php @@ -1,131 +1,95 @@ country_model = $countryModel; - $this->city_model = $cityModel; - $this->district_model = $districtModel; - $this->neighborhood_model = $neighborhoodModel; - $this->village_model = $villageModel; parent::__construct(); + $this->cityRepository = $cityRepository; + $this->countryRepository = $countryRepository; + $this->districtRepository = $districtRepository; + $this->neighborhoodRepository = $neighborhoodRepository; + $this->villageRepository = $villageRepository; } - /** - * @return mixed - */ public function getCountries() { if ($this->request->id) - return $this->country_model->find($this->request->id); + return $this->countryRepository->getModel()->find($this->request->id); else { - $query = $this->country_model; - return $this->queryOrder($query); + $query = $this->countryRepository->getModel(); + return $this->queryOrder($query, $this->countryRepository); } } - /** - * @return mixed - */ public function getCities() { if ($this->request->id) { $id = explode(',', $this->request->id); - $query = $this->city_model->whereIn('parent_country_id', $id); + $query = $this->cityRepository->getModel()->whereIn('parent_country_id', $id); - return $this->queryOrder($query); + return $this->queryOrder($query, $this->cityRepository); } } - /** - * @return mixed - */ public function getDistricts() { if ($this->request->id) { $id = explode(',', $this->request->id); - $query = $this->district_model->whereIn('parent_city_id', $id); + $query = $this->districtRepository->getModel()->whereIn('parent_city_id', $id); - return $this->queryOrder($query); + return $this->queryOrder($query, $this->districtRepository); } } - /** - * @return mixed - */ public function getNeighborhoods() { if ($this->request->id) { $id = explode(',', $this->request->id); - $query = $this->neighborhood_model->whereIn('parent_district_id', $id); + $query = $this->neighborhoodRepository->getModel()->whereIn('parent_district_id', $id); - return $this->queryOrder($query); + return $this->queryOrder($query, $this->neighborhoodRepository); } } - /** - * @return mixed - */ public function getVillage() { if ($this->request->id) { $id = explode(',', $this->request->id); - $query = $this->village_model->whereIn('parent_neighborhood_id', $id); + $query = $this->villageRepository->getModel()->whereIn('parent_neighborhood_id', $id); - return $this->queryOrder($query); + return $this->queryOrder($query, $this->villageRepository); } } - /** - * @return mixed - */ public function getCity() { if ($this->request->name) { $slug = Str::slug($this->request->name, '_'); - if ($city = $this->city_model->newQuery()->where('slug', 'LIKE', $slug . '%')->first()) { + if ($city = $this->cityRepository->getModel()->newQuery()->where('slug', 'LIKE', $slug . '%')->first()) { return ['success' => true, 'city' => $city]; } else { return ['success' => false]; @@ -133,11 +97,19 @@ class AjaxController extends PublicController } } - public function queryOrder($query) + public function queryOrder($query, $repository) { $sorting_type = setting_value('visiosoft.module.location::sorting_type'); $sorting_column = setting_value('visiosoft.module.location::sorting_column'); + if ($repository->getModel()->isTranslatedAttribute($sorting_column)) { + return $repository->getByEntryIDsAndOrderByTransCol( + $query->pluck('id')->all(), + $sorting_column, + $sorting_type + ); + } + return $query->orderBy($sorting_column, $sorting_type)->get(); } } \ No newline at end of file diff --git a/addons/default/visiosoft/location-module/src/Neighborhood/Contract/NeighborhoodRepositoryInterface.php b/addons/default/visiosoft/location-module/src/Neighborhood/Contract/NeighborhoodRepositoryInterface.php index f5f46fc69..f1dceaf15 100644 --- a/addons/default/visiosoft/location-module/src/Neighborhood/Contract/NeighborhoodRepositoryInterface.php +++ b/addons/default/visiosoft/location-module/src/Neighborhood/Contract/NeighborhoodRepositoryInterface.php @@ -4,5 +4,5 @@ use Anomaly\Streams\Platform\Entry\Contract\EntryRepositoryInterface; interface NeighborhoodRepositoryInterface extends EntryRepositoryInterface { - + public function getByEntryIDsAndOrderByTransCol($entryIDs, $orderBy, $direction = 'asc'); } diff --git a/addons/default/visiosoft/location-module/src/Neighborhood/NeighborhoodRepository.php b/addons/default/visiosoft/location-module/src/Neighborhood/NeighborhoodRepository.php index c4d91bcba..75023993e 100644 --- a/addons/default/visiosoft/location-module/src/Neighborhood/NeighborhoodRepository.php +++ b/addons/default/visiosoft/location-module/src/Neighborhood/NeighborhoodRepository.php @@ -1,5 +1,6 @@ model = $model; + $this->neighborhoodsEntryTranslationsModel = $neighborhoodsEntryTranslationsModel; + } + + public function getByEntryIDsAndOrderByTransCol($entryIDs, $orderBy, $direction = 'asc') + { + return $this->neighborhoodsEntryTranslationsModel->newQuery() + ->select('entry_id as id', 'name') + ->whereIn('locale', [ + Request()->session()->get('_locale'), + setting_value('streams::default_locale'), + 'en' + ]) + ->whereIn('entry_id', $entryIDs) + ->orderBy($orderBy, $direction) + ->get(); } } diff --git a/addons/default/visiosoft/location-module/src/Village/Contract/VillageRepositoryInterface.php b/addons/default/visiosoft/location-module/src/Village/Contract/VillageRepositoryInterface.php index 3b386057f..65f259fdf 100644 --- a/addons/default/visiosoft/location-module/src/Village/Contract/VillageRepositoryInterface.php +++ b/addons/default/visiosoft/location-module/src/Village/Contract/VillageRepositoryInterface.php @@ -4,5 +4,5 @@ use Anomaly\Streams\Platform\Entry\Contract\EntryRepositoryInterface; interface VillageRepositoryInterface extends EntryRepositoryInterface { - + public function getByEntryIDsAndOrderByTransCol($entryIDs, $orderBy, $direction = 'asc'); } diff --git a/addons/default/visiosoft/location-module/src/Village/VillageRepository.php b/addons/default/visiosoft/location-module/src/Village/VillageRepository.php index 15dc0fc1a..4f7d64d9b 100644 --- a/addons/default/visiosoft/location-module/src/Village/VillageRepository.php +++ b/addons/default/visiosoft/location-module/src/Village/VillageRepository.php @@ -1,5 +1,6 @@ model = $model; + $this->villageEntryTranslationsModel = $villageEntryTranslationsModel; + } + + public function getByEntryIDsAndOrderByTransCol($entryIDs, $orderBy, $direction = 'asc') + { + return $this->villageEntryTranslationsModel->newQuery() + ->select('entry_id as id', 'name') + ->whereIn('locale', [ + Request()->session()->get('_locale'), + setting_value('streams::default_locale'), + 'en' + ]) + ->whereIn('entry_id', $entryIDs) + ->orderBy($orderBy, $direction) + ->get(); } }