This commit is contained in:
Ludovic CANDELLIER
2021-09-09 00:03:24 +02:00
parent 50d445bb3b
commit 9cf96b7d4e
22 changed files with 183 additions and 38 deletions

View File

@@ -5,6 +5,7 @@ namespace App\Datatables\Shop;
use Yajra\DataTables\Html\Column; use Yajra\DataTables\Html\Column;
use App\Datatables\ParentDataTable as DataTable; use App\Datatables\ParentDataTable as DataTable;
use App\Models\Shop\PriceList; use App\Models\Shop\PriceList;
use App\Repositories\Shop\PriceLists;
class PriceListsDataTable extends DataTable class PriceListsDataTable extends DataTable
{ {
@@ -17,7 +18,7 @@ class PriceListsDataTable extends DataTable
public function query(PriceList $model) public function query(PriceList $model)
{ {
$model = $model->with('sale_channel'); $model = $model->with(['sale_channel','price_list_values']);
$model = self::filterByTariff($model); $model = self::filterByTariff($model);
return self::buildQuery($model); return self::buildQuery($model);
} }
@@ -28,10 +29,20 @@ class PriceListsDataTable extends DataTable
return $tariff_id ? $model->byTariff($tariff_id) : $model; return $tariff_id ? $model->byTariff($tariff_id) : $model;
} }
public function modifier($datatables)
{
$datatables
->editColumn('status', function (PriceList $price_list) {
return PriceLists::getStatus($price_list['status_id']);
})
->rawColumns(['action']);
return parent::modifier($datatables);
}
protected function getColumns() protected function getColumns()
{ {
return [ return [
Column::make('status_id')->data('status')->title('etat'),
Column::make('name')->title('Nom'), Column::make('name')->title('Nom'),
Column::make('sale_channel.name')->title('Canal de vente'), Column::make('sale_channel.name')->title('Canal de vente'),
self::makeColumnButtons(), self::makeColumnButtons(),

View File

@@ -5,6 +5,7 @@ namespace App\Datatables\Shop;
use Yajra\DataTables\Html\Column; use Yajra\DataTables\Html\Column;
use App\Datatables\ParentDataTable as DataTable; use App\Datatables\ParentDataTable as DataTable;
use App\Models\Shop\Tariff; use App\Models\Shop\Tariff;
use App\Repositories\Shop\Tariffs;
class TariffsDataTable extends DataTable class TariffsDataTable extends DataTable
{ {
@@ -16,9 +17,21 @@ class TariffsDataTable extends DataTable
return self::buildQuery($model); return self::buildQuery($model);
} }
public function modifier($datatables)
{
$datatables
->editColumn('status', function (Tariff $tariff) {
return Tariffs::getStatus($tariff['status_id']);
})
->rawColumns(['action'])
;
return parent::modifier($datatables);
}
protected function getColumns() protected function getColumns()
{ {
return [ return [
Column::make('status_id')->data('status')->title('status'),
Column::make('name')->title('Nom'), Column::make('name')->title('Nom'),
Column::make('sale_channel.name')->title('Canal de vente par défaut'), Column::make('sale_channel.name')->title('Canal de vente par défaut'),
Column::make('code')->title('Code'), Column::make('code')->title('Code'),

View File

@@ -28,7 +28,8 @@ class GenreController extends Controller
public function store(Request $request) public function store(Request $request)
{ {
$ret = Genres::store($request); $data = $request->all();
$ret = Genres::store($data);
return redirect()->route('Admin.Botanic.Genres.index'); return redirect()->route('Admin.Botanic.Genres.index');
} }

View File

@@ -6,6 +6,7 @@ use Illuminate\Http\Request;
use App\Repositories\Botanic\Species; use App\Repositories\Botanic\Species;
use App\Repositories\Botanic\Genres; use App\Repositories\Botanic\Genres;
use App\Repositories\Shop\TagGroups;
use App\Datatables\Botanic\SpeciesDataTable; use App\Datatables\Botanic\SpeciesDataTable;
class SpecieController extends Controller class SpecieController extends Controller
@@ -28,13 +29,14 @@ class SpecieController extends Controller
public function create() public function create()
{ {
$data['genres'] = Genres::getOptions(); $data['genres'] = Genres::getOptions();
$data['tags_list'] = TagGroups::getTreeTags();
return view('Admin.Botanic.Species.create', $data); return view('Admin.Botanic.Species.create', $data);
} }
public function store(Request $request) public function store(Request $request)
{ {
$data = $request->all(); $data = $request->all();
$ret = Species::store($data); $ret = Species::storeFull($data);
return redirect()->route('Admin.Botanic.Species.index'); return redirect()->route('Admin.Botanic.Species.index');
} }
@@ -48,6 +50,7 @@ class SpecieController extends Controller
{ {
$data['specie'] = Species::get($id); $data['specie'] = Species::get($id);
$data['genres'] = Genres::getOptions(); $data['genres'] = Genres::getOptions();
$data['tags_list'] = TagGroups::getTreeTags();
return view('Admin.Botanic.Species.edit', $data); return view('Admin.Botanic.Species.edit', $data);
} }
@@ -56,6 +59,21 @@ class SpecieController extends Controller
return Species::destroy($id); return Species::destroy($id);
} }
public function getImages(Request $request, $id = false, $can_edit = true)
{
$id = $id ? $id : $request->input('id');
$data['images'] = Species::getImages($id);
$data['can_edit'] = $can_edit;
return view('components.uploader.mini-gallery-items', $data);
}
public function deleteImage(Request $request)
{
$id = $request->input('id');
$index = $request->input('index');
return Species::deleteImage($id, $index);
}
public function exportExcel() public function exportExcel()
{ {
return Species::exportExcel(); return Species::exportExcel();

View File

@@ -44,7 +44,7 @@ class VarietyController extends Controller
public function edit($id) public function edit($id)
{ {
$data = Varieties::getFull($id); $data['variety'] = Varieties::getFull($id);
$data['species'] = Species::getOptions(); $data['species'] = Species::getOptions();
$data['tags_list'] = TagGroups::getTreeTags(); $data['tags_list'] = TagGroups::getTreeTags();
return view('Admin.Botanic.Varieties.edit', $data); return view('Admin.Botanic.Varieties.edit', $data);

View File

@@ -13,10 +13,10 @@ class Customers
->activeIfRoute('customers') ->activeIfRoute('customers')
->order(3); ->order(3);
$menu->addTo('customers', 'Clients', [ 'route' => 'Admin.Shop.Customers.index', 'permission' => 'backend_access' ]) $menu->addTo('customers', __('customer.customers.name'), [ 'route' => 'Admin.Shop.Customers.index', 'permission' => 'backend_access' ])
->activeIfRoute(['Admin.Shop.Customers.*'])->order(1); ->activeIfRoute(['Admin.Shop.Customers.*'])->order(1);
$menu->addTo('customers', 'Canaux de vente', [ 'route' => 'Admin.Shop.SaleChannels.index', 'permission' => 'backend_access' ]) $menu->addTo('customers', __('customer.sale_channels.name'), [ 'route' => 'Admin.Shop.SaleChannels.index', 'permission' => 'backend_access' ])
->activeIfRoute(['Admin.Shop.SaleChannels.*'])->order(1); ->activeIfRoute(['Admin.Shop.SaleChannels.*'])->order(1);
} }
} }

View File

@@ -16,7 +16,7 @@ use Kirschbaum\PowerJoins\PowerJoins;
use Wildside\Userstamps\Userstamps; use Wildside\Userstamps\Userstamps;
class Variety extends Model implements HasMedia class Variety extends Model implements HasMedia
{ {
use InteractsWithMedia, PowerJoins, Taggable, SoftDeletes, UserStamps; use InteractsWithMedia, PowerJoins, SoftDeletes, Taggable, UserStamps;
protected $guarded = ['id']; protected $guarded = ['id'];
protected $table = 'botanic_varieties'; protected $table = 'botanic_varieties';

View File

@@ -6,9 +6,11 @@ use Illuminate\Database\Eloquent\Model;
use Staudenmeir\EloquentHasManyDeep\HasRelationships; use Staudenmeir\EloquentHasManyDeep\HasRelationships;
use BeyondCode\Comments\Traits\HasComments; use BeyondCode\Comments\Traits\HasComments;
use Kirschbaum\PowerJoins\PowerJoins;
class Tariff extends Model class Tariff extends Model
{ {
use HasComments, HasRelationships; use HasComments, HasRelationships, PowerJoins;
protected $guarded = ['id']; protected $guarded = ['id'];
protected $table = 'shop_tariffs'; protected $table = 'shop_tariffs';
@@ -27,4 +29,14 @@ class Tariff extends Model
{ {
return $this->hasMany('App\Models\Shop\PriceList'); return $this->hasMany('App\Models\Shop\PriceList');
} }
public function scopeBySaleChanel($query, $id)
{
return $query->where($this->table . '.sale_channel_id', $id);
}
public function scopeByStatus($query, $id)
{
return $query->where($this->table . '.status_id', $id);
}
} }

View File

@@ -6,19 +6,15 @@ use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Yajra\DataTables\DataTables;
use Maatwebsite\Excel\Facades\Excel; use Maatwebsite\Excel\Facades\Excel;
use App\Repositories\Core\Tag;
use App\Models\Botanic\Specie; use App\Models\Botanic\Specie;
use App\Exports\Botanic\SpeciesExport; use App\Exports\Botanic\SpeciesExport;
class Species class Species
{ {
public static function getDatatable()
{
$model = Specie::orderBy('name');
return Datatables::of($model)->make(true);
}
public static function getOptions() public static function getOptions()
{ {
@@ -45,11 +41,23 @@ class Species
return Specie::findOrFail($id); return Specie::findOrFail($id);
} }
public static function storeFull($data)
{
$images = $data['images'] ?? false;
$tags = $data['tags'] ?? false;
unset($data['images']);
unset($data['tags']);
$specie = self::store($data);
self::storeImages($variety, $images);
self::storeTags($specie, $tags);
return $specie;
}
public static function store($data) public static function store($data)
{ {
$id = isset($data['id']) ? $data['id'] : false; $id = $data['id'] ?? false;
$item = $id ? self::update($data, $id) : self::create($data); $specie = $id ? self::update($data, $id) : self::create($data);
return $item->id; return $specie;
} }
public static function create($data) public static function create($data)
@@ -70,6 +78,26 @@ class Species
return Specie::destroy($id); return Specie::destroy($id);
} }
public static function storeTags($specie, $tags)
{
return Tag::storeTags($specie, $tags);
}
public static function storeImages($specie, $files)
{
return Media::storeImages($specie, $files);
}
public static function getImages($id)
{
return Media::getImages(self::get($id));
}
public static function deleteImage($id, $index)
{
return Media::deleteImage(self::get($id), $index);
}
public static function exportExcel() public static function exportExcel()
{ {
return Excel::download(new SpeciesExport, 'species.xlsx'); return Excel::download(new SpeciesExport, 'species.xlsx');

View File

@@ -62,7 +62,6 @@ class Varieties
return Tag::getTagsByModel($variety); return Tag::getTagsByModel($variety);
} }
public static function storeFull($data) public static function storeFull($data)
{ {
$images = isset($data['images']) ? $data['images'] : false; $images = isset($data['images']) ? $data['images'] : false;
@@ -75,7 +74,6 @@ class Varieties
return $variety; return $variety;
} }
public static function store($data) public static function store($data)
{ {
return isset($data['id']) ? self::update($data) : self::create($data); return isset($data['id']) ? self::update($data) : self::create($data);

View File

@@ -10,6 +10,17 @@ use App\Models\Shop\PriceList;
class PriceLists class PriceLists
{ {
public static function getStatus($status_id)
{
return self::getStatuses()[$status_id];
}
public static function getStatuses()
{
return ['Actif','Suspendu','Invisible','Obsolete'];
}
public static function getByTariff($id) public static function getByTariff($id)
{ {
return PriceList::byTariff($id)->get(); return PriceList::byTariff($id)->get();

View File

@@ -26,6 +26,11 @@ class Tariffs
return Tariff::orderBy('name', 'asc')->get()->pluck('name', 'id')->toArray(); return Tariff::orderBy('name', 'asc')->get()->pluck('name', 'id')->toArray();
} }
public static function getStatus($status_id)
{
return self::getStatuses()[$status_id];
}
public static function getStatuses() public static function getStatuses()
{ {
return ['Actif','Suspendu','Invisible','Obsolete']; return ['Actif','Suspendu','Invisible','Obsolete'];

View File

@@ -14,7 +14,7 @@ class CreateBotanicFamiliesTable extends Migration {
{ {
Schema::create('botanic_families', function(Blueprint $table) Schema::create('botanic_families', function(Blueprint $table)
{ {
$table->integer('id')->nullable(); $table->increments('id');
$table->string('name', 50)->nullable(); $table->string('name', 50)->nullable();
$table->string('alias', 50)->nullable(); $table->string('alias', 50)->nullable();
$table->string('latin', 50)->nullable(); $table->string('latin', 50)->nullable();

View File

@@ -14,7 +14,7 @@ class CreateBotanicGenresTable extends Migration {
{ {
Schema::create('botanic_genres', function(Blueprint $table) Schema::create('botanic_genres', function(Blueprint $table)
{ {
$table->integer('id', true); $table->increments('id');
$table->integer('family_id')->nullable(); $table->integer('family_id')->nullable();
$table->string('name', 50)->nullable(); $table->string('name', 50)->nullable();
$table->string('alias', 50)->nullable(); $table->string('alias', 50)->nullable();

View File

@@ -0,0 +1,30 @@
<?php
return [
'customers' => [
'title' => 'Client',
'name' => 'Client',
'description' => 'Gérer les clients',
'add' => 'Ajouter un client',
'edit' => 'Editer un client',
'del' => 'Effacer un client',
'list' => 'Liste des clients',
'successadd' => 'Le client été correctement ajouté',
'successmod' => 'Le client a été correctement modifié',
'successdel' => 'Le client a été correctement effacé',
'confirmdelete' => 'Confirmez-vous la suppression du client ?',
],
'sale_channels' => [
'title' => 'Canal de vente',
'name' => 'Canal de vente',
'description' => 'Gérer les clients',
'add' => 'Ajouter un canal de vente',
'edit' => 'Editer un canal de vente',
'del' => 'Effacer un canal de vente',
'list' => 'Liste des canaux de vente',
'successadd' => 'Le canal de vente été correctement ajouté',
'successmod' => 'Le canal de vente a été correctement modifié',
'successdel' => 'Le canal de vente a été correctement effacé',
'confirmdelete' => 'Confirmez-vous la suppression du canal de vente ?',
],
];

View File

@@ -11,7 +11,7 @@
<div class="row mb-3"> <div class="row mb-3">
<div class="col-12"> <div class="col-12">
{{ Form::label('family', 'Famille') }} {{ Form::label('family', 'Famille') }}
@include('components.select', ['name' => 'family_id', 'list' => $families, 'value' => $genre['family_id'] ?? null, 'required' => false]) @include('components.select', ['name' => 'family_id', 'list' => $families, 'value' => $genre['family_id'] ?? null, 'required' => false, 'with_empty' => ''])
</div> </div>
</div> </div>
@@ -19,7 +19,7 @@
<div class="row mb-3"> <div class="row mb-3">
<div class="col-12"> <div class="col-12">
{{ Form::label('alias', 'Alias') }} {{ Form::label('alias', 'Alias') }}
@include('components.input', ['name' => 'alias', 'value' => $genre['alias'] ?? null, 'required' => false]) @include('components.input', ['name' => 'alias', 'value' => $genre['alias'] ?? null])
</div> </div>
</div> </div>

View File

@@ -26,6 +26,13 @@
</div> </div>
</div> </div>
<div class="row mb-3">
<div class="col-12">
{{ Form::label('tags', 'Tags') }}
@include('components.select-tree', ['name' => 'tags[]', 'list' => $tags_list, 'values' => $tags ?? null, 'class' => 'select2 form-control', 'multiple' => true])
</div>
</div>
<div class="row mb-3"> <div class="row mb-3">
<div class="col-12"> <div class="col-12">
{{ Form::label('description', 'Description') }} {{ Form::label('description', 'Description') }}
@@ -36,21 +43,26 @@
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
{{ Form::label('photo', 'Photos') }} @include('components.uploader.widget', ['load_url' => route('Admin.Botanic.Species.getImages', ['id' => $specie['id'] ?? false]), 'delete_url' => route('Admin.Botanic.Species.deleteImage'), 'name' => 'images'])
@include('components.file', ['name' => 'name', 'value' => $specie['name'] ?? null])
</div> </div>
</div> </div>
@include('components.save') @include('components.save')
@include('load.form.upload.fileinput') @include('load.form.appender')
@include('load.form.editor')
@include('load.form.save')
@include('load.form.select2') @include('load.form.select2')
@include('load.form.upload.fileinput')
@include('boilerplate::load.tinymce')
@push('js') @push('js')
<script> <script>
$(function() { $(function() {
initSelect2(); initSelect2();
initEditor(); initEditor();
initSaveForm();
}); });
</script> </script>
@endpush @endpush

View File

@@ -7,7 +7,7 @@
@section('content') @section('content')
{{ Form::open(['route' => 'Admin.Botanic.Varieties.store', 'id' => 'form', 'autocomplete' => 'off', 'files' => true]) }} {{ Form::open(['route' => 'Admin.Botanic.Varieties.store', 'id' => 'form', 'autocomplete' => 'off', 'files' => true]) }}
<input type="hidden" name="id" id="id" value="{{ $id }}"> <input type="hidden" name="id" id="id" value="{{ $variety['id'] }}">
@include('Admin.Botanic.Varieties.form') @include('Admin.Botanic.Varieties.form')
</form> </form>

View File

@@ -1,34 +1,34 @@
<div class="row"> <div class="row">
<div class="col-md-8"> <div class="col-md-8">
<div class="row"> <div class="row mb-3">
<div class="col-6"> <div class="col-6">
{{ Form::label('name', 'Nom') }} {{ Form::label('name', 'Nom') }}
@include('components.input', ['name' => 'name', 'value' => $name ?? null, 'required' => true]) @include('components.input', ['name' => 'name', 'value' => $variety['name'] ?? null, 'required' => true])
</div> </div>
<div class="col-6"> <div class="col-6">
{{ Form::label('genre', 'Espèce') }} {{ Form::label('genre', 'Espèce') }}
@include('components.select', ['name' => 'specie_id', 'list' => $species, 'value' => $specie_id ?? null, 'class' => 'select2 form-control', 'with_empty' => '', 'required' => false]) @include('components.select', ['name' => 'specie_id', 'list' => $species, 'value' => $variety['specie_id'] ?? null, 'class' => 'select2 form-control', 'with_empty' => '', 'required' => false])
</div> </div>
</div> </div>
<div class="row mt-3"> <div class="row mb-3">
<div class="col-12"> <div class="col-12">
{{ Form::label('tags', 'Tags') }} {{ Form::label('tags', 'Tags') }}
@include('components.select-tree', ['name' => 'tags[]', 'list' => $tags_list, 'values' => $tags ?? null, 'class' => 'select2 form-control', 'multiple' => true]) @include('components.select-tree', ['name' => 'tags[]', 'list' => $tags_list, 'values' => $variety['tags'] ?? null, 'class' => 'select2 form-control', 'multiple' => true])
</div> </div>
</div> </div>
<div class="row mt-3"> <div class="row mb-3">
<div class="col-12"> <div class="col-12">
{{ Form::label('description', 'Description') }} {{ Form::label('description', 'Description') }}
@include('components.textarea', ['name' => 'description', 'value' => $description ?? null, 'class' => 'editor', 'rows' => 5, 'required' => false]) @include('components.textarea', ['name' => 'description', 'value' => $variety['description'] ?? null, 'class' => 'editor', 'rows' => 5, 'required' => false])
</div> </div>
</div> </div>
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
@include('components.uploader.widget', ['load_url' => route('Admin.Botanic.Varieties.getImages', ['id' => $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'])
</div> </div>
</div> </div>

View File

@@ -1,4 +1,4 @@
<div class="row"> <div class="row mb-3">
<div class="col-6"> <div class="col-6">
{{ Form::open(['route' => 'Admin.Shop.Tariffs.store', 'id' => 'tariffs-form', 'autocomplete' => 'off']) }} {{ Form::open(['route' => 'Admin.Shop.Tariffs.store', 'id' => 'tariffs-form', 'autocomplete' => 'off']) }}
@@ -48,7 +48,10 @@
</form> </form>
</div> </div>
<div class="col-6"> </div>
<div class="row">
<div class="col-12">
@if ($tariff['id'] ?? false) @if ($tariff['id'] ?? false)
@component('components.card', ['title' => 'Liste de prix']) @component('components.card', ['title' => 'Liste de prix'])

View File

@@ -4,7 +4,7 @@
id="@if (isset($id_name)){{ $id_name }}@else{{ $name }}@endif" id="@if (isset($id_name)){{ $id_name }}@else{{ $name }}@endif"
class="form-control @if (isset($class)){{ $class }}@endif" class="form-control @if (isset($class)){{ $class }}@endif"
value="@if (isset($value)){{ $value }}@endif" value="@if (isset($value)){{ $value }}@endif"
@if (isset($required)) @if ($required ?? false)
required="required" required="required"
@endif @endif
@if (isset($mask)) @if (isset($mask))

View File

@@ -8,6 +8,9 @@ Route::prefix('Species')->name('Species.')->group(function () {
Route::post('store', 'SpecieController@store')->name('store'); Route::post('store', 'SpecieController@store')->name('store');
Route::get('edit/{id}', 'SpecieController@edit')->name('edit'); Route::get('edit/{id}', 'SpecieController@edit')->name('edit');
Route::any('getSelect', 'SpecieController@getOptions')->name('getSelect'); Route::any('getSelect', 'SpecieController@getOptions')->name('getSelect');
Route::post('deleteImage', 'SpecieController@deleteImage')->name('deleteImage');
Route::any('getImages/{id?}/{can_edit?}', 'SpecieController@getImages')->name('getImages');
Route::any('exportExcel', 'SpecieController@exportExcel')->name('exportExcel'); Route::any('exportExcel', 'SpecieController@exportExcel')->name('exportExcel');