refs #2662 - ( #39afx2h )

This commit is contained in:
Cüneyt Şentürk 2022-10-10 17:46:50 +03:00
parent 815faf82fa
commit ea5ce7f02b
3 changed files with 43 additions and 16 deletions

View File

@ -146,14 +146,31 @@ class Categories extends Controller
$categories[$type] = []; $categories[$type] = [];
} }
Category::enabled()->orderBy('name')->get()->each(function ($category) use (&$categories, $edited_category_id) { $skip_categories = [];
if ($edited_category_id != $category->id) { $skip_categories[] = $edited_category_id;
foreach ($category->sub_categories as $sub_category) {
$skip_categories[] = $sub_category->id;
if ($sub_category->sub_categories) {
$skips = $this->getChildrenCategoryIds($sub_category);
foreach ($skips as $skip) {
$skip_categories[] = $skip;
}
}
}
Category::enabled()->orderBy('name')->get()->each(function ($category) use (&$categories, &$skip_categories) {
if (in_array($category->id, $skip_categories)) {
return;
}
$categories[$category->type][] = [ $categories[$category->type][] = [
'id' => $category->id, 'id' => $category->id,
'title' => $category->name, 'title' => $category->name,
'level' => $category->level, 'level' => $category->level,
]; ];
}
}); });
return view('settings.categories.edit', compact('category', 'types', 'type_disabled', 'categories')); return view('settings.categories.edit', compact('category', 'types', 'type_disabled', 'categories'));
@ -167,10 +184,8 @@ class Categories extends Controller
* *
* @return Response * @return Response
*/ */
public function update($category_id, Request $request) public function update(Category $category, Request $request)
{ {
$category = $this->getCategoryWithoutChildren($category_id);
$response = $this->ajaxDispatch(new UpdateCategory($category, $request)); $response = $this->ajaxDispatch(new UpdateCategory($category, $request));
if ($response['success']) { if ($response['success']) {
@ -197,10 +212,8 @@ class Categories extends Controller
* *
* @return Response * @return Response
*/ */
public function enable($category_id) public function enable(Category $category)
{ {
$category = $this->getCategoryWithoutChildren($category_id);
$response = $this->ajaxDispatch(new UpdateCategory($category, request()->merge(['enabled' => 1]))); $response = $this->ajaxDispatch(new UpdateCategory($category, request()->merge(['enabled' => 1])));
if ($response['success']) { if ($response['success']) {
@ -217,10 +230,8 @@ class Categories extends Controller
* *
* @return Response * @return Response
*/ */
public function disable($category_id) public function disable(Category $category)
{ {
$category = $this->getCategoryWithoutChildren($category_id);
$response = $this->ajaxDispatch(new UpdateCategory($category, request()->merge(['enabled' => 0]))); $response = $this->ajaxDispatch(new UpdateCategory($category, request()->merge(['enabled' => 0])));
if ($response['success']) { if ($response['success']) {

View File

@ -94,6 +94,7 @@ class Category extends Model
{ {
return $this->resolveRouteBindingQuery($this, $value, $field) return $this->resolveRouteBindingQuery($this, $value, $field)
->withoutGlobalScope(Scope::class) ->withoutGlobalScope(Scope::class)
->getWithoutChildren()
->first(); ->first();
} }

View File

@ -43,4 +43,19 @@ trait Categories
return $id == $this->getTransferCategoryId(); return $id == $this->getTransferCategoryId();
} }
public function getChildrenCategoryIds($category)
{
$ids = [];
foreach ($category->sub_categories as $sub_category) {
$ids[] = $sub_category->id;
if ($sub_category->sub_categories) {
$ids = array_merge($ids, $this->getChildrenCategoryIds($sub_category));
}
}
return $ids;
}
} }