country_model = $countryModel; $this->city_model = $cityModel; $this->district_model = $districtModel; $this->neighborhood_model = $neighborhoodModel; $this->village_model = $villageModel; parent::__construct(); } /** * @return mixed */ public function getCountries() { if ($this->request->id) return $this->country_model->find($this->request->id); else { $sorting_type = setting_value('visiosoft.module.location::sorting_type'); $sorting_column = setting_value('visiosoft.module.location::sorting_column'); return $this->country_model->orderBy($sorting_column, $sorting_type)->get(); } } /** * @return mixed */ public function getCities() { if ($this->request->id) { $id = explode(',', $this->request->id); $query = $this->city_model->whereIn('parent_country_id', $id); $sorting_type = setting_value('visiosoft.module.location::sorting_type'); $sorting_column = setting_value('visiosoft.module.location::sorting_column'); return $query->orderBy($sorting_column, $sorting_type)->get(); } } /** * @return mixed */ public function getDistricts() { if ($this->request->id) { $id = explode(',', $this->request->id); $query = $this->district_model->whereIn('parent_city_id', $id); $sorting_type = setting_value('visiosoft.module.location::sorting_type'); $sorting_column = setting_value('visiosoft.module.location::sorting_column'); return $query->orderBy($sorting_column, $sorting_type)->get(); } } /** * @return mixed */ public function getNeighborhoods() { if ($this->request->id) { $id = explode(',', $this->request->id); $query = $this->neighborhood_model->whereIn('parent_district_id', $id); $sorting_type = setting_value('visiosoft.module.location::sorting_type'); $sorting_column = setting_value('visiosoft.module.location::sorting_column'); return $query->orderBy($sorting_column, $sorting_type)->get(); } } /** * @return mixed */ public function getVillage() { if ($this->request->id) { $id = explode(',', $this->request->id); $query = $this->village_model->whereIn('parent_neighborhood_id', $id); $sorting_type = setting_value('visiosoft.module.location::sorting_type'); $sorting_column = setting_value('visiosoft.module.location::sorting_column'); return $query->orderBy($sorting_column, $sorting_type)->get(); } } /** * @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()) { return ['success' => true, 'city' => $city]; } else { return ['success' => false]; } } } }