Rename Admin views directory, add some functions on models
This commit is contained in:
16
app/Models/Core/Comment.php
Normal file
16
app/Models/Core/Comment.php
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models\Core;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
|
|
||||||
|
use Venturecraft\Revisionable\RevisionableTrait;
|
||||||
|
use Wildside\Userstamps\Userstamps;
|
||||||
|
|
||||||
|
use BeyondCode\Comments\Comment as parentComment;
|
||||||
|
|
||||||
|
class Comment extends parentComment
|
||||||
|
{
|
||||||
|
use SoftDeletes, Userstamps;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -11,6 +11,7 @@ use Spatie\MediaLibrary\HasMedia;
|
|||||||
use Spatie\MediaLibrary\InteractsWithMedia;
|
use Spatie\MediaLibrary\InteractsWithMedia;
|
||||||
use Spatie\MediaLibrary\MediaCollections\Models\Media;
|
use Spatie\MediaLibrary\MediaCollections\Models\Media;
|
||||||
|
|
||||||
|
use BeyondCode\Comments\Traits\HasComments;
|
||||||
use Rinvex\Categories\Traits\Categorizable;
|
use Rinvex\Categories\Traits\Categorizable;
|
||||||
use Rinvex\Tags\Traits\Taggable;
|
use Rinvex\Tags\Traits\Taggable;
|
||||||
use Fico7489\Laravel\EloquentJoin\Traits\EloquentJoin;
|
use Fico7489\Laravel\EloquentJoin\Traits\EloquentJoin;
|
||||||
@@ -18,7 +19,7 @@ use Wildside\Userstamps\Userstamps;
|
|||||||
|
|
||||||
class Article extends Model implements HasMedia
|
class Article extends Model implements HasMedia
|
||||||
{
|
{
|
||||||
use Categorizable, EloquentJoin, InteractsWithMedia, Taggable, SoftDeletes, UserStamps;
|
use Categorizable, EloquentJoin, HasComments, InteractsWithMedia, Taggable, SoftDeletes, UserStamps;
|
||||||
|
|
||||||
protected $guarded = ['id'];
|
protected $guarded = ['id'];
|
||||||
protected $table = 'shop_articles';
|
protected $table = 'shop_articles';
|
||||||
|
|||||||
@@ -4,8 +4,11 @@ namespace App\Models\Shop;
|
|||||||
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
use BeyondCode\Comments\Traits\HasComments;
|
||||||
class Offer extends Model
|
class Offer extends Model
|
||||||
{
|
{
|
||||||
|
use HasComments;
|
||||||
|
|
||||||
protected $guarded = ['id'];
|
protected $guarded = ['id'];
|
||||||
protected $table = 'shop_offers';
|
protected $table = 'shop_offers';
|
||||||
|
|
||||||
|
|||||||
@@ -3,11 +3,13 @@
|
|||||||
namespace App\Models\Shop;
|
namespace App\Models\Shop;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
use BeyondCode\Comments\Traits\HasComments;
|
||||||
use Znck\Eloquent\Traits\BelongsToThrough;
|
use Znck\Eloquent\Traits\BelongsToThrough;
|
||||||
|
|
||||||
class PriceList extends Model
|
class PriceList extends Model
|
||||||
{
|
{
|
||||||
use BelongsToThrough;
|
use BelongsToThrough, HasComments;
|
||||||
|
|
||||||
protected $guarded = ['id'];
|
protected $guarded = ['id'];
|
||||||
protected $table = 'shop_price_lists';
|
protected $table = 'shop_price_lists';
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ namespace App\Models\Shop;
|
|||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
use Staudenmeir\EloquentHasManyDeep\HasRelationships;
|
use Staudenmeir\EloquentHasManyDeep\HasRelationships;
|
||||||
|
use BeyondCode\Comments\Traits\HasComments;
|
||||||
class Tariff extends Model
|
class Tariff extends Model
|
||||||
{
|
{
|
||||||
use HasRelationships;
|
use HasComments, HasRelationships;
|
||||||
|
|
||||||
protected $guarded = ['id'];
|
protected $guarded = ['id'];
|
||||||
protected $table = 'shop_tariffs';
|
protected $table = 'shop_tariffs';
|
||||||
|
|||||||
@@ -4,8 +4,11 @@ namespace App\Models\Shop;
|
|||||||
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
use BeyondCode\Comments\Traits\HasComments;
|
||||||
class Variation extends Model
|
class Variation extends Model
|
||||||
{
|
{
|
||||||
|
use HasComments;
|
||||||
|
|
||||||
protected $guarded = ['id'];
|
protected $guarded = ['id'];
|
||||||
protected $table = 'shop_variations';
|
protected $table = 'shop_variations';
|
||||||
|
|
||||||
|
|||||||
40
app/Repositories/Core/Comments.php
Normal file
40
app/Repositories/Core/Comments.php
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Repositories\Core;
|
||||||
|
|
||||||
|
class Comments
|
||||||
|
{
|
||||||
|
|
||||||
|
public static function getByModel($model)
|
||||||
|
{
|
||||||
|
if (!$model) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return $model->comments;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function storeComments($model, $comments)
|
||||||
|
{
|
||||||
|
if ($comments) {
|
||||||
|
foreach ($comments as $comment) {
|
||||||
|
self::storeComment($model, $comment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function storeComment($model, $comment)
|
||||||
|
{
|
||||||
|
return $model->comment($comment);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function deleteComments($model)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function deleteComment($model, $index)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,345 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Repositories\Core;
|
|
||||||
|
|
||||||
use Illuminate\Support\Str;
|
|
||||||
|
|
||||||
use App\Repositories\Core\Debug;
|
|
||||||
|
|
||||||
class DataTable
|
|
||||||
{
|
|
||||||
public static $is_debug = 0;
|
|
||||||
|
|
||||||
public static function render($data, $options)
|
|
||||||
{
|
|
||||||
$items = static::get($data, $options);
|
|
||||||
$data = $items['elements'] ? $items['elements'] : array();
|
|
||||||
$success = true;
|
|
||||||
$message = '';
|
|
||||||
|
|
||||||
$json = [
|
|
||||||
'success' => $success,
|
|
||||||
'data' => $data,
|
|
||||||
'message' => $message,
|
|
||||||
'code' => $success ? 200 : 500,
|
|
||||||
'recordsTotal' => $items['total'],
|
|
||||||
'recordsFiltered' => $items['totalFiltered'],
|
|
||||||
];
|
|
||||||
|
|
||||||
\Debugbar::disable();
|
|
||||||
echo json_encode($json);
|
|
||||||
|
|
||||||
return $json;
|
|
||||||
exit;
|
|
||||||
|
|
||||||
return response()->json($json);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function get($data, $options = array())
|
|
||||||
{
|
|
||||||
// Debug::fdump($options);
|
|
||||||
$model = self::getModel($options);
|
|
||||||
$select = isset($options['select']) ? $options['select'] : '';
|
|
||||||
$elements = new $model();
|
|
||||||
$table = $elements->getTable();
|
|
||||||
$real_id = $table . '.id';
|
|
||||||
|
|
||||||
$data2 = static::getElements($data, $options);
|
|
||||||
// Debug::fdump($data2);
|
|
||||||
$elements = $data2['elements'];
|
|
||||||
$length = $data2['length'];
|
|
||||||
$skip = $data2['skip'];
|
|
||||||
$order = $data2['order'];
|
|
||||||
$sort = $data2['sort'];
|
|
||||||
|
|
||||||
// Debug::fdump($elements->get()->toArray());
|
|
||||||
//
|
|
||||||
// Debug::fdump($order);
|
|
||||||
// exit;
|
|
||||||
|
|
||||||
if (strpos($order, '.')) {
|
|
||||||
$tab = explode('.', $order);
|
|
||||||
$nb_model = count($tab) - 1;
|
|
||||||
for ($i = 0; $i < $nb_model; $i++) {
|
|
||||||
$controller = $tab[$i];
|
|
||||||
if (isset($options['namespace'])) {
|
|
||||||
$namespace = $options['namespace'];
|
|
||||||
} else {
|
|
||||||
$namespace = 'App\Models\\';
|
|
||||||
}
|
|
||||||
$jointModelObj = $namespace.ucfirst(Str::camel($controller));
|
|
||||||
// Debug::fdump($controller);
|
|
||||||
$jointModel = new $jointModelObj();
|
|
||||||
$jointTable = $jointModel->getTable();
|
|
||||||
// Debug::fdump($controller);
|
|
||||||
// Debug::fdump($jointTable);
|
|
||||||
if ($table !== $jointTable) {
|
|
||||||
$elements = $elements->leftJoin($jointTable, $jointTable.'.id', '=', $controller.'_id');
|
|
||||||
}
|
|
||||||
$table = $controller;
|
|
||||||
}
|
|
||||||
$order = $jointTable . '.' . $tab[$nb_model];
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
if (!empty($select)) {
|
|
||||||
$elements = $elements->select('*',"$real_id as id", $select);
|
|
||||||
} else {
|
|
||||||
$elements = $elements->select('*',"$real_id as id");
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
// Debug::fdump($order);
|
|
||||||
$elements = $elements->orderBy($order, $sort);
|
|
||||||
|
|
||||||
if (!empty($options['order']) && ($options['order'] !== $order)) {
|
|
||||||
$elements = $elements->orderBy($options['order'], $options['sort']);
|
|
||||||
}
|
|
||||||
// Debug::dump($elements);
|
|
||||||
if (isset($options['trash']) && $options['trash']) {
|
|
||||||
$elements = $elements->withTrashed()->take($length)->skip($skip)->get();
|
|
||||||
} else {
|
|
||||||
$elements = $elements->take($length)->skip($skip)->get();
|
|
||||||
}
|
|
||||||
// Debug::dump($elements);
|
|
||||||
|
|
||||||
$tab = [
|
|
||||||
'elements' => $elements->toArray(),
|
|
||||||
'total' => $data2['total'],
|
|
||||||
'totalFiltered' => $data2['totalFiltered']
|
|
||||||
];
|
|
||||||
|
|
||||||
// dump($elements->toArray());
|
|
||||||
|
|
||||||
return $tab;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function getModel($options)
|
|
||||||
{
|
|
||||||
// return '\App\Models\\'.$options['app'].$options['model'];
|
|
||||||
return $options['model'];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static function getElements($data, $options)
|
|
||||||
{
|
|
||||||
$vars = static::QueryBuilder($data, $options);
|
|
||||||
// Debug::fdump($vars);
|
|
||||||
$model = self::getModel($options);
|
|
||||||
// Debug::dump($model);
|
|
||||||
|
|
||||||
$elements = new $model();
|
|
||||||
$total = $elements::count();
|
|
||||||
|
|
||||||
// Debug::dump($vars);
|
|
||||||
// exit;
|
|
||||||
|
|
||||||
if (is_array($vars)) {
|
|
||||||
extract($vars);
|
|
||||||
}
|
|
||||||
// dump($order);
|
|
||||||
if (empty($order)) {
|
|
||||||
$order = $options['order'];
|
|
||||||
$sort = $options['sort'];
|
|
||||||
}
|
|
||||||
|
|
||||||
$with = (isset($options['with'])) ? $options['with'] : null;
|
|
||||||
$withCount = (isset($options['withCount'])) ? $options['withCount'] : null;
|
|
||||||
$where = (isset($vars['where'])) ? $vars['where'] : null;
|
|
||||||
$searchcol = (isset($vars['searchcol'])) ? $vars['searchcol'] : null;
|
|
||||||
$filter = (isset($vars['filter'])) ? $vars['filter'] : null;
|
|
||||||
|
|
||||||
Debug::dump($with);
|
|
||||||
Debug::dump($withCount);
|
|
||||||
Debug::dump($where);
|
|
||||||
Debug::dump($searchcol);
|
|
||||||
Debug::dump($filter);
|
|
||||||
|
|
||||||
$elements = ($with) ? $elements->with($with) : $elements;
|
|
||||||
$elements = ($withCount) ? $elements->withCount($withCount) : $elements;
|
|
||||||
$elements = ($where) ? $elements->whereRaw($where) : $elements;
|
|
||||||
$elements = ($filter) ? $elements->whereRaw($filter) : $elements;
|
|
||||||
|
|
||||||
// Debug::fdump($elements->get()->toArray());
|
|
||||||
// Debug::message($where);
|
|
||||||
// exit;
|
|
||||||
|
|
||||||
$elements = static::addSearchFilter($elements, $hasfilters);
|
|
||||||
$elements = static::addSearch($elements, $searchcol, $search);
|
|
||||||
|
|
||||||
Debug::dump($hasfilters);
|
|
||||||
// dump($search);
|
|
||||||
//
|
|
||||||
|
|
||||||
$totalFiltered = $elements->count();
|
|
||||||
|
|
||||||
// Debug::breakpoint($elements);
|
|
||||||
// exit;
|
|
||||||
|
|
||||||
$data2 = [
|
|
||||||
'elements' => $elements,
|
|
||||||
'total' => $total,
|
|
||||||
'totalFiltered' => $totalFiltered,
|
|
||||||
'length' => $length,
|
|
||||||
'skip' => $skip,
|
|
||||||
'order' => $order,
|
|
||||||
'sort' => $sort,
|
|
||||||
];
|
|
||||||
|
|
||||||
// var_dump($data2['elements']->get()->toArray());
|
|
||||||
return $data2;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function addSearchFilter($elements, $hasfilters)
|
|
||||||
{
|
|
||||||
if (is_array($hasfilters)) {
|
|
||||||
foreach ($hasfilters as $hasfilter) {
|
|
||||||
if (!empty($hasfilter['search'])) {
|
|
||||||
$elements = $elements->whereHas(
|
|
||||||
$hasfilter['controller'], function ($query) use ($hasfilter) {
|
|
||||||
if ($hasfilter['like']) {
|
|
||||||
$query->where($hasfilter['field'], 'like', '%' . $hasfilter['search'] . '%');
|
|
||||||
} else {
|
|
||||||
$query->where($hasfilter['field'], '=', $hasfilter['search']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $elements;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function addSearch($elements, $searchcol, $search)
|
|
||||||
{
|
|
||||||
if (!empty($search)) {
|
|
||||||
if (strpos($searchcol, '.')) {
|
|
||||||
$tab = explode('.', $searchcol);
|
|
||||||
$searchField = [
|
|
||||||
'controller' => $tab[0],
|
|
||||||
'field' => $tab[1],
|
|
||||||
'search' => $search,
|
|
||||||
];
|
|
||||||
$elements = $elements->whereHas(
|
|
||||||
$searchField['controller'], function ($query) use ($searchField) {
|
|
||||||
$query->where($searchField['field'], 'like', '%' . $searchField['search'] . '%');
|
|
||||||
}
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
$elements = $elements->where($searchcol, 'like', "%$search%");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $elements;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static function QueryBuilder($data, $options = array())
|
|
||||||
{
|
|
||||||
$model = self::getModel($options);
|
|
||||||
$elements = new $model();
|
|
||||||
$table = $elements->getTable();
|
|
||||||
$filter = '';
|
|
||||||
$hasfilters = array();
|
|
||||||
// Debug::fdump($data);
|
|
||||||
// Debug::message($data);
|
|
||||||
// Debug::dump($options);
|
|
||||||
// Debug::dump($data);
|
|
||||||
|
|
||||||
if (is_array($options) && is_array($options['likefields'])) {
|
|
||||||
$likefields = $options['likefields'];
|
|
||||||
}
|
|
||||||
$length = isset($data['length']) ? (int) $data['length'] : 10;
|
|
||||||
$skip = isset($data['start']) ? (int) $data['start'] : 0;
|
|
||||||
if (isset($data['search'])) {
|
|
||||||
$search = ($data['search']['value'] !== '') ? $data['search']['value'] : '';
|
|
||||||
} else {
|
|
||||||
$search = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Debug::fdump($data);
|
|
||||||
if (isset($data['order'])) {
|
|
||||||
if ($data['order'][0]['dir']) { //on est sur qu'un tri est en cours, pb de la colonne 0
|
|
||||||
$sort = ($data['order'][0]['dir']);
|
|
||||||
$order = self::getSortcol($data);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$order = null;
|
|
||||||
$sort = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Debug::dump($order);
|
|
||||||
|
|
||||||
if (isset($data['columns']) && is_array($data['columns'])) {
|
|
||||||
foreach ($data['columns'] as $item) {
|
|
||||||
$filter_search = $item['search']['value'];
|
|
||||||
$filter_col = ($item['name']) ? $item['name'] : $item['data'];
|
|
||||||
|
|
||||||
// Debug::dump($filter_col);
|
|
||||||
// Debug::dump($filter_search);
|
|
||||||
// Debug::dump(is_null($filter_search));
|
|
||||||
|
|
||||||
if (!is_null($filter_search)) {
|
|
||||||
// Debug::dump($item);
|
|
||||||
// Debug::dump($filter_search);
|
|
||||||
// Debug::dump($filter_col);
|
|
||||||
|
|
||||||
if (strpos($filter_col, '.')) {
|
|
||||||
$tab = explode('.', $filter_col);
|
|
||||||
if (is_array($likefields) && in_array($filter_col, $likefields)) {
|
|
||||||
$like = true;
|
|
||||||
} else {
|
|
||||||
$like = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$hasfilters[] = [
|
|
||||||
'controller' => $tab[0],
|
|
||||||
'field' => $tab[1],
|
|
||||||
'search' => $filter_search,
|
|
||||||
'like' => $like,
|
|
||||||
];
|
|
||||||
} else {
|
|
||||||
// $filter_col = $table . '.' .$item['data'];
|
|
||||||
$filter .= (!empty($filter)) ? ' and ' : '';
|
|
||||||
if (is_array($likefields) && in_array($filter_col, $likefields)) {
|
|
||||||
$filter .= "($table.$filter_col LIKE '%$filter_search%')";
|
|
||||||
} else {
|
|
||||||
$filter .= "($table.$filter_col = '$filter_search')";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($data['where'])) {
|
|
||||||
$where = $data['where'];
|
|
||||||
} else {
|
|
||||||
$where = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
$options = [
|
|
||||||
'length' => $length,
|
|
||||||
'skip' => $skip,
|
|
||||||
'search' => $search,
|
|
||||||
'order' => $order,
|
|
||||||
'sort' => $sort,
|
|
||||||
'filter' => $filter,
|
|
||||||
'hasfilters' => $hasfilters,
|
|
||||||
'where' => $where,
|
|
||||||
];
|
|
||||||
|
|
||||||
Debug::dump($options);
|
|
||||||
return $options;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function getSortcol($data)
|
|
||||||
{
|
|
||||||
$sortcol = $data['order'][0]['column'];
|
|
||||||
if (!is_null($sortcol) && ($sortcol !== 0)) {
|
|
||||||
if (!empty($data['columns'][$sortcol]['name'])) {
|
|
||||||
$order = $data['columns'][$sortcol]['name'];
|
|
||||||
} else {
|
|
||||||
$order = $data['columns'][$sortcol]['data'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $order;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
@component('components.layout.box-collapse', ['id' => 'comments', 'title' => __('comments')])
|
||||||
|
@if (!empty($comments))
|
||||||
|
@foreach ($comments as $comment)
|
||||||
|
{!! $comment !!}
|
||||||
|
@endforeach
|
||||||
|
@endif
|
||||||
|
<button type="button" class="btn btn-primary">
|
||||||
|
Ajout note interne
|
||||||
|
<i class="fa fa-plus"></i>
|
||||||
|
</button>
|
||||||
|
@endcomponent
|
||||||
@@ -58,6 +58,7 @@
|
|||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
@include('Admin.Shop.Articles.partials.product.images')
|
@include('Admin.Shop.Articles.partials.product.images')
|
||||||
@include('components.uploader.widget', ['load_url' => route('Admin.Shop.Articles.getImages', ['id' => $article['id'] ?? false]), 'delete_url' => route('Admin.Shop.Articles.deleteImage'), 'title' => 'Photos', 'name' => 'images' ])
|
@include('components.uploader.widget', ['load_url' => route('Admin.Shop.Articles.getImages', ['id' => $article['id'] ?? false]), 'delete_url' => route('Admin.Shop.Articles.deleteImage'), 'title' => 'Photos', 'name' => 'images' ])
|
||||||
|
@include('Admin.Core.Comments.partials.comments')
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user