diff --git a/addons/default/visiosoft/advs-module/src/Adv/AdvLoader.php b/addons/default/visiosoft/advs-module/src/Adv/AdvLoader.php
index 455b8adc2..0d18b2581 100644
--- a/addons/default/visiosoft/advs-module/src/Adv/AdvLoader.php
+++ b/addons/default/visiosoft/advs-module/src/Adv/AdvLoader.php
@@ -10,7 +10,7 @@ use Visiosoft\AdvsModule\Adv\Contract\AdvInterface;
use Anomaly\Streams\Platform\View\ViewTemplate;
use Visiosoft\CatsModule\Category\Contract\CategoryInterface;
use Visiosoft\LocationModule\City\Contract\CityInterface;
-use Visiosoft\LocationModule\Country\Contract\CountryInterface;
+use Visiosoft\LocationModule\Country\Contract\CountryRepositoryInterface;
class AdvLoader {
@@ -21,8 +21,8 @@ class AdvLoader {
$this->template = $template;
}
- public function load(AdvInterface $adv, CategoryInterface $cats, CityInterface $city, CountryInterface $country) {
+ public function load(AdvInterface $adv, CategoryInterface $cats, CityInterface $city, CountryRepositoryInterface $country) {
$this->template->set('adv', $adv);
- $this->template->set('country', $country->getCountry($adv->country_id));
+ $this->template->set('country', $country->find($adv->country_id));
}
}
\ No newline at end of file
diff --git a/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php b/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php
index 4bf44eba9..34fbea314 100644
--- a/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php
+++ b/addons/default/visiosoft/advs-module/src/Adv/AdvRepository.php
@@ -31,11 +31,6 @@ class AdvRepository extends EntryRepository implements AdvRepositoryInterface
$this->folderRepository = $folderRepository;
}
- public function findById($id)
- {
- return $this->model->orderBy('created_at', 'DESC')->where('advs_advs.id', $id)->first();
- }
-
public function searchAdvs(
$type, $param = null, $customParameters = [],
$limit = null, $category = null, $city = null, $paginate = true
diff --git a/addons/default/visiosoft/advs-module/src/Adv/AdvResolver.php b/addons/default/visiosoft/advs-module/src/Adv/AdvResolver.php
index 25b13ed2f..3e70e0bb5 100644
--- a/addons/default/visiosoft/advs-module/src/Adv/AdvResolver.php
+++ b/addons/default/visiosoft/advs-module/src/Adv/AdvResolver.php
@@ -16,6 +16,6 @@ class AdvResolver {
}
public function resolve() {
- return $this->adv->findById($this->route->parameter('id'));
+ return $this->adv->find($this->route->parameter('id'));
}
}
\ No newline at end of file
diff --git a/addons/default/visiosoft/advs-module/src/Adv/Command/GetAd.php b/addons/default/visiosoft/advs-module/src/Adv/Command/GetAd.php
index 17ec929c5..b415264e9 100644
--- a/addons/default/visiosoft/advs-module/src/Adv/Command/GetAd.php
+++ b/addons/default/visiosoft/advs-module/src/Adv/Command/GetAd.php
@@ -27,7 +27,7 @@ class GetAd
public function handle(AdvRepositoryInterface $groups)
{
if ($this->id) {
- return $groups->findById($this->id);
+ return $groups->find($this->id);
}
return null;
}
diff --git a/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php b/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php
index 6338739ab..36b7c5b6e 100644
--- a/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php
+++ b/addons/default/visiosoft/advs-module/src/Adv/Contract/AdvRepositoryInterface.php
@@ -4,8 +4,6 @@ use Anomaly\Streams\Platform\Entry\Contract\EntryRepositoryInterface;
interface AdvRepositoryInterface extends EntryRepositoryInterface
{
- public function findById($id);
-
public function searchAdvs(
$type, $param = null, $customParameters = null,
$limit = null, $category = null, $city = null, $paginate = true
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 bf63667c7..0def40984 100644
--- a/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php
+++ b/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php
@@ -145,7 +145,7 @@ class AdvsController extends PublicController
$param = $this->requestHttp->toArray();
- $countries = $this->country_repository->viewAll();
+ $countries = $this->country_repository->newQuery()->get();
$isActiveDopings = $this->adv_model->is_enabled('dopings');
diff --git a/addons/default/visiosoft/advs-module/src/OptionConfiguration/Table/OptionConfigurationTableColumns.php b/addons/default/visiosoft/advs-module/src/OptionConfiguration/Table/OptionConfigurationTableColumns.php
index 1b8f11618..c822cdab3 100644
--- a/addons/default/visiosoft/advs-module/src/OptionConfiguration/Table/OptionConfigurationTableColumns.php
+++ b/addons/default/visiosoft/advs-module/src/OptionConfiguration/Table/OptionConfigurationTableColumns.php
@@ -18,7 +18,7 @@ class OptionConfigurationTableColumns
'value' => function (EntryModel $entry,
AdvRepositoryInterface $advRepository) {
- $adv = $advRepository->findById($entry->parent_adv_id);
+ $adv = $advRepository->find($entry->parent_adv_id);
return "parent_adv_id]) . "'>$adv->name";
}
],
diff --git a/addons/default/visiosoft/location-module/resources/views/ads-list/partials/location-fields.twig b/addons/default/visiosoft/location-module/resources/views/ads-list/partials/location-fields.twig
index 48771252c..defea5ef8 100644
--- a/addons/default/visiosoft/location-module/resources/views/ads-list/partials/location-fields.twig
+++ b/addons/default/visiosoft/location-module/resources/views/ads-list/partials/location-fields.twig
@@ -124,5 +124,5 @@
diff --git a/addons/default/visiosoft/location-module/src/City/CityCriteria.php b/addons/default/visiosoft/location-module/src/City/CityCriteria.php
index ee57d86bd..356e70070 100644
--- a/addons/default/visiosoft/location-module/src/City/CityCriteria.php
+++ b/addons/default/visiosoft/location-module/src/City/CityCriteria.php
@@ -1,10 +1,12 @@
query->where('parent_country_id', $city)->get();
+ public function getCitiesByCountryId($country_id) {
+ $city_repository = app(CityRepositoryInterface::class);
+ return $city_repository->getCitiesByCountryId($country_id);
}
}
diff --git a/addons/default/visiosoft/location-module/src/City/CityModel.php b/addons/default/visiosoft/location-module/src/City/CityModel.php
index 5a9283fa9..b6483c28f 100644
--- a/addons/default/visiosoft/location-module/src/City/CityModel.php
+++ b/addons/default/visiosoft/location-module/src/City/CityModel.php
@@ -2,30 +2,8 @@
use Visiosoft\LocationModule\City\Contract\CityInterface;
use Anomaly\Streams\Platform\Model\Location\LocationCitiesEntryModel;
-use Visiosoft\LocationModule\District\DistrictModel;
class CityModel extends LocationCitiesEntryModel implements CityInterface
{
- public function getCities($id = null) {
- if($id != null)
- {
- return CityModel::query()->where('location_cities.id', $id)->first();
- }
- return CityModel::all();
- }
- public function getSubCities($country) {
- return $this->query()->where('parent_country_id', $country)->orderBy('order','ASC')->get();
- }
-
- public function deleteCitiesByCountry($id) {
- $districts = new DistrictModel();
- $city = $this->where('parent_country_id',$id);
- $city_id = $city->orderBy('id','DESC')->get();
- foreach ($city_id as $item)
- {
- $districts->deleteDistrictByCity($item->id);
- }
- return $city->delete();
- }
}
diff --git a/addons/default/visiosoft/location-module/src/City/CityRepository.php b/addons/default/visiosoft/location-module/src/City/CityRepository.php
index 26c711983..9968eae76 100644
--- a/addons/default/visiosoft/location-module/src/City/CityRepository.php
+++ b/addons/default/visiosoft/location-module/src/City/CityRepository.php
@@ -30,11 +30,6 @@ class CityRepository extends EntryRepository implements CityRepositoryInterface
$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()
@@ -48,4 +43,11 @@ class CityRepository extends EntryRepository implements CityRepositoryInterface
->orderBy($orderBy, $direction)
->get();
}
+
+ public function getCitiesByCountryId($country_id) {
+ return $this->newQuery()
+ ->where('parent_country_id', $country_id)
+ ->orderBy('order','ASC')
+ ->get();
+ }
}
diff --git a/addons/default/visiosoft/location-module/src/City/Contract/CityInterface.php b/addons/default/visiosoft/location-module/src/City/Contract/CityInterface.php
index b5891fa0b..ec19657d2 100644
--- a/addons/default/visiosoft/location-module/src/City/Contract/CityInterface.php
+++ b/addons/default/visiosoft/location-module/src/City/Contract/CityInterface.php
@@ -4,5 +4,5 @@ use Anomaly\Streams\Platform\Entry\Contract\EntryInterface;
interface CityInterface extends EntryInterface
{
- public function getCities();
+
}
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 2e8993d9d..9952563bd 100644
--- a/addons/default/visiosoft/location-module/src/City/Contract/CityRepositoryInterface.php
+++ b/addons/default/visiosoft/location-module/src/City/Contract/CityRepositoryInterface.php
@@ -4,7 +4,7 @@ use Anomaly\Streams\Platform\Entry\Contract\EntryRepositoryInterface;
interface CityRepositoryInterface extends EntryRepositoryInterface
{
- public function findById($id);
-
public function getByEntryIDsAndOrderByTransCol($entryIDs, $orderBy, $direction = 'asc');
+
+ public function getCitiesByCountryId($country_id);
}
diff --git a/addons/default/visiosoft/location-module/src/City/Events/DeletedCities.php b/addons/default/visiosoft/location-module/src/City/Events/DeletedCities.php
new file mode 100644
index 000000000..062aa7c68
--- /dev/null
+++ b/addons/default/visiosoft/location-module/src/City/Events/DeletedCities.php
@@ -0,0 +1,17 @@
+cities = $cities;
+ }
+
+ public function getCities()
+ {
+ return $this->cities;
+ }
+}
+
diff --git a/addons/default/visiosoft/location-module/src/City/Listeners/DeletedCountry.php b/addons/default/visiosoft/location-module/src/City/Listeners/DeletedCountry.php
new file mode 100644
index 000000000..e99a20fdd
--- /dev/null
+++ b/addons/default/visiosoft/location-module/src/City/Listeners/DeletedCountry.php
@@ -0,0 +1,28 @@
+cityRepository = $cityRepository;
+ }
+
+ public function handle(\Visiosoft\LocationModule\Country\Events\DeletedCountry $event)
+ {
+ $country = $event->getCountry();
+
+ $query = $this->cityRepository->newQuery()
+ ->where('parent_country_id', $country->id);
+
+ if (count($cities = $query->get())) {
+ $query->delete();
+
+ event(new DeletedCities($cities));
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/default/visiosoft/location-module/src/City/Table/CityTableBuilder.php b/addons/default/visiosoft/location-module/src/City/Table/CityTableBuilder.php
index a63daae89..5d14f7a64 100644
--- a/addons/default/visiosoft/location-module/src/City/Table/CityTableBuilder.php
+++ b/addons/default/visiosoft/location-module/src/City/Table/CityTableBuilder.php
@@ -1,6 +1,7 @@
[
+ 'handler' => Delete::class,
+ ],
];
/**
diff --git a/addons/default/visiosoft/location-module/src/City/Table/Handler/Delete.php b/addons/default/visiosoft/location-module/src/City/Table/Handler/Delete.php
new file mode 100644
index 000000000..ec2612192
--- /dev/null
+++ b/addons/default/visiosoft/location-module/src/City/Table/Handler/Delete.php
@@ -0,0 +1,24 @@
+newQuery()->whereIn('location_cities.id', $selected);
+
+ if ($count = count($cities = $query->get())) {
+ $query->delete();
+
+ event(new DeletedCities($cities));
+ }
+
+ if ($selected && $count > 0) {
+ $this->messages->success(trans('streams::message.delete_success', compact('count')));
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/default/visiosoft/location-module/src/Country/Contract/CountryInterface.php b/addons/default/visiosoft/location-module/src/Country/Contract/CountryInterface.php
index 385275a13..1099e9332 100644
--- a/addons/default/visiosoft/location-module/src/Country/Contract/CountryInterface.php
+++ b/addons/default/visiosoft/location-module/src/Country/Contract/CountryInterface.php
@@ -4,5 +4,5 @@ use Anomaly\Streams\Platform\Entry\Contract\EntryInterface;
interface CountryInterface extends EntryInterface
{
- public function getCountry($id);
+
}
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 b4659e6ac..769b547c3 100644
--- a/addons/default/visiosoft/location-module/src/Country/Contract/CountryRepositoryInterface.php
+++ b/addons/default/visiosoft/location-module/src/Country/Contract/CountryRepositoryInterface.php
@@ -4,9 +4,5 @@ use Anomaly\Streams\Platform\Entry\Contract\EntryRepositoryInterface;
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/CountryModel.php b/addons/default/visiosoft/location-module/src/Country/CountryModel.php
index 7bb3202c5..b2c69af14 100644
--- a/addons/default/visiosoft/location-module/src/Country/CountryModel.php
+++ b/addons/default/visiosoft/location-module/src/Country/CountryModel.php
@@ -5,8 +5,5 @@ use Anomaly\Streams\Platform\Model\Location\LocationCountriesEntryModel;
class CountryModel extends LocationCountriesEntryModel implements CountryInterface
{
- public function getCountry($id)
- {
- return CountryModel::query()->where('location_countries.id', $id)->first();
- }
+
}
diff --git a/addons/default/visiosoft/location-module/src/Country/CountryRepository.php b/addons/default/visiosoft/location-module/src/Country/CountryRepository.php
index a8a25a6e2..8931d5100 100644
--- a/addons/default/visiosoft/location-module/src/Country/CountryRepository.php
+++ b/addons/default/visiosoft/location-module/src/Country/CountryRepository.php
@@ -32,14 +32,6 @@ class CountryRepository extends EntryRepository implements CountryRepositoryInte
$this->model = $model;
$this->countriesEntryTranslationsModel = $countriesEntryTranslationsModel;
}
- public function findById($id)
- {
- return $this->model->orderBy('created_at', 'DESC')->where('location_countries.id', $id)->first();
- }
-
- public function viewAll(){
- return $this->model->get();
- }
public function getByEntryIDsAndOrderByTransCol($entryIDs, $orderBy, $direction = 'asc')
{
diff --git a/addons/default/visiosoft/location-module/src/Country/Events/DeletedCountry.php b/addons/default/visiosoft/location-module/src/Country/Events/DeletedCountry.php
new file mode 100644
index 000000000..98f541e89
--- /dev/null
+++ b/addons/default/visiosoft/location-module/src/Country/Events/DeletedCountry.php
@@ -0,0 +1,17 @@
+country = $country;
+ }
+
+ public function getCountry()
+ {
+ return $this->country;
+ }
+}
+
diff --git a/addons/default/visiosoft/location-module/src/Country/Table/CountryTableBuilder.php b/addons/default/visiosoft/location-module/src/Country/Table/CountryTableBuilder.php
index 733277656..a77e7019e 100644
--- a/addons/default/visiosoft/location-module/src/Country/Table/CountryTableBuilder.php
+++ b/addons/default/visiosoft/location-module/src/Country/Table/CountryTableBuilder.php
@@ -1,6 +1,7 @@
[
+ 'handler' => Delete::class,
+ ],
];
/**
diff --git a/addons/default/visiosoft/location-module/src/Country/Table/Handler/Delete.php b/addons/default/visiosoft/location-module/src/Country/Table/Handler/Delete.php
new file mode 100644
index 000000000..2f2471d21
--- /dev/null
+++ b/addons/default/visiosoft/location-module/src/Country/Table/Handler/Delete.php
@@ -0,0 +1,49 @@
+getTableModel();
+
+ /* @var EloquentModel $entry */
+ foreach ($selected as $id) {
+
+ $entry = $model->find($id);
+
+ $deletable = true;
+
+ if ($entry instanceof EloquentModel) {
+ $deletable = $entry->isDeletable();
+ }
+
+ if ($entry && $deletable && $entry->delete()) {
+ $builder->fire('row_deleted', compact('builder', 'model', 'entry'));
+
+ event(new DeletedCountry($entry));
+
+ $count++;
+ }
+ }
+
+ if ($count) {
+ $builder->fire('rows_deleted', compact('count', 'builder', 'model'));
+ }
+
+ if ($selected && $count > 0) {
+ $this->messages->success(trans('streams::message.delete_success', compact('count')));
+ }
+
+ if ($selected && $count === 0) {
+ $this->messages->warning(trans('streams::message.delete_success', compact('count')));
+ }
+ }
+}
\ No newline at end of file
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 465cb1a16..f5a63d7e1 100644
--- a/addons/default/visiosoft/location-module/src/District/Contract/DistrictRepositoryInterface.php
+++ b/addons/default/visiosoft/location-module/src/District/Contract/DistrictRepositoryInterface.php
@@ -5,4 +5,6 @@ use Anomaly\Streams\Platform\Entry\Contract\EntryRepositoryInterface;
interface DistrictRepositoryInterface extends EntryRepositoryInterface
{
public function getByEntryIDsAndOrderByTransCol($entryIDs, $orderBy, $direction = 'asc');
+
+ public function getDistrictByCityId($city);
}
diff --git a/addons/default/visiosoft/location-module/src/District/DistrictModel.php b/addons/default/visiosoft/location-module/src/District/DistrictModel.php
index 5f7799002..9e705a3a1 100644
--- a/addons/default/visiosoft/location-module/src/District/DistrictModel.php
+++ b/addons/default/visiosoft/location-module/src/District/DistrictModel.php
@@ -2,26 +2,8 @@
use Visiosoft\LocationModule\District\Contract\DistrictInterface;
use Anomaly\Streams\Platform\Model\Location\LocationDistrictsEntryModel;
-use Visiosoft\LocationModule\Neighborhood\NeighborhoodModel;
class DistrictModel extends LocationDistrictsEntryModel implements DistrictInterface
{
- public function getDistricts() {
- return DistrictModel::all();
- }
- public function getSubDistricts($city) {
- return $this->query()->where('parent_city_id', $city)->orderBy('order','ASC')->get();
- }
-
- public function deleteDistrictByCity($id) {
- $neighborhood = new NeighborhoodModel();
- $districts = $this->where('parent_city_id',$id);
- $districts_id = $districts->orderBy('id','DESC')->get();
- foreach ($districts_id as $item)
- {
- $neighborhood->deleteNeighborhoodByDistrict($item->id);
- }
- return $districts->delete();
- }
}
diff --git a/addons/default/visiosoft/location-module/src/District/DistrictRepository.php b/addons/default/visiosoft/location-module/src/District/DistrictRepository.php
index 3790d78f9..c5fd7e5e6 100644
--- a/addons/default/visiosoft/location-module/src/District/DistrictRepository.php
+++ b/addons/default/visiosoft/location-module/src/District/DistrictRepository.php
@@ -46,4 +46,11 @@ class DistrictRepository extends EntryRepository implements DistrictRepositoryIn
->orderBy($orderBy, $direction)
->get();
}
+
+ public function getDistrictByCityId($city) {
+ return $this->newQuery()
+ ->where('parent_city_id', $city)
+ ->orderBy('order','ASC')
+ ->get();
+ }
}
diff --git a/addons/default/visiosoft/location-module/src/District/Events/DeletedDistricts.php b/addons/default/visiosoft/location-module/src/District/Events/DeletedDistricts.php
new file mode 100644
index 000000000..131ca72e9
--- /dev/null
+++ b/addons/default/visiosoft/location-module/src/District/Events/DeletedDistricts.php
@@ -0,0 +1,17 @@
+districts = $districts;
+ }
+
+ public function getDistricts()
+ {
+ return $this->districts;
+ }
+}
+
diff --git a/addons/default/visiosoft/location-module/src/District/Listeners/DeletedCities.php b/addons/default/visiosoft/location-module/src/District/Listeners/DeletedCities.php
new file mode 100644
index 000000000..b55345ebc
--- /dev/null
+++ b/addons/default/visiosoft/location-module/src/District/Listeners/DeletedCities.php
@@ -0,0 +1,30 @@
+districtRepository = $districtRepository;
+ }
+
+ public function handle(\Visiosoft\LocationModule\City\Events\DeletedCities $event)
+ {
+ $cities = $event->getCities();
+
+ $cities = $cities->pluck('id')->all();
+
+ $query = $this->districtRepository->newQuery()
+ ->whereIn('parent_city_id', $cities);
+
+ if (count($districts = $query->get())) {
+ $query->delete();
+
+ event(new DeletedDistricts($districts));
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/default/visiosoft/location-module/src/District/Table/DistrictTableBuilder.php b/addons/default/visiosoft/location-module/src/District/Table/DistrictTableBuilder.php
index 4769f45ed..d61fe5312 100644
--- a/addons/default/visiosoft/location-module/src/District/Table/DistrictTableBuilder.php
+++ b/addons/default/visiosoft/location-module/src/District/Table/DistrictTableBuilder.php
@@ -1,6 +1,7 @@
[
+ 'handler' => Delete::class,
+ ],
];
/**
diff --git a/addons/default/visiosoft/location-module/src/District/Table/Handler/Delete.php b/addons/default/visiosoft/location-module/src/District/Table/Handler/Delete.php
new file mode 100644
index 000000000..2a22b9cd3
--- /dev/null
+++ b/addons/default/visiosoft/location-module/src/District/Table/Handler/Delete.php
@@ -0,0 +1,24 @@
+newQuery()->whereIn('location_districts.id', $selected);
+
+ if ($count = count($cities = $query->get())) {
+ $query->delete();
+
+ event(new DeletedDistricts($cities));
+ }
+
+ if ($selected && $count > 0) {
+ $this->messages->success(trans('streams::message.delete_success', compact('count')));
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/default/visiosoft/location-module/src/Http/Controller/Admin/CitiesController.php b/addons/default/visiosoft/location-module/src/Http/Controller/Admin/CitiesController.php
index 2441a31ab..7774eff75 100644
--- a/addons/default/visiosoft/location-module/src/Http/Controller/Admin/CitiesController.php
+++ b/addons/default/visiosoft/location-module/src/Http/Controller/Admin/CitiesController.php
@@ -1,28 +1,21 @@
request->action == "delete") {
- $disticts = new DistrictModel();
- foreach ($this->request->id as $item)
- {
- $disticts->deleteDistrictByCity($item);
- }
- }
- $cities = new CityModel();
+ $cities = app(CityRepositoryInterface::class);
+
if(!isset($request->country) || $request->country==""){
return $table->render();
} else {
- $cities = $cities->getSubCities($request->country);
+ $cities = $cities->getCitiesByCountryId($request->country);
if (count($cities) == 0) {
$this->messages->error('Selected country has no related city.');
return redirect('/admin/location/countries');
diff --git a/addons/default/visiosoft/location-module/src/Http/Controller/Admin/CountriesController.php b/addons/default/visiosoft/location-module/src/Http/Controller/Admin/CountriesController.php
index 20a0e810d..ea743be29 100644
--- a/addons/default/visiosoft/location-module/src/Http/Controller/Admin/CountriesController.php
+++ b/addons/default/visiosoft/location-module/src/Http/Controller/Admin/CountriesController.php
@@ -1,6 +1,5 @@
request->action == "delete") {
- $city = new CityModel();
- foreach ($this->request->id as $item)
- {
- $city->deleteCitiesByCountry($item);
- }
- }
return $table->render();
}
diff --git a/addons/default/visiosoft/location-module/src/Http/Controller/Admin/DistrictsController.php b/addons/default/visiosoft/location-module/src/Http/Controller/Admin/DistrictsController.php
index dc391e261..f827f1f80 100644
--- a/addons/default/visiosoft/location-module/src/Http/Controller/Admin/DistrictsController.php
+++ b/addons/default/visiosoft/location-module/src/Http/Controller/Admin/DistrictsController.php
@@ -1,28 +1,20 @@
request->action == "delete") {
- $neighborhoods = new NeighborhoodModel();
- foreach ($this->request->id as $item)
- {
- $neighborhoods->deleteNeighborhoodByDistrict($item);
- }
- }
- $districts = new DistrictModel();
+ $districts = app(DistrictRepositoryInterface::class);
if(!isset($request->city) || $request->city==""){
return $table->render();
}else{
- $districts = $districts->getSubDistricts($request->city);
+ $districts = $districts->getDistrictByCityId($request->city);
if (count($districts) == 0) {
$this->messages->error('Selected city has no related district.');
return redirect('/admin/location/cities');
diff --git a/addons/default/visiosoft/location-module/src/Http/Controller/Admin/NeighborhoodsController.php b/addons/default/visiosoft/location-module/src/Http/Controller/Admin/NeighborhoodsController.php
index 6fea82c3c..77bb8bce6 100644
--- a/addons/default/visiosoft/location-module/src/Http/Controller/Admin/NeighborhoodsController.php
+++ b/addons/default/visiosoft/location-module/src/Http/Controller/Admin/NeighborhoodsController.php
@@ -1,28 +1,20 @@
request->action == "delete") {
- $village = new VillageModel();
- foreach ($this->request->id as $item)
- {
- $village->deleteVillageByNeighborhood($item);
- }
- }
- $neighborhoods = new NeighborhoodModel();
+ $neighborhoods = app(NeighborhoodRepositoryInterface::class);
if(!isset($request->district) || $request->district==""){
return $table->render();
}else{
- $neighborhoods = $neighborhoods->getSubNeighborhoods($request->district);
+ $neighborhoods = $neighborhoods->getNeighborhoodsByDistrictId($request->district);
if (count($neighborhoods) == 0) {
$this->messages->error('Selected district has no related neighborhood.');
return redirect('/admin/location/districts');
diff --git a/addons/default/visiosoft/location-module/src/Http/Controller/Admin/VillageController.php b/addons/default/visiosoft/location-module/src/Http/Controller/Admin/VillageController.php
index a09533472..2aa5225f7 100644
--- a/addons/default/visiosoft/location-module/src/Http/Controller/Admin/VillageController.php
+++ b/addons/default/visiosoft/location-module/src/Http/Controller/Admin/VillageController.php
@@ -1,20 +1,21 @@
neighborhood) || $request->neighborhood==""){
return $table->render();
}else{
- $villages = $villages->getSubVillages($request->neighborhood);
+ $villages = $villages->getVillagesByNeighborhoodId($request->neighborhood);
if (count($villages) == 0) {
$this->messages->error('Selected neighborhood has no related village.');
return back();
diff --git a/addons/default/visiosoft/location-module/src/LocationModuleServiceProvider.php b/addons/default/visiosoft/location-module/src/LocationModuleServiceProvider.php
index 18343e219..dead6ab68 100644
--- a/addons/default/visiosoft/location-module/src/LocationModuleServiceProvider.php
+++ b/addons/default/visiosoft/location-module/src/LocationModuleServiceProvider.php
@@ -8,10 +8,14 @@ use Anomaly\Streams\Platform\Model\Location\LocationVillageEntryModel;
use Visiosoft\LocationModule\City\CityModel;
use Visiosoft\LocationModule\City\CityRepository;
use Visiosoft\LocationModule\City\Contract\CityRepositoryInterface;
+use Visiosoft\LocationModule\City\Events\DeletedCities;
+use Visiosoft\LocationModule\Country\Events\DeletedCountry;
use Visiosoft\LocationModule\District\Contract\DistrictRepositoryInterface;
use Visiosoft\LocationModule\District\DistrictModel;
use Visiosoft\LocationModule\District\DistrictRepository;
+use Visiosoft\LocationModule\District\Events\DeletedDistricts;
use Visiosoft\LocationModule\Neighborhood\Contract\NeighborhoodRepositoryInterface;
+use Visiosoft\LocationModule\Neighborhood\Events\DeletedNeighborhoods;
use Visiosoft\LocationModule\Neighborhood\NeighborhoodModel;
use Visiosoft\LocationModule\Neighborhood\NeighborhoodRepository;
use Visiosoft\LocationModule\Village\Contract\VillageRepositoryInterface;
@@ -85,4 +89,19 @@ class LocationModuleServiceProvider extends AddonServiceProvider
VillageRepositoryInterface::class => VillageRepository::class,
CountryRepositoryInterface::class => CountryRepository::class,
];
+
+ protected $listeners = [
+ DeletedCountry::class => [
+ \Visiosoft\LocationModule\City\Listeners\DeletedCountry::class,
+ ],
+ DeletedCities::class => [
+ \Visiosoft\LocationModule\District\Listeners\DeletedCities::class,
+ ],
+ DeletedDistricts::class => [
+ \Visiosoft\LocationModule\Neighborhood\Listeners\DeletedDistricts::class,
+ ],
+ DeletedNeighborhoods::class => [
+ \Visiosoft\LocationModule\Village\Listeners\DeletedNeighborhoods::class
+ ],
+ ];
}
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 f1dceaf15..ee82c6b5d 100644
--- a/addons/default/visiosoft/location-module/src/Neighborhood/Contract/NeighborhoodRepositoryInterface.php
+++ b/addons/default/visiosoft/location-module/src/Neighborhood/Contract/NeighborhoodRepositoryInterface.php
@@ -5,4 +5,6 @@ use Anomaly\Streams\Platform\Entry\Contract\EntryRepositoryInterface;
interface NeighborhoodRepositoryInterface extends EntryRepositoryInterface
{
public function getByEntryIDsAndOrderByTransCol($entryIDs, $orderBy, $direction = 'asc');
+
+ public function getNeighborhoodsByDistrictId($district);
}
diff --git a/addons/default/visiosoft/location-module/src/Neighborhood/Events/DeletedNeighborhoods.php b/addons/default/visiosoft/location-module/src/Neighborhood/Events/DeletedNeighborhoods.php
new file mode 100644
index 000000000..f1b9f18ab
--- /dev/null
+++ b/addons/default/visiosoft/location-module/src/Neighborhood/Events/DeletedNeighborhoods.php
@@ -0,0 +1,17 @@
+neighborhood = $neighborhood;
+ }
+
+ public function getNeighborhoods()
+ {
+ return $this->neighborhood;
+ }
+}
+
diff --git a/addons/default/visiosoft/location-module/src/Neighborhood/Listeners/DeletedDistricts.php b/addons/default/visiosoft/location-module/src/Neighborhood/Listeners/DeletedDistricts.php
new file mode 100644
index 000000000..dab4bca6b
--- /dev/null
+++ b/addons/default/visiosoft/location-module/src/Neighborhood/Listeners/DeletedDistricts.php
@@ -0,0 +1,31 @@
+neighborhoodRepository = $neighborhoodRepository;
+ }
+
+ public function handle(\Visiosoft\LocationModule\District\Events\DeletedDistricts $event)
+ {
+ $districts = $event->getDistricts();
+
+ $districts = $districts->pluck('id')->all();
+
+ $query = $this->neighborhoodRepository->newQuery()
+ ->whereIn('parent_district_id', $districts);
+
+ if (count($neighborhoods = $query->get())) {
+ $query->delete();
+
+ event(new DeletedNeighborhoods($neighborhoods));
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/default/visiosoft/location-module/src/Neighborhood/NeighborhoodModel.php b/addons/default/visiosoft/location-module/src/Neighborhood/NeighborhoodModel.php
index 282d0fcf7..2f70ffb91 100644
--- a/addons/default/visiosoft/location-module/src/Neighborhood/NeighborhoodModel.php
+++ b/addons/default/visiosoft/location-module/src/Neighborhood/NeighborhoodModel.php
@@ -2,26 +2,8 @@
use Visiosoft\LocationModule\Neighborhood\Contract\NeighborhoodInterface;
use Anomaly\Streams\Platform\Model\Location\LocationNeighborhoodsEntryModel;
-use Visiosoft\LocationModule\Village\VillageModel;
class NeighborhoodModel extends LocationNeighborhoodsEntryModel implements NeighborhoodInterface
{
- public function getNeighborhoods() {
- return NeighborhoodModel::all();
- }
- public function getSubNeighborhoods($district) {
- return $this->query()->where('parent_district_id', $district)->orderBy('order','ASC')->get();
- }
-
- public function deleteNeighborhoodByDistrict($id) {
- $village = new VillageModel();
- $neighborhood = $this->where('parent_district_id',$id);
- $neighborhoods_id = $neighborhood->orderBy('id','DESC')->get();
- foreach ($neighborhoods_id as $item)
- {
- $village->deleteVillageByNeighborhood($item->id);
- }
- return $neighborhood->delete();
- }
}
diff --git a/addons/default/visiosoft/location-module/src/Neighborhood/NeighborhoodRepository.php b/addons/default/visiosoft/location-module/src/Neighborhood/NeighborhoodRepository.php
index 75023993e..714038f07 100644
--- a/addons/default/visiosoft/location-module/src/Neighborhood/NeighborhoodRepository.php
+++ b/addons/default/visiosoft/location-module/src/Neighborhood/NeighborhoodRepository.php
@@ -46,4 +46,12 @@ class NeighborhoodRepository extends EntryRepository implements NeighborhoodRepo
->orderBy($orderBy, $direction)
->get();
}
+
+ public function getNeighborhoodsByDistrictId($district)
+ {
+ return $this->newQuery()
+ ->where('parent_district_id', $district)
+ ->orderBy('order', 'ASC')
+ ->get();
+ }
}
diff --git a/addons/default/visiosoft/location-module/src/Neighborhood/Table/Handler/Delete.php b/addons/default/visiosoft/location-module/src/Neighborhood/Table/Handler/Delete.php
new file mode 100644
index 000000000..da47f1e88
--- /dev/null
+++ b/addons/default/visiosoft/location-module/src/Neighborhood/Table/Handler/Delete.php
@@ -0,0 +1,24 @@
+newQuery()->whereIn('location_neighborhoods.id', $selected);
+
+ if ($count = count($cities = $query->get())) {
+ $query->delete();
+
+ event(new DeletedNeighborhoods($cities));
+ }
+
+ if ($selected && $count > 0) {
+ $this->messages->success(trans('streams::message.delete_success', compact('count')));
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/default/visiosoft/location-module/src/Neighborhood/Table/NeighborhoodTableBuilder.php b/addons/default/visiosoft/location-module/src/Neighborhood/Table/NeighborhoodTableBuilder.php
index 729f125ac..7dd43d1c5 100644
--- a/addons/default/visiosoft/location-module/src/Neighborhood/Table/NeighborhoodTableBuilder.php
+++ b/addons/default/visiosoft/location-module/src/Neighborhood/Table/NeighborhoodTableBuilder.php
@@ -1,6 +1,7 @@
[
+ 'handler' => Delete::class,
+ ],
];
/**
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 65f259fdf..d331e84de 100644
--- a/addons/default/visiosoft/location-module/src/Village/Contract/VillageRepositoryInterface.php
+++ b/addons/default/visiosoft/location-module/src/Village/Contract/VillageRepositoryInterface.php
@@ -5,4 +5,6 @@ use Anomaly\Streams\Platform\Entry\Contract\EntryRepositoryInterface;
interface VillageRepositoryInterface extends EntryRepositoryInterface
{
public function getByEntryIDsAndOrderByTransCol($entryIDs, $orderBy, $direction = 'asc');
+
+ public function getVillagesByNeighborhoodId($neighborhood);
}
diff --git a/addons/default/visiosoft/location-module/src/Village/Listeners/DeletedNeighborhoods.php b/addons/default/visiosoft/location-module/src/Village/Listeners/DeletedNeighborhoods.php
new file mode 100644
index 000000000..d5806d11b
--- /dev/null
+++ b/addons/default/visiosoft/location-module/src/Village/Listeners/DeletedNeighborhoods.php
@@ -0,0 +1,27 @@
+villageRepository = $villageRepository;
+ }
+
+ public function handle(\Visiosoft\LocationModule\Neighborhood\Events\DeletedNeighborhoods $event)
+ {
+ $neighborhoods = $event->getNeighborhoods();
+
+ $neighborhoods = $neighborhoods->pluck('id')->all();
+
+ $query = $this->villageRepository->newQuery()
+ ->whereIn('parent_neighborhood_id', $neighborhoods);
+
+ if (count($villages = $query->get())) {
+ $query->delete();
+ }
+ }
+}
\ No newline at end of file
diff --git a/addons/default/visiosoft/location-module/src/Village/VillageModel.php b/addons/default/visiosoft/location-module/src/Village/VillageModel.php
index 1df42043f..bcd1883a5 100644
--- a/addons/default/visiosoft/location-module/src/Village/VillageModel.php
+++ b/addons/default/visiosoft/location-module/src/Village/VillageModel.php
@@ -5,15 +5,5 @@ use Anomaly\Streams\Platform\Model\Location\LocationVillageEntryModel;
class VillageModel extends LocationVillageEntryModel implements VillageInterface
{
- public function getVillages() {
- return VillageModel::all();
- }
- public function getSubVillages($neighborhood) {
- return $this->query()->where('parent_neighborhood_id', $neighborhood)->orderBy('order','ASC')->get();
- }
-
- public function deleteVillageByNeighborhood($id) {
- $this->where('parent_neighborhood_id',$id)->orderBy('id','DESC')->delete();
- }
}
diff --git a/addons/default/visiosoft/location-module/src/Village/VillageRepository.php b/addons/default/visiosoft/location-module/src/Village/VillageRepository.php
index 4f7d64d9b..f3b7be1de 100644
--- a/addons/default/visiosoft/location-module/src/Village/VillageRepository.php
+++ b/addons/default/visiosoft/location-module/src/Village/VillageRepository.php
@@ -46,4 +46,9 @@ class VillageRepository extends EntryRepository implements VillageRepositoryInte
->orderBy($orderBy, $direction)
->get();
}
+
+ public function getVillagesByNeighborhoodId($neighborhood)
+ {
+ return $this->newQuery()->where('parent_neighborhood_id', $neighborhood)->orderBy('order','ASC')->get();
+ }
}