diff --git a/app/Http/Controllers/Backend/Courses/CourseController.php b/app/Http/Controllers/Backend/Courses/CourseController.php index 007e363..c4eb8e0 100644 --- a/app/Http/Controllers/Backend/Courses/CourseController.php +++ b/app/Http/Controllers/Backend/Courses/CourseController.php @@ -7,7 +7,7 @@ use Illuminate\Http\Request; use App\Http\Requests\Backend\Course\Courses\AddNewRequest; use App\Http\Requests\Backend\Course\Courses\UpdateRequest; -use App\Models\CourseCategory; +use App\Models\CourseCategory; use App\Models\Instructor; use Exception; use File; @@ -23,6 +23,12 @@ public function index() return view('backend.course.courses.index', compact('course')); } + public function frontIndex() + { + $course = Course::paginate(10); + return view('frontend.searchCourse', compact('course')); + } + /** * Show the form for creating a new resource. */ @@ -47,14 +53,18 @@ public function store(AddNewRequest $request) $course->category_id = $request->categoryId; $course->instructor_id = $request->instructorId; $course->type = $request->courseType; - $course->price = $request->coursePrice; + $course->price = $request->coursePrice; + $course->old_price = $request->courseOldPrice; $course->subscription_price = $request->subscriptionPrice; $course->start_from = $request->start_from; $course->duration = $request->duration; + $course->lesson = $request->lesson; + $course->review_id = $request->reviewId; $course->difficulty = $request->courseDifficulty; $course->course_code = $request->course_code; $course->prerequisites_en = $request->prerequisites_en; $course->prerequisites_bn = $request->prerequisites_bn; + $course->thumbnail_video = $request->thumbnail_video; $course->status = $request->status; $course->language = 'en'; @@ -63,6 +73,11 @@ public function store(AddNewRequest $request) $request->image->move(public_path('uploads/courses'), $imageName); $course->image = $imageName; } + if ($request->hasFile('thumbnail_image')) { + $thumbnailImageName = rand(111, 999) . time() . '.' . $request->thumbnail_image->extension(); + $request->thumbnail_image->move(public_path('uploads/courses/thumbnails'), $thumbnailImageName); + $course->thumbnail_image = $thumbnailImageName; + } if ($course->save()) return redirect()->route('course.index')->with('success', 'Data Saved'); else @@ -76,11 +91,19 @@ public function store(AddNewRequest $request) /** * Display the specified resource. */ - public function show(Course $course) + public function show($id) { - // + // } + public function frontShow($id) + { + $course = Course::findOrFail(encryptor('decrypt', $id)); + // dd($course); + return view('frontend.courseDetails', compact('course')); + } + + /** * Show the form for editing the specified resource. */ @@ -107,9 +130,11 @@ public function update(UpdateRequest $request, $id) $course->instructor_id = $request->instructorId; $course->type = $request->courseType; $course->price = $request->coursePrice; + $course->old_price = $request->courseOldPrice; $course->subscription_price = $request->subscriptionPrice; $course->start_from = $request->start_from; $course->duration = $request->duration; + $course->lesson = $request->lesson; $course->difficulty = $request->courseDifficulty; $course->course_code = $request->course_code; $course->prerequisites_en = $request->prerequisites_en; @@ -122,6 +147,11 @@ public function update(UpdateRequest $request, $id) $request->image->move(public_path('uploads/courses'), $imageName); $course->image = $imageName; } + if ($request->hasFile('thumbnail_image')) { + $thumbnailImageName = rand(111, 999) . time() . '.' . $request->thumbnail_image->extension(); + $request->thumbnail_image->move(public_path('uploads/courses/thumbnails'), $thumbnailImageName); + $course->thumbnail_image = $thumbnailImageName; + } if ($course->save()) return redirect()->route('course.index')->with('success', 'Data Saved'); else diff --git a/database/migrations/2023_11_26_034558_create_courses_table.php b/database/migrations/2023_11_26_034558_create_courses_table.php index f3d6e4c..9219a70 100644 --- a/database/migrations/2023_11_26_034558_create_courses_table.php +++ b/database/migrations/2023_11_26_034558_create_courses_table.php @@ -21,14 +21,18 @@ public function up(): void $table->unsignedBigInteger('instructor_id')->index(); $table->enum('type', ['free', 'paid', 'subscription'])->default('paid'); $table->decimal('price', 10, 2)->default(0.00)->nullable(); + $table->decimal('old_price', 10, 2)->nullable(); $table->decimal('subscription_price', 10, 2)->nullable(); $table->timestamp('start_from')->nullable(); $table->integer('duration')->nullable(); + $table->integer('lesson')->nullable(); $table->text('prerequisites_en')->nullable(); $table->text('prerequisites_bn')->nullable(); $table->enum('difficulty', ['beginner', 'intermediate', 'advanced'])->nullable(); $table->string('course_code')->nullable(); $table->string('image')->nullable(); + $table->string('thumbnail_image')->nullable(); + $table->string('thumbnail_video')->nullable(); $table->boolean('status')->default(1)->comment('1 active, 0 inactive'); $table->string('language')->default('en'); $table->timestamps(); diff --git a/public/uploads/courses/thumbnails/2061701588065.png b/public/uploads/courses/thumbnails/2061701588065.png new file mode 100644 index 0000000..84fa104 Binary files /dev/null and b/public/uploads/courses/thumbnails/2061701588065.png differ diff --git a/public/uploads/courses/thumbnails/2481701588826.jpg b/public/uploads/courses/thumbnails/2481701588826.jpg new file mode 100644 index 0000000..04edb3a Binary files /dev/null and b/public/uploads/courses/thumbnails/2481701588826.jpg differ diff --git a/resources/views/backend/course/courses/create.blade.php b/resources/views/backend/course/courses/create.blade.php index c5c5ef8..8ab96e8 100644 --- a/resources/views/backend/course/courses/create.blade.php +++ b/resources/views/backend/course/courses/create.blade.php @@ -58,7 +58,8 @@
- +
@if($errors->has('courseDescription_en')) {{ $errors->first('courseDescription_en') }} @@ -67,7 +68,8 @@
- +
@if($errors->has('courseDescription_bn')) {{ $errors->first('courseDescription_bn') }} @@ -83,7 +85,7 @@ @empty @endforelse - +
@if($errors->has('categoryId')) {{ $errors->first('categoryId') }} @@ -122,10 +124,13 @@
@@ -140,6 +145,16 @@ {{ $errors->first('coursePrice') }} @endif
+
+
+ + +
+ @if($errors->has('courseOldPrice')) + {{ $errors->first('courseOldPrice') }} + @endif +
@@ -170,6 +185,16 @@ {{ $errors->first('duration') }} @endif
+
+
+ + +
+ @if($errors->has('lesson')) + {{ $errors->first('lesson') }} + @endif +
@@ -190,6 +215,25 @@ {{ $errors->first('prerequisites_bn') }} @endif
+
+
+ + +
+ @if($errors->has('course_code')) + {{ $errors->first('course_code') }} + @endif +
+
+
+ + +
+ @if($errors->has('thumbnail_video')) + {{ $errors->first('thumbnail_video') }} + @endif +
@@ -200,23 +244,20 @@
-
- - -
- @if($errors->has('course_code')) - {{ $errors->first('course_code') }} - @endif -
-
+
+ +
+ +
+
- +
diff --git a/resources/views/backend/course/courses/edit.blade.php b/resources/views/backend/course/courses/edit.blade.php index 88a231e..94c90c8 100644 --- a/resources/views/backend/course/courses/edit.blade.php +++ b/resources/views/backend/course/courses/edit.blade.php @@ -160,6 +160,16 @@ {{ $errors->first('coursePrice') }} @endif
+
+
+ + +
+ @if($errors->has('courseOldPrice')) + {{ $errors->first('courseOldPrice') }} + @endif +
@@ -193,6 +203,17 @@ $course->duration) }} @endif
+
+
+ + +
+ @if($errors->has('lesson')) + {{ $errors->first('lesson', + $course->lesson) }} + @endif +
@@ -213,6 +234,28 @@ {{ $errors->first('prerequisites_bn') }} @endif
+
+
+ + +
+ @if($errors->has('course_code')) + {{ $errors->first('course_code', + $course->course_code) }} + @endif +
+
+
+ + +
+ @if($errors->has('thumbnail_video')) + {{ $errors->first('thumbnail_video', + $course->thumbnail_video) }} + @endif +
@@ -224,15 +267,21 @@
-
+
+
+ +
+ +
+
- +
diff --git a/resources/views/frontend/courseDetails.blade.php b/resources/views/frontend/courseDetails.blade.php index 05b2da6..1bdebd8 100644 --- a/resources/views/frontend/courseDetails.blade.php +++ b/resources/views/frontend/courseDetails.blade.php @@ -6,1671 +6,1685 @@ @endpush @section('content') - -
-
- -
-
-

- Gamification: Motivation Psychology & The Art of Engagement -

-
-
- -
-
-

Created by

-
Martin Bator
-
+ +
+
+ +
+
+

+ {{ $course->title_en }} +

+
+
+ Instructor Image +
+
-
-
-
- - - -

5.0 Star (2,54,879)

-
-
- - - - -

3 Hours

-
+
+
+
+
+ + + +

5.0 Star (2,54,879)

-
-
- - - - -

19,97,2547 Enrolled

-
-
- - - - -

35 Lesson

-
+
+ + + + +

{{$course->duration}} Hours

+
+
+
+
+ + + + +

19,97,2547 Enrolled

+
+
+ + + + +

{{$course->lesson}} Lesson

-
- +
+
+ - -
-
-
-
-
-
- img - - - - - + +
+
+
+
+
+ +
+ img + + + + + +
+ {{-- Nav --}} + +
+
+ +
+
+
Description
+

+ Duis placerat eleifend leo nec mattis. Phasellus scelerisque arcu quis + feugiat + efficitur. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer + laoreet est eget est sagittis, et + scelerisque quam convallis. Praesent at tortor facilisis, tempus ex quis, + tempor + arcu. Duis id velit mattis diam fermentum tincidunt. Sed et vehicula lectus. +

+

+ Sed ut tincidunt velit, eu bibendum turpis. Fusce in posuere felis, sed + lobortis + elit. Integer mollis sodales congue +

+
+
+
Requirments
+

+ Donec tristique ligula id tellus porta, dapibus imperdiet mi ullamcorper. + Vivamus suscipit, nisi eu tincidunt interdum. +

+

Mauris ut libero ut mauris + sagittis consectetur quis eget elit.

+

Praesent egestas sapien vel + ante + gravida pharetra.

+

Pellentesque sit amet odio + interdum, mollis eros id, tincidunt augue.

+

Donec eget nunc vel nisl + blandit + facilisis.

+

Quisque faucibus nisi eu diam + placerat, dapibus ullamcorper augue mollis.

+
+
+
Who This Course is For
+

+ Sed arcu odio, ornare ac porttitor at, placerat nec dui. Nulla nec euismod + tellus. Donec facilisis condimentum commodo. Pellentesque ultricies dolor ut + magna aliquet, vitae sodales massa + euismod. +

+

+ + + + + This Course for Complete Beginner Students who want learn UI/UX. +

+

+ + + + + Nunc a ex sodales sem accumsan tristique. +

+

+ + + + + Suspendisse eget eros eget leo pellentesque ullamcorper ac non augue. +

+
+
+
What You Will be Learn
+

+ Sed arcu odio, ornare ac porttitor at, placerat nec dui. Nulla nec euismod + tellus. Donec facilisis condimentum commodo. Pellentesque ultricies dolor ut + magna aliquet, vitae sodales massa + euismod. +

+

+ + + + This Course for Complete Beginner Students who want learn UI/UX. +

+

+ + + + + Nunc a ex sodales sem accumsan tristique. +

+

+ + + + Suspendisse eget eros eget leo pellentesque ullamcorper ac non augue. +

+

+ + + + Suspendisse eget eros eget leo pellentesque ullamcorper ac non augue. +

+
+
+
- -
-
- -
-
-
Description
-

- Duis placerat eleifend leo nec mattis. Phasellus scelerisque arcu quis - feugiat - efficitur. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer - laoreet est eget est sagittis, et - scelerisque quam convallis. Praesent at tortor facilisis, tempus ex quis, - tempor - arcu. Duis id velit mattis diam fermentum tincidunt. Sed et vehicula lectus. -

-

- Sed ut tincidunt velit, eu bibendum turpis. Fusce in posuere felis, sed - lobortis - elit. Integer mollis sodales congue -

-
-
-
Requirments
-

- Donec tristique ligula id tellus porta, dapibus imperdiet mi ullamcorper. - Vivamus suscipit, nisi eu tincidunt interdum. -

-

Mauris ut libero ut mauris - sagittis consectetur quis eget elit.

-

Praesent egestas sapien vel - ante - gravida pharetra.

-

Pellentesque sit amet odio - interdum, mollis eros id, tincidunt augue.

-

Donec eget nunc vel nisl - blandit - facilisis.

-

Quisque faucibus nisi eu diam - placerat, dapibus ullamcorper augue mollis.

-
-
-
Who This Course is For
-

- Sed arcu odio, ornare ac porttitor at, placerat nec dui. Nulla nec euismod - tellus. Donec facilisis condimentum commodo. Pellentesque ultricies dolor ut - magna aliquet, vitae sodales massa - euismod. -

-

- - - - - This Course for Complete Beginner Students who want learn UI/UX. -

-

- - - - - Nunc a ex sodales sem accumsan tristique. -

-

- - - - - Suspendisse eget eros eget leo pellentesque ullamcorper ac non augue. -

-
-
-
What You Will be Learn
-

- Sed arcu odio, ornare ac porttitor at, placerat nec dui. Nulla nec euismod - tellus. Donec facilisis condimentum commodo. Pellentesque ultricies dolor ut - magna aliquet, vitae sodales massa - euismod. -

-

- - - - This Course for Complete Beginner Students who want learn UI/UX. -

-

- - - - - Nunc a ex sodales sem accumsan tristique. -

-

- - - - Suspendisse eget eros eget leo pellentesque ullamcorper ac non augue. -

-

- - - - Suspendisse eget eros eget leo pellentesque ullamcorper ac non augue. -

-
-
- -
-
- -
-
-
-
- +
+
-
-
-
-
-

Related Course

-
-
-
-
-
-
- images -
-
-
- Chicago International - Conference on Education -
-
- - client-image -

Brandon Dias

-
-
- $12 - $95 -
+
+
+
+
+

Related Course

+
+
+
+
+
+
+ images +
+
+
+ Chicago International + Conference on Education +
+
+ + client-image +

Brandon Dias

+
+
+ $12 + $95
-
-
-
- star -
- 4.5 +
+
+
+
+ star
-
-
- eye -
- 24,517 + 4.5 +
+
+
+ eye
-
-
- location -
- 37 Lesson + 24,517 +
+
+
+ location
-
-
- clock -
- 3 Hours + 37 Lesson +
+
+
+ clock
+ 3 Hours
-
-
- images -
-
-
- Chicago International - Conference on Education -
-
- - client-image -

Brandon Dias

-
-
- $12 - $95 -
+
+
+
+ images +
+
+
+ Chicago International + Conference on Education +
+
+ + client-image +

Brandon Dias

+
+
+ $12 + $95
-
-
-
- star -
- 4.5 +
+
+
+
+ star
-
-
- eye -
- 24,517 + 4.5 +
+
+
+ eye
-
-
- location -
- 37 Lesson + 24,517 +
+
+
+ location
-
-
- clock -
- 3 Hours + 37 Lesson +
+
+
+ clock
+ 3 Hours
-
-
- images -
-
-
- Chicago International - Conference on Education -
-
- - client-image -

Brandon Dias

-
-
- $12 - $95 -
+
+
+
+ images +
+
+
+ Chicago International + Conference on Education +
+
+ + client-image +

Brandon Dias

+
+
+ $12 + $95
-
-
-
- star -
- 4.5 +
+
+
+
+ star
-
-
- eye -
- 24,517 + 4.5 +
+
+
+ eye
-
-
- location -
- 37 Lesson + 24,517 +
+
+
+ location
-
-
- clock -
- 3 Hours + 37 Lesson +
+
+
+ clock
+ 3 Hours
-
-
- images -
-
-
- Chicago International - Conference on Education -
-
- - client-image -

Brandon Dias

-
-
- $12 - $95 -
+
+
+
+ images +
+
+
+ Chicago International + Conference on Education +
+
+ + client-image +

Brandon Dias

+
+
+ $12 + $95
-
-
-
- star -
- 4.5 +
+
+
+
+ star
-
-
- eye -
- 24,517 + 4.5 +
+
+
+ eye
-
-
- location -
- 37 Lesson + 24,517 +
+
+
+ location
-
-
- clock -
- 3 Hours + 37 Lesson +
+
+
+ clock
+ 3 Hours
@@ -2849,13 +2766,13 @@ class="contentCard-user d-flex align-items-center">
-
- shape - shape -
-
+
+
+ shape + shape +
+
@endsection @push('scripts') diff --git a/resources/views/frontend/layouts/app.blade.php b/resources/views/frontend/layouts/app.blade.php index e27e24e..8540d92 100644 --- a/resources/views/frontend/layouts/app.blade.php +++ b/resources/views/frontend/layouts/app.blade.php @@ -79,7 +79,6 @@
diff --git a/resources/views/frontend/searchCourse.blade.php b/resources/views/frontend/searchCourse.blade.php index f834288..959c73b 100644 --- a/resources/views/frontend/searchCourse.blade.php +++ b/resources/views/frontend/searchCourse.blade.php @@ -6,803 +6,48 @@ @endpush @section('content') - -
-
- -
+ +
+
+
- +
+ - -
- - -
-
- -
- -
-
+
+
- - +
+
+ {{-- Courses --}} +
+ @forelse ($course as $c) +
+
+
+ images +
+
+
+ {{$c->title_en}} +
+
+ + Instructor Image +

{{$c->instructor?->name_en}}

+
+
+ {{$c->price==null?'Free':$c->price}} + {{$c->old_price}} +
+
+
+
+
+ star +
+ 4.5 +
+
+
+ eye +
+ 24,517 +
+
+
+ location +
+ {{$c->lesson}} Lesson +
+
+
+ clock +
+ {{$c->duration}} Hours +
+
+
+
+
+ @empty +
+
+

No Course Found

+
+
+ @endforelse +
+
+ + + + + + 01 + 02 + 03 + + + + + + +
+
+
+ + + +{{--
+
+
+ +
+
+ +
+ + +
--}} @endsection diff --git a/routes/web.php b/routes/web.php index 6a89570..191df1e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -93,13 +93,8 @@ return view('frontend.home'); })->name('home'); -Route::get('/searchCourse', function () { - return view('frontend.searchCourse'); -})->name('searchCourse'); - -Route::get('/courseDetails', function () { - return view('frontend.courseDetails'); -})->name('courseDetails'); +Route::get('searchCourse', [course::class, 'frontIndex'])->name('searchCourse'); +Route::get('courseDetails/{id}', [course::class, 'frontShow'])->name('courseDetails'); Route::get('/about', function () { return view('frontend.about'); @@ -110,10 +105,6 @@ return view('frontend.instructorProfile'); })->name('instructorProfile'); -Route::get('/courseDetails', function () { - return view('frontend.courseDetails'); -})->name('courseDetails'); - Route::get('/cart', function () { return view('frontend.cart');