feat: 🗃 add new field to show slide only for connected customers #87

This commit is contained in:
Alexis Gousseau 2026-02-04 10:46:03 +01:00
parent d84914974d
commit fcd0a79251
6 changed files with 67 additions and 8 deletions

View file

@ -47,6 +47,7 @@ class SlidesController extends Controller
$link = $request->link;
$newTab = $request->link_new_tab === null ? 0 : 1;
$sliderId = $request->slider_id;
$connected = $request->connected === null ? 0 : 1;
if (empty($request->date_start_date)) {
$date_start = null;
@ -83,6 +84,7 @@ class SlidesController extends Controller
$slide->link_label = $linkLabel;
$slide->link = $link;
$slide->link_new_tab = $newTab;
$slide->connected = $connected;
$slide->date_start = $date_start;
$slide->date_end = $date_end;
$slide->slider_id = $sliderId;
@ -128,6 +130,7 @@ class SlidesController extends Controller
$link = $request->link;
$newTab = $request->link_new_tab === null ? 0 : 1;
$sliderId = $request->slider_id;
$connected = $request->connected === null ? 0 : 1;
if (empty($request->date_start_date)) {
$date_start = null;
@ -164,6 +167,7 @@ class SlidesController extends Controller
$slide->link_label = $linkLabel;
$slide->link = $link;
$slide->link_new_tab = $newTab;
$slide->connected = $connected;
$slide->date_start = $date_start;
$slide->date_end = $date_end;
$slide->slider_id = $sliderId;

View file

@ -7,6 +7,7 @@ use App\Models\Product;
use App\Models\Slider;
use App\Models\Range;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class HomeController extends Controller
{
@ -28,6 +29,12 @@ class HomeController extends Controller
$slider = Slider::where('slug', 'home')->first();
$slides = $slider->showableSlides;
// Display only slides visible to connected customers.
$isCustomerConnected = Auth::guard('customer')->check();
if (!$isCustomerConnected) {
$slides = $slides->where('connected', false);
}
$quickorder_ranges = Range::where('status', 1)->get();
foreach ($quickorder_ranges as $range) {
foreach ($range->products()->where('status', 1) as $product) {

View file

@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddConnectedFieldInSlidesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up(): void
{
Schema::table('slides', function (Blueprint $table) {
$table->boolean('connected')->default(false)
->comment('Slide visible only for connected customers.')->after('link_new_tab');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down(): void
{
Schema::table('slides', function (Blueprint $table) {
$table->dropColumn('connected');
});
}
}

15
package-lock.json generated
View file

@ -3223,9 +3223,9 @@
}
},
"node_modules/caniuse-lite": {
"version": "1.0.30001684",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz",
"integrity": "sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==",
"version": "1.0.30001767",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001767.tgz",
"integrity": "sha512-34+zUAMhSH+r+9eKmYG+k2Rpt8XttfE4yXAjoZvkAPs15xcYQhyBYdalJ65BzivAvGRMViEjy6oKr/S91loekQ==",
"dev": true,
"funding": [
{
@ -3240,7 +3240,8 @@
"type": "github",
"url": "https://github.com/sponsors/ai"
}
]
],
"license": "CC-BY-4.0"
},
"node_modules/chalk": {
"version": "4.1.2",
@ -12403,9 +12404,9 @@
}
},
"caniuse-lite": {
"version": "1.0.30001684",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz",
"integrity": "sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==",
"version": "1.0.30001767",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001767.tgz",
"integrity": "sha512-34+zUAMhSH+r+9eKmYG+k2Rpt8XttfE4yXAjoZvkAPs15xcYQhyBYdalJ65BzivAvGRMViEjy6oKr/S91loekQ==",
"dev": true
},
"chalk": {

View file

@ -46,6 +46,13 @@
<div class="form-group col"></div>
</div>
<div class="form-group">
<label>
<input type="checkbox" name="connected">
Visible uniquement pour les utilisateurs connectés ?
</label>
</div>
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
<h2><small class="text-muted">Période de parution</small></h2>
</div>

View file

@ -5,7 +5,7 @@
@method('PUT')
@csrf
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
<h1 class="h2"><a href="{{route('bo.slides.index')}}" class="h2 text-decoration-none"><</a> Slides <small class="text-muted">Création</small></h1>
<h1 class="h2"><a href="{{route('bo.slides.index')}}" class="h2 text-decoration-none"><</a> Slides <small class="text-muted">Edition</small></h1>
@if (session('success'))
<span class="float-center text-success">{{ session('success') }}</span>
@endif
@ -55,6 +55,13 @@
<div class="form-group col"></div>
</div>
<div class="form-group">
<label>
<input type="checkbox" name="connected" @if ($slide->connected) checked @endif>
Visible uniquement pour les utilisateurs connectés ?
</label>
</div>
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
<h2><small class="text-muted">Période de parution</small></h2>
</div>