feat: implement user favorites and fix toggle functionality
This commit is contained in:
@@ -6,6 +6,7 @@ use App\Enums\CommentStatus;
|
|||||||
use App\Enums\Flight\FlightStatus;
|
use App\Enums\Flight\FlightStatus;
|
||||||
use App\Http\Requests\Flight\FlightCommentStoreRequest;
|
use App\Http\Requests\Flight\FlightCommentStoreRequest;
|
||||||
use App\Models\Comment;
|
use App\Models\Comment;
|
||||||
|
use App\Models\Favorite;
|
||||||
use App\Models\Flight;
|
use App\Models\Flight;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
@@ -33,7 +34,16 @@ class FlightController extends Controller
|
|||||||
{
|
{
|
||||||
$title = 'جزئیات پرواز';
|
$title = 'جزئیات پرواز';
|
||||||
$flight->increment('views_count');
|
$flight->increment('views_count');
|
||||||
return view('flights.show' , compact('title' , 'flight'));
|
|
||||||
|
$isFavorite = false;
|
||||||
|
|
||||||
|
if (auth()->check()) {
|
||||||
|
$isFavorite = Favorite::where('user_id', auth()->id())
|
||||||
|
->where('flight_id', $flight->id)
|
||||||
|
->exists();
|
||||||
|
|
||||||
|
}
|
||||||
|
return view('flights.show', compact('title', 'flight', 'isFavorite'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function commentStore(FlightCommentStoreRequest $request, Flight $flight)
|
public function commentStore(FlightCommentStoreRequest $request, Flight $flight)
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
|
|||||||
use App\Enums\CommentStatus;
|
use App\Enums\CommentStatus;
|
||||||
use App\Http\Requests\Tour\TourCommentStoreRequest;
|
use App\Http\Requests\Tour\TourCommentStoreRequest;
|
||||||
use App\Models\Comment;
|
use App\Models\Comment;
|
||||||
|
use App\Models\Favorite;
|
||||||
use App\Models\Tour;
|
use App\Models\Tour;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
@@ -46,14 +47,14 @@ class TourController extends Controller
|
|||||||
$isFavorite = false;
|
$isFavorite = false;
|
||||||
|
|
||||||
if (auth()->check()) {
|
if (auth()->check()) {
|
||||||
$isFavorite = auth()->user()
|
$isFavorite = Favorite::where('user_id', auth()->id())
|
||||||
->favoriteTours()
|
->where('tour_id', $tour->id)
|
||||||
->where('tours.id', $tour->id)
|
|
||||||
->exists();
|
->exists();
|
||||||
}
|
}
|
||||||
|
|
||||||
return view('tours.show', compact('title' , 'tour'));
|
return view('tours.show', compact('title', 'tour', 'isFavorite'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function commentStore(TourCommentStoreRequest $request, Tour $tour)
|
public function commentStore(TourCommentStoreRequest $request, Tour $tour)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
@@ -44,12 +44,38 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="listing-side-btn">
|
<div class="listing-side-btn">
|
||||||
<button type="submit" class="theme-btn"><span class="far fa-shopping-bag"></span>اکنون ثبت کن</button>
|
<button type="submit" class="theme-btn"><span class="far fa-shopping-bag"></span>اکنون ثبت کن
|
||||||
<a href="#" class="border-btn"><i class="far fa-heart"></i> افزودن به علاقه مندی ها</a>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="listing-side-btn mt-2">
|
||||||
|
@auth
|
||||||
|
<form action="{{ route('accounts.favorites.flight.toggle', ['flight' => $flight->id]) }}"
|
||||||
|
method="POST"
|
||||||
|
class="favorite-form">
|
||||||
|
@csrf
|
||||||
|
|
||||||
|
<button type="submit" class="border-btn border-0">
|
||||||
|
@if ($isFavorite)
|
||||||
|
<i class="fas fa-heart"></i>
|
||||||
|
حذف از علاقهمندیها
|
||||||
|
@else
|
||||||
|
<i class="far fa-heart"></i>
|
||||||
|
افزودن به علاقهمندیها
|
||||||
|
@endif
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
@else
|
||||||
|
<a href="{{ route('auth.login.index') }}"
|
||||||
|
class="border-btn"
|
||||||
|
title="برای افزودن به علاقهمندیها وارد شوید">
|
||||||
|
<i class="far fa-heart"></i>
|
||||||
|
افزودن به علاقهمندیها
|
||||||
|
</a>
|
||||||
|
@endauth
|
||||||
|
</div>
|
||||||
<div class="listing-side-share">
|
<div class="listing-side-share">
|
||||||
<span><i class="far fa-eye"></i> {{$flight->views_count}} مشاهده</span>
|
<span><i class="far fa-eye"></i> {{$flight->views_count}} مشاهده</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -58,10 +58,15 @@
|
|||||||
اکنون ثبت کن
|
اکنون ثبت کن
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div class="listing-side-btn mt-2">
|
||||||
@auth
|
@auth
|
||||||
<form action="{{ route('accounts.favorites.tour.toggle', ['tour' => $tour->id]) }}"
|
<form action="{{ route('accounts.favorites.tour.toggle', ['tour' => $tour->id]) }}"
|
||||||
method="POST"
|
method="POST"
|
||||||
class="d-inline">
|
class="favorite-form">
|
||||||
@csrf
|
@csrf
|
||||||
|
|
||||||
<button type="submit" class="border-btn border-0">
|
<button type="submit" class="border-btn border-0">
|
||||||
@@ -75,15 +80,14 @@
|
|||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
@else
|
@else
|
||||||
<a href="{{ route('auth.login.index') }}" class="border-btn">
|
<a href="{{ route('auth.login.index') }}"
|
||||||
|
class="border-btn"
|
||||||
|
title="برای افزودن به علاقهمندیها وارد شوید">
|
||||||
<i class="far fa-heart"></i>
|
<i class="far fa-heart"></i>
|
||||||
افزودن به علاقهمندیها
|
افزودن به علاقهمندیها
|
||||||
</a>
|
</a>
|
||||||
@endauth
|
@endauth
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="listing-side-share">
|
<div class="listing-side-share">
|
||||||
<span><i class="far fa-eye"></i> {{$tour->views_count}} مشاهده</span>
|
<span><i class="far fa-eye"></i> {{$tour->views_count}} مشاهده</span>
|
||||||
|
|||||||
@@ -58,10 +58,15 @@
|
|||||||
اکنون ثبت کن
|
اکنون ثبت کن
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div class="listing-side-btn mt-2">
|
||||||
<?php if(auth()->guard()->check()): ?>
|
<?php if(auth()->guard()->check()): ?>
|
||||||
<form action="<?php echo e(route('accounts.favorites.tour.toggle', ['tour' => $tour->id])); ?>"
|
<form action="<?php echo e(route('accounts.favorites.tour.toggle', ['tour' => $tour->id])); ?>"
|
||||||
method="POST"
|
method="POST"
|
||||||
class="d-inline">
|
class="favorite-form">
|
||||||
<?php echo csrf_field(); ?>
|
<?php echo csrf_field(); ?>
|
||||||
|
|
||||||
<button type="submit" class="border-btn border-0">
|
<button type="submit" class="border-btn border-0">
|
||||||
@@ -75,15 +80,14 @@
|
|||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<a href="<?php echo e(route('auth.login.index')); ?>" class="border-btn">
|
<a href="<?php echo e(route('auth.login.index')); ?>"
|
||||||
|
class="border-btn"
|
||||||
|
title="برای افزودن به علاقهمندیها وارد شوید">
|
||||||
<i class="far fa-heart"></i>
|
<i class="far fa-heart"></i>
|
||||||
افزودن به علاقهمندیها
|
افزودن به علاقهمندیها
|
||||||
</a>
|
</a>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="listing-side-share">
|
<div class="listing-side-share">
|
||||||
<span><i class="far fa-eye"></i> <?php echo e($tour->views_count); ?> مشاهده</span>
|
<span><i class="far fa-eye"></i> <?php echo e($tour->views_count); ?> مشاهده</span>
|
||||||
|
|||||||
@@ -45,11 +45,36 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="listing-side-btn">
|
<div class="listing-side-btn">
|
||||||
<button type="submit" class="theme-btn"><span class="far fa-shopping-bag"></span>اکنون ثبت کن</button>
|
<button type="submit" class="theme-btn"><span class="far fa-shopping-bag"></span>اکنون ثبت کن</button>
|
||||||
<a href="#" class="border-btn"><i class="far fa-heart"></i> افزودن به علاقه مندی ها</a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="listing-side-btn mt-2">
|
||||||
|
<?php if(auth()->guard()->check()): ?>
|
||||||
|
<form action="<?php echo e(route('accounts.favorites.flight.toggle', ['flight' => $flight->id])); ?>"
|
||||||
|
method="POST"
|
||||||
|
class="favorite-form">
|
||||||
|
<?php echo csrf_field(); ?>
|
||||||
|
|
||||||
|
<button type="submit" class="border-btn border-0">
|
||||||
|
<?php if($isFavorite): ?>
|
||||||
|
<i class="fas fa-heart"></i>
|
||||||
|
حذف از علاقهمندیها
|
||||||
|
<?php else: ?>
|
||||||
|
<i class="far fa-heart"></i>
|
||||||
|
افزودن به علاقهمندیها
|
||||||
|
<?php endif; ?>
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
<?php else: ?>
|
||||||
|
<a href="<?php echo e(route('auth.login.index')); ?>"
|
||||||
|
class="border-btn"
|
||||||
|
title="برای افزودن به علاقهمندیها وارد شوید">
|
||||||
|
<i class="far fa-heart"></i>
|
||||||
|
افزودن به علاقهمندیها
|
||||||
|
</a>
|
||||||
|
<?php endif; ?>
|
||||||
|
</div>
|
||||||
<div class="listing-side-share">
|
<div class="listing-side-share">
|
||||||
<span><i class="far fa-eye"></i> <?php echo e($flight->views_count); ?> مشاهده</span>
|
<span><i class="far fa-eye"></i> <?php echo e($flight->views_count); ?> مشاهده</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user