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 e8358e739..6844f899f 100644 --- a/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php +++ b/addons/default/visiosoft/advs-module/src/Http/Controller/advsController.php @@ -587,9 +587,13 @@ class AdvsController extends PublicController // Auto approve if (setting_value('visiosoft.module.advs::auto_approve')) { - if ($adv->status == 'pending_admin' || $adv->status == 'pending_user') { - $adv->status = 'approved'; - } + $defaultAdPublishTime = setting_value('visiosoft.module.advs::default_published_time'); + + $adv->update([ + 'status' => 'approved', + 'finish_at' => date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s') . ' + ' . $defaultAdPublishTime . ' day')), + 'publish_at' => date('Y-m-d H:i:s') + ]); } $form->render($request->update_id); diff --git a/addons/default/visiosoft/cats-module/src/Category/CategoryModel.php b/addons/default/visiosoft/cats-module/src/Category/CategoryModel.php index 821f4af15..b5b4ee545 100644 --- a/addons/default/visiosoft/cats-module/src/Category/CategoryModel.php +++ b/addons/default/visiosoft/cats-module/src/Category/CategoryModel.php @@ -24,7 +24,7 @@ class CategoryModel extends CatsCategoryEntryModel implements CategoryInterface $cat_ids[] = $cat->id; $subCat = $cat->parent_category_id; if ($subCat != null) { - for ($i = 0; $i < 7; $i++) { + for ($i = 0; $i < 10; $i++) { $parCat = $this->getCat($subCat); if (isset($parCat)) { if ($parCat->parent_category_id == "") { @@ -83,9 +83,10 @@ class CategoryModel extends CatsCategoryEntryModel implements CategoryInterface public function deleteSubCategories($id) { $subCategories = $this->getAllSubCategories($id); - foreach ($subCategories as $subCategory) { - $this->find($subCategory)->delete(); + if (count($subCategories)) { + $this->newQuery()->whereIn('id', $subCategories)->delete(); } + return true; } diff --git a/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php b/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php index 6db0b6ae5..be73e968b 100644 --- a/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php +++ b/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php @@ -1,6 +1,7 @@ model = $model; + $this->advRepository = $advRepository; } public function findById($id) @@ -64,8 +68,31 @@ class CategoryRepository extends EntryRepository implements CategoryRepositoryIn return $this->model->orderBy('sort_order')->get(); } + public function removeCatFromAds($id) + { + $category = $this->find($id); + $catLevelNum = is_null($category->parent_category_id) ? 1 : $this->model->getCatLevel($category->id); + $catLevelText = "cat" . $catLevelNum; + + $advs = $this->advRepository->newQuery()->where($catLevelText, $category->id)->get(); + foreach ($advs as $adv) { + $nullableCats = array(); + for ($i = $catLevelNum; $i <= 10; $i++) { + $nullableCats['cat' . $i] = null; + } + $adv->update($nullableCats); + } + } + public function DeleteCategories($id) { + // Remove deleted category from ads + $this->removeCatFromAds($id); + + // Delete the category $this->model->find($id)->delete(); + + // Delete the subcategories + $this->model->deleteSubCategories($id); } } diff --git a/addons/default/visiosoft/cats-module/src/Http/Controller/Admin/CategoryController.php b/addons/default/visiosoft/cats-module/src/Http/Controller/Admin/CategoryController.php index 59ed1653f..b8f501a3c 100644 --- a/addons/default/visiosoft/cats-module/src/Http/Controller/Admin/CategoryController.php +++ b/addons/default/visiosoft/cats-module/src/Http/Controller/Admin/CategoryController.php @@ -209,5 +209,4 @@ class CategoryController extends AdminController return redirect('admin/cats')->with('success', [$deletedCatsCount . ' categories has been deleted.']); } - }