Add relations in tables, add saving states for datatables, minor fixes
This commit is contained in:
20
app/Repositories/Core/Arrays.php
Normal file
20
app/Repositories/Core/Arrays.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repositories\Core;
|
||||
|
||||
class Arrays
|
||||
{
|
||||
public static function changeKeyName($array, $newkey, $oldkey)
|
||||
{
|
||||
foreach ($array as $key => $value) {
|
||||
if (is_array($value)) {
|
||||
$array[$key] = self::changeKeyName($value, $newkey, $oldkey);
|
||||
} else {
|
||||
$array[$newkey] = $array[$oldkey];
|
||||
}
|
||||
}
|
||||
unset($array[$oldkey]);
|
||||
return $array;
|
||||
}
|
||||
|
||||
}
|
||||
78
app/Repositories/Core/Trees.php
Normal file
78
app/Repositories/Core/Trees.php
Normal file
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repositories\Core;
|
||||
|
||||
class Trees
|
||||
{
|
||||
public static function getTree($model)
|
||||
{
|
||||
$tree = $model->orderBy('_lft', 'asc')->get()->toTree()->toArray();
|
||||
return self::getChildren($tree[0]['children']);
|
||||
}
|
||||
|
||||
public static function getChildren($data)
|
||||
{
|
||||
$tree = [];
|
||||
foreach ($data as $item) {
|
||||
$leaf = [];
|
||||
$leaf['name'] = $item['name'];
|
||||
$leaf['id'] = $item['id'];
|
||||
$children = (isset($item['children'])) ? self::getChildren($item['children']) : false;
|
||||
if ($children) {
|
||||
$leaf['children'] = $children;
|
||||
}
|
||||
$tree[] = $leaf;
|
||||
}
|
||||
return $tree;
|
||||
}
|
||||
|
||||
public static function moveTree($node_id, $target_id, $type)
|
||||
{
|
||||
$item = self::getNode($node_id);
|
||||
$item_target = self::getNode($target_id);
|
||||
|
||||
switch ($type) {
|
||||
case 'after':
|
||||
// dump("$node_id After $target_id");
|
||||
$item->afterNode($item_target);
|
||||
break;
|
||||
case 'inside':
|
||||
// dump("$node_id inside $target_id");
|
||||
$item_target->appendNode($item);
|
||||
break;
|
||||
}
|
||||
$item->save();
|
||||
return "1";
|
||||
}
|
||||
|
||||
|
||||
public static function create($data, $model)
|
||||
{
|
||||
$parent = (isset($data['parent_id']) && $data['parent_id']) ? self::getNode($data['parent_id']) : self::getRoot();
|
||||
$tree = $model->create(['name' => $data['name']]);
|
||||
$tree->appendToNode($parent)->save();
|
||||
return $tree;
|
||||
}
|
||||
|
||||
public static function update($data, $id = false)
|
||||
{
|
||||
$id = $id ? $id : $data['id'];
|
||||
$item = self::get($id);
|
||||
return $item->update(['name' => $data['name']]);
|
||||
}
|
||||
|
||||
public static function destroy($id)
|
||||
{
|
||||
// return Category::destroy($id);
|
||||
}
|
||||
|
||||
public static function getRoot()
|
||||
{
|
||||
return self::getNode(1);
|
||||
}
|
||||
|
||||
public static function getNode($id, $model)
|
||||
{
|
||||
return $model->find($id);
|
||||
}
|
||||
}
|
||||
@@ -2,24 +2,42 @@
|
||||
|
||||
namespace App\Repositories\Shop;
|
||||
|
||||
use App\Repositories\Core\Arrays;
|
||||
|
||||
class CategoryTrees
|
||||
{
|
||||
public static function getTree()
|
||||
public static function getTree($withFolder = false)
|
||||
{
|
||||
$categories = app('rinvex.categories.category')->orderBy('_lft', 'asc')->get()->toTree()->toArray();
|
||||
return self::getChildren($categories[0]['children']);
|
||||
$categories = self::getCategoryTree()->toArray();
|
||||
return self::getChildren($categories[0]['children'], $withFolder);
|
||||
}
|
||||
|
||||
public static function getChildren($data)
|
||||
public static function getFancyTree()
|
||||
{
|
||||
$categories = self::getTree(true);
|
||||
$categories = Arrays::changeKeyName($categories, 'title', 'name');
|
||||
$categories = Arrays::changeKeyName($categories, 'key', 'id');
|
||||
return $categories;
|
||||
}
|
||||
|
||||
public static function getCategoryTree()
|
||||
{
|
||||
return self::getModel()->defaultOrder()->get()->toTree();
|
||||
}
|
||||
|
||||
public static function getChildren($data, $withFolder = false)
|
||||
{
|
||||
$tree = [];
|
||||
foreach ($data as $item) {
|
||||
$leaf = [];
|
||||
$leaf['name'] = $item['name'];
|
||||
$leaf['id'] = $item['id'];
|
||||
$children = (isset($item['children'])) ? self::getChildren($item['children']) : false;
|
||||
$children = ($item['children'] ?? false) ? self::getChildren($item['children']) : false;
|
||||
if ($children) {
|
||||
$leaf['children'] = $children;
|
||||
if ($withFolder) {
|
||||
$leaf['folder'] = true;
|
||||
}
|
||||
}
|
||||
$tree[] = $leaf;
|
||||
}
|
||||
@@ -32,14 +50,14 @@ class CategoryTrees
|
||||
$category_target = self::getNode($target_id);
|
||||
|
||||
switch ($type) {
|
||||
case 'after':
|
||||
// dump("$node_id After $target_id");
|
||||
$category->afterNode($category_target);
|
||||
break;
|
||||
case 'inside':
|
||||
// dump("$node_id inside $target_id");
|
||||
$category_target->appendNode($category);
|
||||
break;
|
||||
case 'after':
|
||||
// dump("$node_id After $target_id");
|
||||
$category->afterNode($category_target);
|
||||
break;
|
||||
case 'inside':
|
||||
// dump("$node_id inside $target_id");
|
||||
$category_target->appendNode($category);
|
||||
break;
|
||||
}
|
||||
$category->save();
|
||||
return "1";
|
||||
@@ -48,8 +66,8 @@ class CategoryTrees
|
||||
|
||||
public static function create($data)
|
||||
{
|
||||
$parent = (isset($data['parent_id']) && $data['parent_id']) ? self::getNode($data['parent_id']) : self::getRoot();
|
||||
$category = app('rinvex.categories.category')->create(['name' => $data['name']]);
|
||||
$parent = ($data['parent_id'] ?? false) ? self::getNode($data['parent_id']) : self::getRoot();
|
||||
$category = self::getModel()->create(['name' => $data['name']]);
|
||||
$category->appendToNode($parent)->save();
|
||||
return $category;
|
||||
}
|
||||
@@ -57,7 +75,9 @@ class CategoryTrees
|
||||
public static function update($data, $id = false)
|
||||
{
|
||||
$id = $id ? $id : $data['category_id'];
|
||||
return self::getNode($id)->update(['name' => $data['name']]);
|
||||
$item = self::getNode($id);
|
||||
$item->update(['name' => $data['name']]);
|
||||
return $item;
|
||||
}
|
||||
|
||||
public static function destroy($id)
|
||||
@@ -72,6 +92,11 @@ class CategoryTrees
|
||||
|
||||
public static function getNode($id)
|
||||
{
|
||||
return app('rinvex.categories.category')->find($id);
|
||||
return self::getModel()->find($id);
|
||||
}
|
||||
|
||||
public static function getModel()
|
||||
{
|
||||
return app('rinvex.categories.category');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,6 +41,11 @@ class TagGroups
|
||||
return TagGroup::orderBy('name', 'asc')->get();
|
||||
}
|
||||
|
||||
public static function getSlug($id)
|
||||
{
|
||||
return self::get($id)->slug;
|
||||
}
|
||||
|
||||
public static function get($id)
|
||||
{
|
||||
return TagGroup::find($id);
|
||||
|
||||
@@ -3,20 +3,12 @@
|
||||
namespace App\Repositories\Shop;
|
||||
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
use Yajra\DataTables\DataTables;
|
||||
|
||||
use App\Models\Shop\Tag;
|
||||
|
||||
class Tags
|
||||
{
|
||||
public static function getDatatable()
|
||||
{
|
||||
$model = Tag::orderBy('name');
|
||||
return Datatables::of($model)->make(true);
|
||||
}
|
||||
|
||||
public static function getOptions()
|
||||
{
|
||||
@@ -42,25 +34,32 @@ class Tags
|
||||
|
||||
public static function create($data)
|
||||
{
|
||||
$tag = app('rinvex.tags.tag')->create(['name' => ['fr' => $data['name']]]);
|
||||
$tag2 = Tag::find($tag->id);
|
||||
$tag2->tag_group_id = $data['tag_group_id'];
|
||||
$tag2->sort_order = self::getNewOrder($data['tag_group_id']);
|
||||
$tag2->save();
|
||||
// return app('rinvex.tags.tag')->createByName($data['name']);
|
||||
// return Tag::create($data);
|
||||
$slug = self::buildSlug($data);
|
||||
$tag = app('rinvex.tags.tag')->create([
|
||||
'name' => ['fr' => $data['name']],
|
||||
'slug' => $slug,
|
||||
'tag_group_id' => $data['tag_group_id'],
|
||||
'sort_order' => self::getNewOrder($data['tag_group_id'])
|
||||
]);
|
||||
return $tag;
|
||||
}
|
||||
|
||||
|
||||
public static function update($data, $id = false)
|
||||
{
|
||||
$id = $id ? $id : $data['id'];
|
||||
$tag = Tag::find($id);
|
||||
$tag = self::get($id);
|
||||
$data['name'] = ['fr' => $data['name']];
|
||||
$data['slug'] = self::buildSlug($data);
|
||||
$tag->update($data);
|
||||
return $tag;
|
||||
}
|
||||
|
||||
public static function buildSlug($data)
|
||||
{
|
||||
return TagGroups::getSlug($data['tag_group_id']) . '-' . Str::slug($data['name']['fr']);
|
||||
}
|
||||
|
||||
public static function destroy($id)
|
||||
{
|
||||
return Tag::destroy($id);
|
||||
|
||||
Reference in New Issue
Block a user