Cette révision appartient à :
Ibrahim Khail Shakil 2023-12-04 13:38:17 +06:00
Parent f8d29a7ba5
révision 62119e5e0b
19 fichiers modifiés avec 151 ajouts et 33 suppressions

Voir le fichier

@ -10,7 +10,7 @@
use App\Models\CourseCategory;
use App\Models\Instructor;
use Exception;
use File;
use File;
class CourseController extends Controller
{

Voir le fichier

@ -0,0 +1,63 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Course;
class CartController extends Controller
{
public function index()
{
$courses = Course::all();
return view('frontend.searchCourse', compact('courses', 'category'));
}
public function cart()
{
return view('frontend.cart');
}
public function addToCart($id)
{
$course = Course::findOrFail($id);
$cart = session()->get('cart', []);
if (isset($cart[$id])) {
$cart[$id]['quantity']++;
} else {
$cart[$id] = [
"title_en" => $course->title_en,
"quantity" => 1,
"price" => $course->price,
"image" => $course->image
];
}
session()->put('cart', $cart);
return redirect()->back()->with('success', 'Product added to cart successfully!');
}
public function update(Request $request)
{
if ($request->id && $request->quantity) {
$cart = session()->get('cart');
$cart[$request->id]["quantity"] = $request->quantity;
session()->put('cart', $cart);
session()->flash('success', 'Cart updated successfully');
}
}
public function remove(Request $request)
{
if ($request->id) {
$cart = session()->get('cart');
if (isset($cart[$request->id])) {
unset($cart[$request->id]);
session()->put('cart', $cart);
}
session()->flash('success', 'Product removed successfully');
}
}
}

Voir le fichier

@ -9,6 +9,10 @@ class Course extends Model
{
use HasFactory;
protected $fillable = [
'title_en', 'price', 'image'
];
public function courseCategory()
{
return $this->belongsTo(CourseCategory::class, 'category_id', 'id');

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 185 KiB

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 161 KiB

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 100 KiB

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 151 KiB

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 137 KiB

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 185 KiB

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 185 KiB

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 151 KiB

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 185 KiB

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 137 KiB

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 100 KiB

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 161 KiB

Voir le fichier

@ -21,35 +21,20 @@
<div class="row">
<div class="col-lg-8">
<h6 class="cart-area__label">2 Courses in Cart</h6>
@php $total = 0 @endphp
@if(session('cart'))
@foreach(session('cart') as $id => $details)
@php $total += $details['price'] * $details['quantity'] @endphp
<div class="cart-wizard-area">
<div class="image">
<img src="{{asset('public/frontend/dist/images/cart/01.jpg')}}" alt="product" />
<img src="{{ $details['image'] }}" alt="product" />
</div>
<div class="text">
<h6><a href="#">Gamification: Motivation Psychology & The Art of Engagement.</a></h6>
<h6><a href="#">{{ $details['title_en'] }}</a></h6>
<p>By <a href="#">Kevin Gilbert</a></p>
<div class="bottom-wizard d-flex justify-content-between align-items-center">
<p>
$24.99 <span><del>$24.99</del></span>
</p>
<div class="trash-icon">
<a href="#">
<i class="far fa-trash-alt"></i>
</a>
</div>
</div>
</div>
</div>
<div class="cart-wizard-area">
<div class="image">
<img src="{{asset('public/frontend/dist/images/cart/02.jpg')}}" alt="product" />
</div>
<div class="text">
<h6><a href="#">2020 Complete Drawing Masterclass. From Beginner to Advanced</a></h6>
<p>By <a href="#">Kevin Gilbert</a></p>
<div class="bottom-wizard d-flex justify-content-between align-items-center">
<p>
$24.99 <span><del>$24.99</del></span>
${{ $details['price'] }} <span><del>$24.99</del></span>
</p>
<div class="trash-icon">
<a href="#">
@ -59,6 +44,8 @@
</div>
</div>
</div>
@endforeach
@endif
</div>
<div class="col-lg-4">
<h6 class="cart-area__label">Summery</h6>
@ -94,4 +81,49 @@ class="button button-lg button--primary form-control mb-lg-3">Checkout</a>
</div>
</section>
<!-- Cart Section Ends Here -->
@endsection
@section('scripts')
<script type="text/javascript">
$(".update-cart").change(function (e) {
e.preventDefault();
var ele = $(this);
$.ajax({
url: '{{ route('update.cart') }}',
method: "patch",
data: {
_token: '{{ csrf_token() }}',
id: ele.parents("tr").attr("data-id"),
quantity: ele.parents("tr").find(".quantity").val()
},
success: function (response) {
window.location.reload();
}
});
});
$(".remove-from-cart").click(function (e) {
e.preventDefault();
var ele = $(this);
if(confirm("Are you sure want to remove?")) {
$.ajax({
url: '{{ route('remove.from.cart') }}',
method: "DELETE",
data: {
_token: '{{ csrf_token() }}',
id: ele.parents("tr").attr("data-id")
},
success: function (response) {
window.location.reload();
}
});
}
});
</script>
@endsection

Voir le fichier

@ -577,7 +577,9 @@ class="feather feather-lock">
<a
href="instructor-profile.html">{{$course->instructor?->name_en}}</a>
</h6>
<p class="font-para--md">{{($course->instructor?->designation)?$course->instructor?->designation:'No Designation'}}</p>
<p class="font-para--md">
{{($course->instructor?->designation)?$course->instructor?->designation:'No
Designation'}}</p>
<div class="d-flex align-items-center instructor-text-bottom">
<div class="d-flex align-items-center ratings-icon">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none"
@ -607,8 +609,10 @@ class="feather feather-lock">
</div>
</div>
</div>
<p class="lead-p font-para--lg">{{($course->instructor?->title)?$course->instructor?->title:'No Title'}}</p>
<p class="font-para--md">{{($course->instructor?->bio)?$course->instructor?->bio:'No Title'}}</p>
<p class="lead-p font-para--lg">
{{($course->instructor?->title)?$course->instructor?->title:'No Title'}}</p>
<p class="font-para--md">
{{($course->instructor?->bio)?$course->instructor?->bio:'No Title'}}</p>
</div>
</div>
</div>
@ -2303,8 +2307,8 @@ class="feather feather-star">
<div class="cart">
<div class="cart__price">
<div class="current-price">
<h3 class="font-title--sm">${{$course->price}}</h3>
<p><del>${{$course->old_price}}</del></p>
<h3 class="font-title--sm">{{$course->price?'$'.$course->price:'Free'}}</h3>
<p><del>{{$course->old_price?'$'.$course->old_price:''}}</del></p>
</div>
<div class="current-discount">
<p class="font-para--md">90% off</p>
@ -2314,8 +2318,7 @@ class="feather feather-star">
<p class="time-left text-center"><span>5 hours</span> to remaining this price</p>
<form action="#">
<button type="submit" class="button button-lg button--primary w-100">
Add to Cart
</button>
<a href="{{route('add.to.cart', $course->id)}}" class="text-white">Add to Cart</a> </button>
<button type="submit" class="button button-lg button--primary-outline mt-3 w-100">
Buy Now
</button>

Voir le fichier

@ -124,7 +124,7 @@ class="feather feather-search">
d="M2.87778 2.51099L2.77634 2.50038C2.40716 2.48688 2.07562 2.74796 2.01087 3.12209L2.00026 3.22354C1.98676 3.59272 2.24784 3.92426 2.62197 3.98901L4.13098 4.25L5.04551 15.1457L5.06443 15.3095C5.24843 16.5519 6.31708 17.486 7.58988 17.486H18.5019L18.6662 17.4808C19.8626 17.4044 20.8545 16.4996 21.0291 15.2978L21.9781 8.73941L21.9945 8.58877C22.0819 7.38969 21.132 6.349 19.9089 6.349H5.81198L5.57725 3.54727L5.55956 3.43641C5.49112 3.14809 5.25673 2.92273 4.95778 2.87099L2.87778 2.51099ZM7.47394 15.9797C6.97867 15.9255 6.58258 15.5277 6.54028 15.0207L5.93798 7.849H19.9089L19.997 7.85548C20.3128 7.90242 20.5409 8.19769 20.4936 8.52465L19.5446 15.0826L19.5208 15.1998C19.4005 15.6584 18.985 15.986 18.5019 15.986H7.58988L7.47394 15.9797ZM5.90828 20.5853C5.90828 19.7492 6.58595 19.0703 7.42228 19.0703C8.25849 19.0703 8.93728 19.7491 8.93728 20.5853C8.93728 21.4216 8.25838 22.0993 7.42228 22.0993C6.58606 22.0993 5.90828 21.4215 5.90828 20.5853ZM17.1597 20.5853C17.1597 19.7491 17.8385 19.0703 18.6747 19.0703C19.5109 19.0703 20.1897 19.7491 20.1897 20.5853C20.1897 21.4216 19.5108 22.0993 18.6747 22.0993C17.8386 22.0993 17.1597 21.4216 17.1597 20.5853ZM17.6484 10.795C17.6484 10.3808 17.3126 10.045 16.8984 10.045H14.1254L14.0236 10.0518C13.6575 10.1015 13.3754 10.4153 13.3754 10.795C13.3754 11.2092 13.7112 11.545 14.1254 11.545H16.8984L17.0001 11.5382C17.3662 11.4885 17.6484 11.1747 17.6484 10.795Z"
fill="#35343E"></path>
</svg>
<span class="badge bg-primary">2</span>
<span class="badge bg-primary">{{ count((array) session('cart')) }}</span>
<span class="visually-hidden">Items Added</span>
</a>
@if(request()->session()->get('studentLogin'))
@ -153,14 +153,15 @@ class="feather feather-search">
class="img-fluid" />
</a>
<div>
<a href="cart.html" class="cart-nav">
<a href="{{ route('cart') }}" class="cart-nav">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M2.87778 2.51099L2.77634 2.50038C2.40716 2.48688 2.07562 2.74796 2.01087 3.12209L2.00026 3.22354C1.98676 3.59272 2.24784 3.92426 2.62197 3.98901L4.13098 4.25L5.04551 15.1457L5.06443 15.3095C5.24843 16.5519 6.31708 17.486 7.58988 17.486H18.5019L18.6662 17.4808C19.8626 17.4044 20.8545 16.4996 21.0291 15.2978L21.9781 8.73941L21.9945 8.58877C22.0819 7.38969 21.132 6.349 19.9089 6.349H5.81198L5.57725 3.54727L5.55956 3.43641C5.49112 3.14809 5.25673 2.92273 4.95778 2.87099L2.87778 2.51099ZM7.47394 15.9797C6.97867 15.9255 6.58258 15.5277 6.54028 15.0207L5.93798 7.849H19.9089L19.997 7.85548C20.3128 7.90242 20.5409 8.19769 20.4936 8.52465L19.5446 15.0826L19.5208 15.1998C19.4005 15.6584 18.985 15.986 18.5019 15.986H7.58988L7.47394 15.9797ZM5.90828 20.5853C5.90828 19.7492 6.58595 19.0703 7.42228 19.0703C8.25849 19.0703 8.93728 19.7491 8.93728 20.5853C8.93728 21.4216 8.25838 22.0993 7.42228 22.0993C6.58606 22.0993 5.90828 21.4215 5.90828 20.5853ZM17.1597 20.5853C17.1597 19.7491 17.8385 19.0703 18.6747 19.0703C19.5109 19.0703 20.1897 19.7491 20.1897 20.5853C20.1897 21.4216 19.5108 22.0993 18.6747 22.0993C17.8386 22.0993 17.1597 21.4216 17.1597 20.5853ZM17.6484 10.795C17.6484 10.3808 17.3126 10.045 16.8984 10.045H14.1254L14.0236 10.0518C13.6575 10.1015 13.3754 10.4153 13.3754 10.795C13.3754 11.2092 13.7112 11.545 14.1254 11.545H16.8984L17.0001 11.5382C17.3662 11.4885 17.6484 11.1747 17.6484 10.795Z"
fill="#35343E"></path>
</svg>
<span class="badge bg-primary">2</span>
{{-- <span class="badge bg-primary">2</span> --}}
<span class="badge bg-primary">{{ count((array) session('cart')) }}</span>
<span class="visually-hidden">Items Added</span>
</a>
<button class="navbar-mobile--cross">
@ -572,6 +573,12 @@ function toggleDropdown(event) {
}
</script>
@if(session('success'))
<div class="alert alert-success">
{{ session('success') }}
</div>
@endif
@stack('scripts')

Voir le fichier

@ -18,6 +18,7 @@
use App\Http\Controllers\Backend\Reviews\ReviewController as review;
use App\Http\Controllers\Backend\Communication\DiscussionController as discussion;
use App\Http\Controllers\Backend\Communication\MessageController as message;
use App\Http\Controllers\CartController;
/* students */
use App\Http\Controllers\Students\AuthController as sauth;
@ -117,3 +118,11 @@
Route::get('/contact', function () {
return view('frontend.contact');
})->name('contact');
// Cart
Route::get('/', [CartController::class, 'index']);
Route::get('cart', [CartController::class, 'cart'])->name('cart');
Route::get('add-to-cart/{id}', [CartController::class, 'addToCart'])->name('add.to.cart');
Route::patch('update-cart', [CartController::class, 'update'])->name('update.cart');
Route::delete('remove-from-cart', [CartController::class, 'remove'])->name('remove.from.cart');