From 9e2226a77685c1cf31de4776a190dced970aba67 Mon Sep 17 00:00:00 2001 From: Ludovic CANDELLIER Date: Mon, 23 Aug 2021 23:56:46 +0200 Subject: [PATCH] Fix on preview mode --- .../Admin/Core/CommentController.php | 8 ++- .../Admin/Shop/OfferController.php | 26 ++++++- app/Repositories/Core/Comments.php | 14 ++-- app/Repositories/Shop/Articles.php | 68 +++++++++++++------ app/Repositories/Shop/PriceListValues.php | 10 +-- app/Repositories/Shop/PriceLists.php | 5 ++ app/Repositories/Shop/Tariffs.php | 5 ++ .../Core/Comments/partials/comments.blade.php | 28 +++----- .../Comments/partials/list-comments.blade.php | 20 ++++++ .../views/Admin/Shop/Articles/show.blade.php | 36 ---------- .../views/Admin/Shop/Offers/form.blade.php | 60 +++++++++++++--- .../Shop/Offers/partials/article.blade.php | 54 +++++++++++++++ .../Shop/Offers/partials/tariff.blade.php | 34 ++++++++++ .../Shop/Offers/partials/variation.blade.php | 8 +++ routes/Admin/Shop/Offers.php | 15 ++-- 15 files changed, 289 insertions(+), 102 deletions(-) create mode 100644 resources/views/Admin/Core/Comments/partials/list-comments.blade.php delete mode 100644 resources/views/Admin/Shop/Articles/show.blade.php create mode 100644 resources/views/Admin/Shop/Offers/partials/article.blade.php create mode 100644 resources/views/Admin/Shop/Offers/partials/tariff.blade.php create mode 100644 resources/views/Admin/Shop/Offers/partials/variation.blade.php diff --git a/app/Http/Controllers/Admin/Core/CommentController.php b/app/Http/Controllers/Admin/Core/CommentController.php index 089003e4..605ef791 100644 --- a/app/Http/Controllers/Admin/Core/CommentController.php +++ b/app/Http/Controllers/Admin/Core/CommentController.php @@ -9,7 +9,13 @@ use App\Datatables\Admin\Core\CommentsDataTable; class CommentController extends Controller { - public function index(CommentsDataTable $dataTable, $model, $model_id) + public function index($model, $model_id) + { + $data['comments'] = Comments::getCommentsByModel($model, $model_id); + return view('Admin.Core.Comments.partials.list-comments', $data); + } + + public function list(CommentsDataTable $dataTable, $model, $model_id) { $data['model'] = $model; $data['model_id'] = $model_id; diff --git a/app/Http/Controllers/Admin/Shop/OfferController.php b/app/Http/Controllers/Admin/Shop/OfferController.php index 3c811fb6..d1b05ba4 100644 --- a/app/Http/Controllers/Admin/Shop/OfferController.php +++ b/app/Http/Controllers/Admin/Shop/OfferController.php @@ -5,7 +5,10 @@ namespace App\Http\Controllers\Admin\Shop; use Illuminate\Http\Request; use App\Http\Controllers\Controller; +use App\Repositories\Shop\Articles; use App\Repositories\Shop\Offers; +use App\Repositories\Shop\Tariffs; +use App\Repositories\Shop\Variations; use App\Datatables\Shop\OffersDataTable; class OfferController extends Controller @@ -17,7 +20,10 @@ class OfferController extends Controller public function create() { - return view('Admin.Shop.Offers.create'); + $data['articles'] = Articles::getOptions(); + $data['tariffs'] = Tariffs::getOptions(); + $data['variations'] = Variations::getOptions(); + return view('Admin.Shop.Offers.create', $data); } public function store(Request $request) @@ -44,4 +50,22 @@ class OfferController extends Controller { return Offers::destroy($id); } + + public function previewArticle($id) + { + $data['article'] = Articles::getArticle($id); + return view('Admin.Shop.Offers.partials.article', $data); + } + + public function previewVariation($id) + { + $data['variation'] = Variations::get($id)->toArray(); + return view('Admin.Shop.Offers.partials.variation', $data); + } + + public function previewTariff($id) + { + $data['tariff'] = Tariffs::getPrices($id); + return view('Admin.Shop.Offers.partials.tariff', $data); + } } diff --git a/app/Repositories/Core/Comments.php b/app/Repositories/Core/Comments.php index 95ed6e25..48cebaa4 100644 --- a/app/Repositories/Core/Comments.php +++ b/app/Repositories/Core/Comments.php @@ -22,6 +22,12 @@ class Comments return $model->html(); } + public static function getCommentsByModel($model, $model_id) + { + $class = self::getClass($model); + return self::getCommentsByClass($class, $model_id); + } + public static function getCommentsByClass($class, $id) { return self::getByModel(self::getModel($class, $id)); @@ -29,17 +35,17 @@ class Comments public static function getModel($class, $id) { - return $$class::find($id); + return $class::find($id); } - public static function getClass($class) + public static function getClass($model) { - return 'App\Models\\' . str_replace('.','\\', $class); + return 'App\Models\\' . str_replace('.','\\', $model); } public static function getByModel($model) { - return $model ? $model->comments : false; + return $model ? $model->comments->sortByDesc('updated_at')->toArray() : false; } public static function storeComments($model, $comments) diff --git a/app/Repositories/Shop/Articles.php b/app/Repositories/Shop/Articles.php index 769534d3..70ca65f7 100644 --- a/app/Repositories/Shop/Articles.php +++ b/app/Repositories/Shop/Articles.php @@ -23,44 +23,60 @@ class Articles return $export; } + public static function getOptions() + { + return Article::orderBy('name','asc')->pluck('name','id')->toArray(); + } + public static function getAll() { return Article::orderBy('name', 'asc')->get(); } - public static function getFull($id) + public static function getArticle($id) { $article = Article::with('product.tags')->findOrFail($id); - $data['article'] = $article->toArray(); - $data['article']['inherited'] = self::getInherited($id); - // dump($data); - // exit; - $data['article']['categories'] = self::getCategoriesByArticle($article); - $data['article']['tags'] = self::getTagsByArticle($article); - // $data['article']['prices'] = self::getPricesByArticle($article); - - // $data['datatables']['comments'] = Comments::getDatatable(); - $data['article']['comments'] = $article->comments; + $data = $article->toArray(); + $data['inherited'] = self::getInherited($id); + $data['categories'] = self::getCategoriesNameByArticle($article); + $data['tags'] = self::getTagsNameByArticle($article); + $data['comments'] = Comments::getByModel($article); + return $data; + } + public static function getFull($id) + { + $data = self::getArticleEdit($id); self::getMeta($data); return $data; } + public static function getArticleEdit($id) + { + $article = Article::with('product.tags')->findOrFail($id); + $data = $article->toArray(); + $data['inherited'] = self::getInherited($id); + $data['categories'] = self::getCategoriesByArticle($article); + $data['tags'] = self::getTagsByArticle($article); + $data['comments'] = Comments::getByModel($article); + return $data; + } + public static function getInherited($id) { $article = Article::with('product.tags')->findOrFail($id); $product_type = $article->product_type; switch ($product_type) { - case 'App\Models\Botanic\Variety': - $data[] = ['name' => 'Espèces', 'description' => Species::getDescription($article->product->specie_id), 'tags' => Species::getTags($article->product->specie_id)]; - $data[] = ['name' => 'Variétés', 'description' => $article->product->description, 'tags' => $article->product->tags->toArray()]; - break; - case 'App\Models\Botanic\Specie': - $data[] = ['name' => 'Espèces', 'description' => $article->product->description, 'tags' => $article->product->tags->toArray()]; - break; - case 'App\Models\Shop\Merchandise': - $data[] = ['name' => 'Marchandise', 'description' => $article->product->description, 'tags' => $article->product->tags->toArray()]; - break; + case 'App\Models\Botanic\Variety': + $data[] = ['name' => 'Espèces', 'description' => Species::getDescription($article->product->specie_id), 'tags' => Species::getTags($article->product->specie_id)]; + $data[] = ['name' => 'Variétés', 'description' => $article->product->description, 'tags' => $article->product->tags->toArray()]; + break; + case 'App\Models\Botanic\Specie': + $data[] = ['name' => 'Espèces', 'description' => $article->product->description, 'tags' => $article->product->tags->toArray()]; + break; + case 'App\Models\Shop\Merchandise': + $data[] = ['name' => 'Marchandise', 'description' => $article->product->description, 'tags' => $article->product->tags->toArray()]; + break; } return $data; } @@ -86,11 +102,21 @@ class Articles return $article->categories->pluck('id')->toArray(); } + public static function getCategoriesNameByArticle($article) + { + return $article->categories->pluck('name', 'id')->toArray(); + } + public static function getTagsByArticle($article) { return $article->tags->pluck('id')->toArray(); } + public static function getTagsNameByArticle($article) + { + return $article->tags->pluck('name', 'id')->toArray(); + } + public static function getPricesByArticle($article) { return Prices::getByArticle($article->id); diff --git a/app/Repositories/Shop/PriceListValues.php b/app/Repositories/Shop/PriceListValues.php index 0fe3a1ab..a7cfae31 100644 --- a/app/Repositories/Shop/PriceListValues.php +++ b/app/Repositories/Shop/PriceListValues.php @@ -32,11 +32,13 @@ class PriceListValues return PriceListValue::find($id); } - public static function storePrices($generic_id, $values) + public static function storePrices($price_list_id, $values) { foreach ($values as $value) { - $value['price_generic_id'] = $generic_id; - self::store($value); + $value['price_list_id'] = $price_list_id; + if ($value['price']) { + self::store($value); + } } } @@ -44,7 +46,7 @@ class PriceListValues { $id = isset($data['id']) ? $data['id'] : false; $price = $id ? self::update($data) : self::create($data); - return $price->id; + return $price; } public static function create($data) diff --git a/app/Repositories/Shop/PriceLists.php b/app/Repositories/Shop/PriceLists.php index 0d7c01df..b14cf971 100644 --- a/app/Repositories/Shop/PriceLists.php +++ b/app/Repositories/Shop/PriceLists.php @@ -38,6 +38,11 @@ class PriceLists return PriceList::find($id); } + public static function getPrices($id) + { + return PriceList::with('price_list_values')->find($id); + } + public static function getFull($id) { return PriceList::with(['price_list_values'])->find($id); diff --git a/app/Repositories/Shop/Tariffs.php b/app/Repositories/Shop/Tariffs.php index 6f983f2f..9c672eb5 100644 --- a/app/Repositories/Shop/Tariffs.php +++ b/app/Repositories/Shop/Tariffs.php @@ -16,6 +16,11 @@ class Tariffs return $export; } + public static function getPrices($id) + { + return Tariff::with(['price_lists.price_list_values','price_lists.sale_channel'])->find($id); + } + public static function getOptions() { return Tariff::orderBy('name', 'asc')->get()->pluck('name', 'id')->toArray(); diff --git a/resources/views/Admin/Core/Comments/partials/comments.blade.php b/resources/views/Admin/Core/Comments/partials/comments.blade.php index d51f1f8b..51f0ecef 100644 --- a/resources/views/Admin/Core/Comments/partials/comments.blade.php +++ b/resources/views/Admin/Core/Comments/partials/comments.blade.php @@ -1,32 +1,22 @@ @component('components.layout.box-collapse', ['id' => 'comments', 'title' => __('comments')]) - @if (!empty($comments)) - @foreach ($comments as $comment) -
-
- {{ App\Repositories\Core\Auth\Users::getName($comment->user_id) }} -
-
{{ App\Repositories\Core\DateTime::DateToLocale($comment->updated_at) }}
-
- {!! $comment->comment !!} -
-
- @endforeach - @endif - - + @include('Admin.Core.Comments.partials.list-comments') @endcomponent @push('js') @endpush \ No newline at end of file diff --git a/resources/views/Admin/Shop/Offers/partials/article.blade.php b/resources/views/Admin/Shop/Offers/partials/article.blade.php new file mode 100644 index 00000000..ba228ce5 --- /dev/null +++ b/resources/views/Admin/Shop/Offers/partials/article.blade.php @@ -0,0 +1,54 @@ +
+
+ +
+
+ {{ Form::label('ref', 'Référence') }}
+ {{ $article['ref'] ?? null }} +
+
+ {{ Form::label('name', 'Nom') }}
+ {{ $article['name'] ?? null }} +
+
+ +
+
+ {{ Form::label('categories', __('Shop.shelves.title')) }}
+ @foreach (($article['categories'] ?? null) as $category) + {{ $category }} + @endforeach +
+
+ +
+
+ {{ Form::label('tags', 'Tags') }}
+ @foreach (($article['tags'] ?? null) as $tag) + {{ $tag }} + @endforeach +
+
+ +
+
+ @include('Admin.Shop.Articles.partials.product.description') +
+
+ +
+
+ {{ Form::label('description', 'Description') }} + {{ $article['description'] ?? null }} +
+
+ +
+
+ @include('Admin.Core.Comments.partials.comments', ['model' => 'Shop.Article', 'model_id' => $article['id'] ?? false, 'comments' => $article['comments'], 'with_add' => false]) +
+
+ +
+
+ diff --git a/resources/views/Admin/Shop/Offers/partials/tariff.blade.php b/resources/views/Admin/Shop/Offers/partials/tariff.blade.php new file mode 100644 index 00000000..68131e16 --- /dev/null +++ b/resources/views/Admin/Shop/Offers/partials/tariff.blade.php @@ -0,0 +1,34 @@ +
+
+ {{ $tariff['ref'] ?? null }} +
+
+ {{ $tariff['name'] ?? null }} +
+
+ +
+
+ @foreach (($tariff['price_lists'] ?? []) as $price_list) + {{ $price_list['sale_channel']['name'] }} + {{ $price_list['name'] }} + @if ($price_list['price_list_values'] ?? false) + + + + + + + + @foreach (($price_list['price_list_values'] ?? []) as $price_value) + + + + + @endforeach +
SeuilPrix
{{ $price_value['quantity'] }}{{ $price_value['price'] }}
+ @endif + @endforeach +
+
+ diff --git a/resources/views/Admin/Shop/Offers/partials/variation.blade.php b/resources/views/Admin/Shop/Offers/partials/variation.blade.php new file mode 100644 index 00000000..546edcfd --- /dev/null +++ b/resources/views/Admin/Shop/Offers/partials/variation.blade.php @@ -0,0 +1,8 @@ +
+
+ + {{ $variation['name'] }} + +
+
+ diff --git a/routes/Admin/Shop/Offers.php b/routes/Admin/Shop/Offers.php index 3ef4332b..9d22b6f6 100644 --- a/routes/Admin/Shop/Offers.php +++ b/routes/Admin/Shop/Offers.php @@ -1,10 +1,13 @@ name('Offers.')->group(function () { - Route::get('', 'OfferController@index')->name('index'); - Route::get('create', 'OfferController@create')->name('create'); - Route::delete('destroy/{id?}', 'OfferController@destroy')->name('destroy'); - Route::post('update', 'OfferController@update')->name('update'); - Route::post('store', 'OfferController@store')->name('store'); - Route::get('edit/{id}', 'OfferController@edit')->name('edit'); + Route::get('', 'OfferController@index')->name('index'); + Route::get('create', 'OfferController@create')->name('create'); + Route::delete('destroy/{id?}', 'OfferController@destroy')->name('destroy'); + Route::post('update', 'OfferController@update')->name('update'); + Route::post('store', 'OfferController@store')->name('store'); + Route::get('edit/{id}', 'OfferController@edit')->name('edit'); + Route::get('previewArticle/{id?}', 'OfferController@previewArticle')->name('previewArticle'); + Route::get('previewVariation/{id?}', 'OfferController@previewVariation')->name('previewVariation'); + Route::get('previewTariff/{id?}', 'OfferController@previewTariff')->name('previewTariff'); });