diff --git a/app/Datatables/Shop/ProducersDataTable.php b/app/Datatables/Shop/ProducersDataTable.php index 3a0b4df2..dd882e14 100644 --- a/app/Datatables/Shop/ProducersDataTable.php +++ b/app/Datatables/Shop/ProducersDataTable.php @@ -4,16 +4,16 @@ namespace App\Datatables\Shop; use Yajra\DataTables\Html\Column; use App\Datatables\ParentDataTable as DataTable; -use App\Models\Shop\Merchandise; -use App\Repositories\Shop\Merchandises; +use App\Models\Shop\Producer; +use App\Repositories\Shop\Producers; -class MerchandisesDataTable extends DataTable +class ProducersDataTable extends DataTable { - public $model_name = 'merchandises'; + public $model_name = 'producers'; - public function query(Merchandise $model) + public function query(Producer $model) { - $model = $model::with(['image', 'tags'])->withCount(['Articles', 'tags', 'images']); + $model = $model::with(['image', 'tags'])->withCount(['Merchandises', 'tags', 'images']); return $this->buildQuery($model); } @@ -21,12 +21,12 @@ class MerchandisesDataTable extends DataTable public function modifier($datatables) { $datatables - ->editColumn('thumb', function (Merchandise $merchandise) { - return Merchandises::getThumb($merchandise->image); + ->editColumn('thumb', function (Producer $producer) { + return $producer->image ? Producers::getThumb($producer->image) : ''; }) - ->editColumn('tags2', function (Merchandise $merchandise) { + ->editColumn('tags2', function (Producer $producer) { $html = ''; - foreach ($merchandise->tags as $tag) { + foreach ($producer->tags as $tag) { $html .= '' . $tag->slug . ' '; } return $html; @@ -42,7 +42,7 @@ class MerchandisesDataTable extends DataTable Column::make('thumb')->title('')->searchable(false)->orderable(false)->width(40)->class('text-center'), Column::make('name')->title('Nom'), Column::make('tags2')->title('Tags')->searchable(false)->orderable(false), - Column::make('articles_count')->title('#Art')->class('text-right')->searchable(false), + Column::make('merchandises_count')->title('#Mar')->class('text-right')->searchable(false), Column::make('tags_count')->title('#Tag')->class('text-right')->searchable(false), Column::make('images_count')->title('#Pho')->class('text-right')->searchable(false), $this->makeColumnButtons(), diff --git a/app/Http/Controllers/Admin/Shop/MerchandiseController.php b/app/Http/Controllers/Admin/Shop/MerchandiseController.php index 4567bcb2..da838d06 100644 --- a/app/Http/Controllers/Admin/Shop/MerchandiseController.php +++ b/app/Http/Controllers/Admin/Shop/MerchandiseController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Admin\Shop; use Illuminate\Http\Request; use App\Repositories\Shop\Merchandises; +use App\Repositories\Shop\Producers; use App\Repositories\Shop\TagGroups; use App\Datatables\Shop\MerchandisesDataTable; @@ -19,6 +20,7 @@ class MerchandiseController extends Controller public function create() { + $data['producers_list'] = Producers::getOptions(); $data['tags_list'] = TagGroups::getTreeTags(); return view('Admin.Shop.Merchandises.create', $data); } @@ -38,6 +40,7 @@ class MerchandiseController extends Controller public function edit($id) { $data['merchandise'] = Merchandises::getFull($id); + $data['producers_list'] = Producers::getOptions(); $data['tags_list'] = TagGroups::getTreeTags(); return view('Admin.Shop.Merchandises.edit', $data); } diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index e8ef22af..7d6dd79a 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -20,7 +20,7 @@ class LoginController extends Controller public function showLoginForm() { - return view('Shop.auth.login', $data ?? []); + return view('auth.login', $data ?? []); } public function authenticated(Request $request, $user) diff --git a/app/Menu/Merchandises.php b/app/Menu/Merchandises.php index 8725c6e5..8edd1ae9 100644 --- a/app/Menu/Merchandises.php +++ b/app/Menu/Merchandises.php @@ -14,6 +14,10 @@ class Merchandises $menu->addTo('merchandises', __('Marchandises'), [ 'route' => 'Admin.Shop.Merchandises.index', - ])->activeIfRoute(['Admin.Shop.Merchandises.*'])->order(1); + ])->activeIfRoute(['Admin.Shop.Merchandises.*'])->order(1); + + $menu->addTo('merchandises', __('Producteurs'), [ + 'route' => 'Admin.Shop.Producers.index', + ])->activeIfRoute(['Admin.Shop.Producers.*'])->order(1); } } diff --git a/app/Models/Botanic/Specie.php b/app/Models/Botanic/Specie.php index 849ee6b1..c437e384 100644 --- a/app/Models/Botanic/Specie.php +++ b/app/Models/Botanic/Specie.php @@ -10,6 +10,8 @@ use Rinvex\Tags\Traits\Taggable; use Spatie\MediaLibrary\HasMedia; use App\Traits\Model\Imageable; +use App\Models\Shop\Tag; +use App\Models\Shop\Article; class Specie extends Model implements HasMedia { @@ -20,7 +22,7 @@ class Specie extends Model implements HasMedia public function tags() { - return $this->morphToMany('App\Models\Shop\Tag', 'taggable'); + return $this->morphToMany(Tag::class, 'taggable'); } public function Genre() @@ -35,7 +37,7 @@ class Specie extends Model implements HasMedia public function Articles() { - return $this->morphMany('App\Models\Shop\Article', 'product'); + return $this->morphMany(Article::class, 'product'); } public function scopeByName($query, $name) diff --git a/app/Models/Botanic/Variety.php b/app/Models/Botanic/Variety.php index 5abd92f6..beb337b0 100644 --- a/app/Models/Botanic/Variety.php +++ b/app/Models/Botanic/Variety.php @@ -12,6 +12,9 @@ use Wildside\Userstamps\Userstamps; use App\Traits\Model\Imageable; +use App\Models\Shop\Article; +use App\Models\Shop\Tag; + class Variety extends Model implements HasMedia { use Imageable, PowerJoins, SoftDeletes, Taggable, UserStamps; @@ -21,16 +24,16 @@ class Variety extends Model implements HasMedia public function Specie() { - return $this->belongsTo('App\Models\Botanic\Specie'); + return $this->belongsTo(Specie::class); } public function Articles() { - return $this->morphMany('App\Models\Shop\Article', 'product'); + return $this->morphMany(Article::class, 'product'); } public function tags() { - return $this->morphToMany('App\Models\Shop\Tag', 'taggable'); + return $this->morphToMany(Tag::class, 'taggable'); } } diff --git a/app/Models/Shop/Producer.php b/app/Models/Shop/Producer.php index 47833740..17790fee 100644 --- a/app/Models/Shop/Producer.php +++ b/app/Models/Shop/Producer.php @@ -19,9 +19,14 @@ class Producer extends Model implements HasMedia protected $guarded = ['id']; protected $table = 'shop_producers'; + public function Articles() + { + + } + public function Merchandises() { - return $this->morphMany(Article::class, 'product'); + return $this->hasMany(Merchandise::class); } public function tags() diff --git a/app/Repositories/Shop/Producers.php b/app/Repositories/Shop/Producers.php new file mode 100644 index 00000000..2ba6fd31 --- /dev/null +++ b/app/Repositories/Shop/Producers.php @@ -0,0 +1,95 @@ +orderBy('name')->limit(30)->get()->pluck('name', 'id'); + $export = []; + foreach ($data as $key => $name) { + $export[] = ['value' => $key, 'text' => $name]; + } + return $export; + } + + public static function getTags($id) + { + return self::get($id)->tags; + } + + public static function storeTags($variety, $tags) + { + return Tag::storeTags($variety, $tags); + } + + public static function getOptions() + { + return Producer::orderBy('name', 'asc')->get()->pluck('name', 'id')->toArray(); + } + + public static function getAll() + { + return Producer::orderBy('name', 'asc')->get(); + } + + public static function get($id) + { + return Producer::find($id); + } + + public static function getFull($id) + { + $producer = self::get($id); + $data = $producer->toArray(); + $data['tags'] = self::getTagsByProducer($producer); + return $data; + } + + public static function getTagsByProducer($producer) + { + return Tag::getTagsByModel($producer); + } + + public static function storeFull($data) + { + $images = $data['images'] ?? false; + $tags = $data['tags'] ?? false; + unset($data['images']); + unset($data['tags']); + $producer = self::store($data); + self::storeImages($producer, $images); + self::storeTags($producer, $tags); + return $producer; + } + + public static function store($data) + { + return ($data['id'] ?? false) ? self::update($data) : self::create($data); + } + + public static function create($data) + { + return Producer::create($data); + } + + public static function update($data, $id = false) + { + $id = $id ? $id : $data['id']; + $item = self::get($id); + $item->update($data); + return $item; + } + + public static function destroy($id) + { + return Producer::destroy($id); + } +} diff --git a/resources/views/Admin/Botanic/Species/form.blade.php b/resources/views/Admin/Botanic/Species/form.blade.php index a322ef0e..4d465ca5 100644 --- a/resources/views/Admin/Botanic/Species/form.blade.php +++ b/resources/views/Admin/Botanic/Species/form.blade.php @@ -14,7 +14,14 @@
{{ Form::label('genre', 'Genre') }} - @include('components.form.select', ['name' => 'genre_id', 'list' => $genres, 'value' => $specie['genre_id'] ?? null, 'class' => 'select2', 'with_empty' => '', 'required' => false]) + @include('components.form.select', [ + 'name' => 'genre_id', + 'list' => $genres, + 'value' => $specie['genre_id'] ?? null, + 'class' => 'select2', + 'with_empty' => '', + 'required' => false + ])
{{ Form::label('alias', 'Alias') }} @@ -25,21 +32,49 @@
{{ Form::label('tags', 'Tags') }} - @include('components.form.selects.select-tree', ['name' => 'tags[]', 'list' => $tags_list, 'values' => $specie['tags'] ?? null, 'class' => 'select2 form-control', 'multiple' => true]) + @include('components.form.selects.select-tree', [ + 'name' => 'tags[]', + 'list' => $tags_list, + 'values' => $specie['tags'] ?? null, + 'class' => 'select2 form-control', + 'multiple' => true + ])
{{ Form::label('description', 'Description') }} - @include('components.form.textarea', ['name' => 'description', 'value' => $specie['description'] ?? null, 'class' => 'editor', 'required' => false]) + @include('components.form.textarea', [ + 'name' => 'description', + 'value' => $specie['description'] ?? null, + 'class' => 'editor', + 'required' => false + ]) +
+
+ +
+
+ {{ Form::label('description', 'Son +') }} + @include('components.form.textarea', [ + 'name' => 'plus', + 'value' => $specie['plus'] ?? null, + 'class' => 'editor', + 'rows' => 5, + 'required' => false, + ])
- @include('components.uploader.widget', ['load_url' => ($specie['id'] ?? false) ? route('Admin.Botanic.Species.getImages', ['id' => $specie['id']]) : null, 'delete_url' => route('Admin.Botanic.Species.deleteImage'), 'name' => 'images']) + @include('components.uploader.widget', [ + 'load_url' => ($specie['id'] ?? false) ? route('Admin.Botanic.Species.getImages', ['id' => $specie['id']]) : null, + 'delete_url' => route('Admin.Botanic.Species.deleteImage'), + 'name' => 'images' + ])
diff --git a/resources/views/Admin/Botanic/Varieties/form.blade.php b/resources/views/Admin/Botanic/Varieties/form.blade.php index 562ec17a..9f189522 100644 --- a/resources/views/Admin/Botanic/Varieties/form.blade.php +++ b/resources/views/Admin/Botanic/Varieties/form.blade.php @@ -7,35 +7,77 @@
{{ Form::label('genre', 'Espèce') }} - @include('components.form.select', ['name' => 'specie_id', 'list' => $species, 'value' => $variety['specie_id'] ?? null, 'class' => 'select2 form-control', 'with_empty' => '', 'required' => false]) + @include('components.form.select', [ + 'name' => 'specie_id', + 'list' => $species, + 'value' => $variety['specie_id'] ?? null, + 'class' => 'select2 form-control', + 'with_empty' => '', + 'required' => false + ])
{{ Form::label('tags', 'Tags') }} - @include('components.form.selects.select-tree', ['name' => 'tags[]', 'list' => $tags_list, 'values' => $variety['tags'] ?? null, 'class' => 'select2 form-control', 'multiple' => true]) + @include('components.form.selects.select-tree', [ + 'name' => 'tags[]', + 'list' => $tags_list, + 'values' => $variety['tags'] ?? null, + 'class' => 'select2 form-control', + 'multiple' => true + ])
{{ Form::label('description', 'Description') }} - @include('components.form.textarea', ['name' => 'description', 'value' => $variety['description'] ?? null, 'class' => 'editor', 'rows' => 5, 'required' => false]) + @include('components.form.textarea', [ + 'name' => 'description', + 'value' => $variety['description'] ?? null, + 'class' => 'editor', + 'rows' => 5, + 'required' => false + ])
{{ Form::label('memo', 'Descriptif sachet') }} - @include('components.form.textarea', ['name' => 'memo', 'value' => $variety['memo'] ?? null, 'class' => 'editor', 'rows' => 5, 'required' => false]) + @include('components.form.textarea', [ + 'name' => 'memo', + 'value' => $variety['memo'] ?? null, + 'class' => 'editor', + 'rows' => 5, + 'required' => false + ]) +
+
+ +
+
+ {{ Form::label('description', 'Son +') }} + @include('components.form.textarea', [ + 'name' => 'plus', + 'value' => $variety['plus'] ?? null, + 'class' => 'editor', + 'rows' => 5, + 'required' => false, + ])
- @include('components.uploader.widget', ['load_url' => route('Admin.Botanic.Varieties.getImages', ['id' => $variety['id'] ?? false]), 'delete_url' => route('Admin.Botanic.Varieties.deleteImage'), 'name' => 'images']) + @include('components.uploader.widget', [ + 'load_url' => route('Admin.Botanic.Varieties.getImages', ['id' => $variety['id'] ?? false]), + 'delete_url' => route('Admin.Botanic.Varieties.deleteImage'), + 'name' => 'images' + ])
diff --git a/resources/views/Admin/Shop/Merchandises/form.blade.php b/resources/views/Admin/Shop/Merchandises/form.blade.php index 92005db3..8f836452 100644 --- a/resources/views/Admin/Shop/Merchandises/form.blade.php +++ b/resources/views/Admin/Shop/Merchandises/form.blade.php @@ -5,6 +5,16 @@ {{ Form::label('name', 'Nom') }} @include('components.form.input', ['name' => 'name', 'value' => $merchandise['name'] ?? null, 'required' => true]) +
+ {{ Form::label('producers', 'Producteur') }} + @include('components.form.select', [ + 'name' => 'producer_id', + 'list' => $producers_list ?? [], + 'value' => $merchandise['provider_id'] ?? null, + 'class' => 'select2 form-control', + 'with_empty' => '', + ]) +
@@ -33,6 +43,19 @@
+
+
+ {{ Form::label('description', 'Son +') }} + @include('components.form.textarea', [ + 'name' => 'plus', + 'value' => $merchandise['plus'] ?? null, + 'class' => 'editor', + 'rows' => 5, + 'required' => false, + ]) +
+
+
diff --git a/resources/views/Admin/Shop/Producers/create.blade.php b/resources/views/Admin/Shop/Producers/create.blade.php index 15dd0396..c2fa0b4b 100644 --- a/resources/views/Admin/Shop/Producers/create.blade.php +++ b/resources/views/Admin/Shop/Producers/create.blade.php @@ -1,11 +1,11 @@ @extends('layout.index', [ - 'title' => __('shop.merchandises.title'), - 'subtitle' => __('shop.merchandises.add'), - 'breadcrumb' => [__('shop.merchandises.title'), __('shop.merchandises.add')] + 'title' => __('shop.producers.title'), + 'subtitle' => __('shop.producers.add'), + 'breadcrumb' => [__('shop.producers.title'), __('shop.producers.add')] ]) @section('content') - {{ Form::open(['route' => 'Admin.Shop.Merchandises.store', 'id' => 'form', 'autocomplete' => 'off', 'files' => true]) }} - @include('Admin.Shop.Merchandises.form') + {{ Form::open(['route' => 'Admin.Shop.Producers.store', 'id' => 'form', 'autocomplete' => 'off', 'files' => true]) }} + @include('Admin.Shop.Producers.form') @endsection diff --git a/resources/views/Admin/Shop/Producers/edit.blade.php b/resources/views/Admin/Shop/Producers/edit.blade.php index f27012c1..f27b9447 100644 --- a/resources/views/Admin/Shop/Producers/edit.blade.php +++ b/resources/views/Admin/Shop/Producers/edit.blade.php @@ -1,12 +1,12 @@ @extends('layout.index', [ - 'title' => __('Shop.merchandises.title'), - 'subtitle' => __('Shop.merchandises.edit'), - 'breadcrumb' => [__('Shop.merchandises.title'), __('Shop.merchandises.edit')] + 'title' => __('Shop.producers.title'), + 'subtitle' => __('Shop.producers.edit'), + 'breadcrumb' => [__('Shop.producers.title'), __('Shop.producers.edit')] ]) @section('content') - {{ Form::open(['route' => 'Admin.Shop.Merchandises.store', 'id' => 'form', 'autocomplete' => 'off', 'files' => true]) }} - - @include('Admin.Shop.Merchandises.form') + {{ Form::open(['route' => 'Admin.Shop.Producers.store', 'id' => 'form', 'autocomplete' => 'off', 'files' => true]) }} + + @include('Admin.Shop.Producers.form') @endsection diff --git a/resources/views/Admin/Shop/Producers/form.blade.php b/resources/views/Admin/Shop/Producers/form.blade.php index 92005db3..82bc1284 100644 --- a/resources/views/Admin/Shop/Producers/form.blade.php +++ b/resources/views/Admin/Shop/Producers/form.blade.php @@ -3,7 +3,11 @@
{{ Form::label('name', 'Nom') }} - @include('components.form.input', ['name' => 'name', 'value' => $merchandise['name'] ?? null, 'required' => true]) + @include('components.form.input', ['name' => 'name', 'value' => $producer['name'] ?? null, 'required' => true]) +
+
+ {{ Form::label('name', 'Alias') }} + @include('components.form.input', ['name' => 'alias', 'value' => $producer['alias'] ?? null, 'required' => true])
@@ -13,7 +17,7 @@ @include('components.form.selects.select-tree', [ 'name' => 'tags[]', 'list' => $tags_list, - 'values' => $merchandise['tags'] ?? null, + 'values' => $producer['tags'] ?? null, 'class' => 'select2 form-control', 'multiple' => true ]) @@ -25,7 +29,7 @@ {{ Form::label('description', 'Description') }} @include('components.form.textarea', [ 'name' => 'description', - 'value' => $merchandise['description'] ?? null, + 'value' => $producer['description'] ?? null, 'class' => 'editor', 'rows' => 5, 'required' => false, @@ -37,7 +41,7 @@
@include('components.uploader.widget', [ - 'load_url' => route('Admin.Shop.Merchandises.getImages', ['id' => $merchandise['id'] ?? false]), + 'load_url' => route('Admin.Shop.Merchandises.getImages', ['id' => $producer['id'] ?? false]), 'delete_url' => route('Admin.Botanic.Varieties.deleteImage'), 'name' => 'images', ]) diff --git a/resources/views/Admin/Shop/Producers/list.blade.php b/resources/views/Admin/Shop/Producers/list.blade.php index 4be55daf..d9ad5f6b 100644 --- a/resources/views/Admin/Shop/Producers/list.blade.php +++ b/resources/views/Admin/Shop/Producers/list.blade.php @@ -1,12 +1,12 @@ @extends('layout.index', [ - 'title' => __('Marchandises'), - 'subtitle' => __('Liste de marchandises'), - 'breadcrumb' => [__('Shop.merchandises.title')] + 'title' => __('shop.producers.title'), + 'subtitle' => __('shop.producers.list'), + 'breadcrumb' => [__('Shop.producers.title')] ]) @section('content') @component('components.card') - @include('components.datatable', ['route' => route('Admin.Shop.Merchandises.index'), 'model' => 'merchandises']) + @include('components.datatable', ['route' => route('Admin.Shop.Producers.index'), 'model' => 'producers']) @endcomponent @endsection