Cette révision appartient à :
Ibrahim Khalil 2023-11-26 14:39:50 +06:00
Parent 205957a42b
révision d984b3d63c
28 fichiers modifiés avec 739 ajouts et 135 suppressions

Voir le fichier

@ -17,7 +17,7 @@ class CourseCategoryController extends Controller
public function index() public function index()
{ {
$data = CourseCategory::paginate(10); $data = CourseCategory::paginate(10);
return view('backend.courses.courseCategory.index', compact('data')); return view('backend.course.courseCategory.index', compact('data'));
} }
/** /**
@ -25,7 +25,7 @@ public function index()
*/ */
public function create() public function create()
{ {
return view('backend.courses.courseCategory.create'); return view('backend.course.courseCategory.create');
} }
/** /**
@ -67,7 +67,7 @@ public function show(CourseCategory $courseCategory)
public function edit($id) public function edit($id)
{ {
$data = CourseCategory::findOrFail($id); $data = CourseCategory::findOrFail($id);
return view('backend.courses.courseCategory.edit', compact('data')); return view('backend.course.courseCategory.edit', compact('data'));
} }
/** /**

Voir le fichier

@ -5,6 +5,10 @@
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Course; use App\Models\Course;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\CourseCategory;
use App\Models\Instructor;
use Exception;
use File;
class CourseController extends Controller class CourseController extends Controller
{ {
@ -13,7 +17,8 @@ class CourseController extends Controller
*/ */
public function index() public function index()
{ {
// $course = Course::paginate(10);
return view('backend.course.index', compact('course'));
} }
/** /**
@ -21,7 +26,9 @@ public function index()
*/ */
public function create() public function create()
{ {
// $courseCategory = CourseCategory::get();
$instructor = Instructor::get();
return view('backend.course.create', compact('courseCategory', 'instructor'));
} }
/** /**
@ -29,7 +36,35 @@ public function create()
*/ */
public function store(Request $request) public function store(Request $request)
{ {
// try {
$course = new Course;
$course->title_en = $request->courseTitle_en;
$course->title_bn = $request->courseTitle_bn;
$course->description_en = $request->courseDescription_en;
$course->description_bn = $request->courseDescription_bn;
$course->category_id = $request->categoryId;
$course->instructor_id = $request->instructorId;
$course->type = $request->courseType;
$course->price = $request->coursePrice;
$course->subscription_price = $request->subscriptionPrice;
$course->difficulty = $request->courseDifficulty;
$course->prerequisites = $request->prerequisites;
$course->status = $request->status;
$course->language = 'en';
if ($request->hasFile('image')) {
$imageName = rand(111, 999) . time() . '.' . $request->image->extension();
$request->image->move(public_path('uploads/courses'), $imageName);
$course->image = $imageName;
}
if ($course->save())
return redirect()->route('course.index')->with('success', 'Data Saved');
else
return redirect()->back()->withInput()->with('error', 'Please try again');
} catch (Exception $e) {
dd($e);
return redirect()->back()->withInput()->with('error', 'Please try again');
}
} }
/** /**
@ -43,24 +78,63 @@ public function show(Course $course)
/** /**
* Show the form for editing the specified resource. * Show the form for editing the specified resource.
*/ */
public function edit(Course $course) public function edit($id)
{ {
// $courseCategory = CourseCategory::get();
$instructor = Instructor::get();
$course = Course::findOrFail(encryptor('decrypt', $id));
return view('backend.course.edit', compact('courseCategory', 'instructor', 'course'));
} }
/** /**
* Update the specified resource in storage. * Update the specified resource in storage.
*/ */
public function update(Request $request, Course $course) public function update(Request $request, $id)
{ {
// try {
$course = Course::findOrFail(encryptor('decrypt', $id));
$course->title_en = $request->courseTitle_en;
$course->title_bn = $request->courseTitle_bn;
$course->description_en = $request->courseDescription_en;
$course->description_bn = $request->courseDescription_bn;
$course->category_id = $request->categoryId;
$course->instructor_id = $request->instructorId;
$course->type = $request->courseType;
$course->price = $request->coursePrice;
$course->subscription_price = $request->subscriptionPrice;
$course->difficulty = $request->courseDifficulty;
$course->prerequisites = $request->prerequisites;
$course->status = $request->status;
$course->language = 'en';
if ($request->hasFile('image')) {
$imageName = rand(111, 999) . time() . '.' . $request->image->extension();
$request->image->move(public_path('uploads/courses'), $imageName);
$course->image = $imageName;
}
if ($course->save())
return redirect()->route('course.index')->with('success', 'Data Saved');
else
return redirect()->back()->withInput()->with('error', 'Please try again');
} catch (Exception $e) {
dd($e);
return redirect()->back()->withInput()->with('error', 'Please try again');
}
} }
/** /**
* Remove the specified resource from storage. * Remove the specified resource from storage.
*/ */
public function destroy(Course $course) public function destroy($id)
{ {
// $data = Course::findOrFail(encryptor('decrypt', $id));
$image_path = public_path('uploads/courses') . $data->image;
if ($data->delete()) {
if (File::exists($image_path))
File::delete($image_path);
return redirect()->back();
}
} }
} }

Voir le fichier

@ -75,17 +75,45 @@ public function show(Instructor $instructor)
/** /**
* Show the form for editing the specified resource. * Show the form for editing the specified resource.
*/ */
public function edit(Instructor $instructor) public function edit($id)
{ {
// $role = Role::get();
$instructor = Instructor::findOrFail(encryptor('decrypt', $id));
return view('backend.instructor.edit', compact('role', 'instructor'));
} }
/** /**
* Update the specified resource in storage. * Update the specified resource in storage.
*/ */
public function update(Request $request, Instructor $instructor) public function update(Request $request, $id)
{ {
// try {
$instructor = Instructor::findOrFail(encryptor('decrypt', $id));
$instructor->name_en = $request->fullName_en;
$instructor->name_bn = $request->fullName_bn;
$instructor->contact_en = $request->contactNumber_en;
$instructor->contact_bn = $request->contactNumber_bn;
$instructor->email = $request->emailAddress;
$instructor->role_id = $request->roleId;
$instructor->bio = $request->bio;
$instructor->status = $request->status;
$instructor->password = Hash::make($request->fullName_bn);
$instructor->language = 'en';
$instructor->access_block = $request->access_block;
if ($request->hasFile('image')) {
$imageName = rand(111, 999) . time() . '.' . $request->image->extension();
$request->image->move(public_path('uploads/instructors'), $imageName);
$instructor->image = $imageName;
}
if ($instructor->save())
return redirect()->route('instructor.index')->with('success', 'Data Saved');
else
return redirect()->back()->withInput()->with('error', 'Please try again');
} catch (Exception $e) {
dd($e);
return redirect()->back()->withInput()->with('error', 'Please try again');
}
} }
/** /**
@ -93,11 +121,11 @@ public function update(Request $request, Instructor $instructor)
*/ */
public function destroy($id) public function destroy($id)
{ {
$data=Instructor::findOrFail(encryptor('decrypt',$id)); $data = Instructor::findOrFail(encryptor('decrypt', $id));
$image_path=public_path('uploads/instructors').$data->image; $image_path = public_path('uploads/instructors') . $data->image;
if($data->delete()){ if ($data->delete()) {
if(File::exists($image_path)) if (File::exists($image_path))
File::delete($image_path); File::delete($image_path);
return redirect()->back(); return redirect()->back();

Voir le fichier

@ -8,4 +8,13 @@
class Course extends Model class Course extends Model
{ {
use HasFactory; use HasFactory;
public function courseCategory()
{
return $this->belongsTo(CourseCategory::class, 'category_id', 'id');
}
public function instructor()
{
return $this->belongsTo(Instructor::class);
}
} }

Voir le fichier

@ -8,4 +8,8 @@
class CourseCategory extends Model class CourseCategory extends Model
{ {
use HasFactory; use HasFactory;
public function course(){
return $this->hasMany(Course::class);
}
} }

Voir le fichier

@ -13,4 +13,8 @@ public function role()
{ {
return $this->belongsTo(Role::class); return $this->belongsTo(Role::class);
} }
public function courses(){
return $this->hasMany(Course::class);
}
} }

Voir le fichier

@ -19,9 +19,8 @@ public function up(): void
$table->text('description_bn')->nullable(); $table->text('description_bn')->nullable();
$table->unsignedBigInteger('category_id')->index(); $table->unsignedBigInteger('category_id')->index();
$table->unsignedBigInteger('instructor_id')->index(); $table->unsignedBigInteger('instructor_id')->index();
$table->decimal('price', 10, 2)->default(0.00); $table->enum('type', ['free', 'paid', 'subscription'])->default('paid');
$table->boolean('is_free')->default(false); $table->decimal('price', 10, 2)->default(0.00)->nullable();
$table->boolean('is_subscription_based')->default(false);
$table->decimal('subscription_price', 10, 2)->nullable(); $table->decimal('subscription_price', 10, 2)->nullable();
$table->text('prerequisites')->nullable(); $table->text('prerequisites')->nullable();
$table->enum('difficulty', ['beginner', 'intermediate', 'advanced'])->nullable(); $table->enum('difficulty', ['beginner', 'intermediate', 'advanced'])->nullable();

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 22 KiB

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 130 KiB

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 187 KiB

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 130 KiB

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 130 KiB

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 22 KiB

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 130 KiB

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 23 KiB

Fichier binaire non affiché.

Après

Largeur:  |  Hauteur:  |  Taille: 18 KiB

Voir le fichier

@ -0,0 +1,206 @@
@extends('backend.layouts.app')
@section('title', 'Add Course')
@push('styles')
<!-- Pick date -->
<link rel="stylesheet" href="{{asset('public/vendor/pickadate/themes/default.css')}}">
<link rel="stylesheet" href="{{asset('public/vendor/pickadate/themes/default.date.css')}}">
@endpush
@section('content')
<div class="content-body">
<!-- row -->
<div class="container-fluid">
<div class="row page-titles mx-0">
<div class="col-sm-6 p-md-0">
<div class="welcome-text">
<h4>Add Course</h4>
</div>
</div>
<div class="col-sm-6 p-md-0 justify-content-sm-end mt-2 mt-sm-0 d-flex">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{{route('dashboard')}}">Home</a></li>
<li class="breadcrumb-item active"><a href="{{route('course.index')}}">Courses</a></li>
<li class="breadcrumb-item active"><a href="{{route('course.create')}}">Add Course</a></li>
</ol>
</div>
</div>
<div class="row">
<div class="col-xl-12 col-xxl-12 col-sm-12">
<div class="card">
<div class="card-header">
<h5 class="card-title">Basic Info</h5>
</div>
<div class="card-body">
<form action="{{route('course.store')}}" method="post" enctype="multipart/form-data">
@csrf
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Title</label>
<input type="text" class="form-control" name="courseTitle_en"
value="{{old('courseTitle_en')}}">
</div>
@if($errors->has('courseTitle_en'))
<span class="text-danger"> {{ $errors->first('courseTitle_en') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Title (বাংলায়)</label>
<input type="text" class="form-control" name="courseTitle_bn"
value="{{old('courseTitle_bn')}}">
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Description</label>
<input type="text" class="form-control" name="courseDescription_en"
value="{{old('courseDescription_en')}}">
</div>
@if($errors->has('courseDescription_en'))
<span class="text-danger"> {{ $errors->first('courseDescription_en') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Description (বাংলায়)</label>
<input type="tel" class="form-control" name="courseDescription_bn"
value="{{old('courseDescription_bn')}}">
</div>
@if($errors->has('courseDescription_bn'))
<span class="text-danger"> {{ $errors->first('courseDescription_bn') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Category</label>
<select class="form-control" name="categoryId">
@forelse ($courseCategory as $c)
<option value="{{$c->id}}" {{old('categoryId')==$c->id?'selected':''}}>
{{$c->category_name}}</option>
@empty
<option value="">No Category Found</option>
@endforelse
</select>
</div>
@if($errors->has('categoryId'))
<span class="text-danger"> {{ $errors->first('categoryId') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Instructor</label>
<select class="form-control" name="instructorId">
@forelse ($instructor as $i)
<option value="{{$i->id}}" {{old('instructorId')==$i->id?'selected':''}}>
{{$i->name_en}}</option>
@empty
<option value="">No Instructor Found</option>
@endforelse
</select>
</div>
@if($errors->has('instructorId'))
<span class="text-danger"> {{ $errors->first('instructorId') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Type</label>
<select class="form-control" name="courseType">
<option value="free" @if(old('courseType')=='free' ) selected @endif>Free
</option>
<option value="paid" @if(old('courseType')=='paid' ) selected @endif>Paid
</option>
<option value="subscription" @if(old('courseType')=='subscription' )
selected @endif>Subscription-based</option>
</select>
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Price</label>
<input type="number" class="form-control" name="coursePrice"
value="{{old('coursePrice')}}">
</div>
@if($errors->has('coursePrice'))
<span class="text-danger"> {{ $errors->first('coursePrice') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Subscription Price</label>
<input type="number" class="form-control" name="subscription_price"
value="{{old('subscription_price')}}">
</div>
@if($errors->has('subscription_price'))
<span class="text-danger"> {{ $errors->first('subscription_price') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Difficulty</label>
<select class="form-control" name="courseDifficulty">
<option value="beginner" @if(old('courseDifficulty')=='beginner' ) selected
@endif>Beginner</option>
<option value="intermediate" @if(old('courseDifficulty')=='intermediate' )
selected @endif>Intermediate</option>
<option value="advanced" @if(old('courseDifficulty')=='advanced' ) selected
@endif>Advanced
</option>
</select>
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Prerequisites</label>
<textarea class="form-control" name="prerequisites"
value="{{old('prerequisites')}}"></textarea>
</div>
@if($errors->has('prerequisites'))
<span class="text-danger"> {{ $errors->first('prerequisites') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Status</label>
<select class="form-control" name="status">
<option value="1" @if(old('status')==1) selected @endif>Active</option>
<option value="0" @if(old('status')==0) selected @endif>Inactive</option>
</select>
</div>
</div>
<div class="col-lg-12 col-md-12 col-sm-12">
<label class="form-label">Image</label>
<div class="form-group fallback w-100">
<input type="file" class="dropify" data-default-file="" name="image">
</div>
</div>
<div class="col-lg-12 col-md-12 col-sm-12">
<button type="submit" class="btn btn-primary">Submit</button>
<button type="submit" class="btn btn-light">Cencel</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@push('scripts')
<!-- pickdate -->
<script src="{{asset('public/vendor/pickadate/picker.js')}}"></script>
<script src="{{asset('public/vendor/pickadate/picker.time.js')}}"></script>
<script src="{{asset('public/vendor/pickadate/picker.date.js')}}"></script>
<!-- Pickdate -->
<script src="{{asset('public/js/plugins-init/pickadate-init.js')}}"></script>
@endpush

Voir le fichier

@ -0,0 +1,234 @@
@extends('backend.layouts.app')
@section('title', 'Edit Instructor')
@push('styles')
<!-- Pick date -->
<link rel="stylesheet" href="{{asset('public/vendor/pickadate/themes/default.css')}}">
<link rel="stylesheet" href="{{asset('public/vendor/pickadate/themes/default.date.css')}}">
@endpush
@section('content')
<div class="content-body">
<!-- row -->
<div class="container-fluid">
<div class="row page-titles mx-0">
<div class="col-sm-6 p-md-0">
<div class="welcome-text">
<h4>Edit Course</h4>
</div>
</div>
<div class="col-sm-6 p-md-0 justify-content-sm-end mt-2 mt-sm-0 d-flex">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{{route('dashboard')}}">Home</a></li>
<li class="breadcrumb-item active"><a href="{{route('course.index')}}">Courses</a></li>
<li class="breadcrumb-item active"><a href="javascript:void(0);">Edit Course</a></li>
</ol>
</div>
</div>
<div class="row">
<div class="col-xl-12 col-xxl-12 col-sm-12">
<div class="card">
<div class="card-header">
<h5 class="card-title">Basic Info</h5>
</div>
<div class="card-body">
<form action="{{route('course.update',encryptor('encrypt', $course->id))}}" method="post"
enctype="multipart/form-data">
@csrf
@method('PATCH')
<input type="hidden" name="uptoken" value="{{encryptor('encrypt',$course->id)}}">
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Title</label>
<input type="text" class="form-control" name="courseTitle_en"
value="{{old('courseTitle_en',$course->title_en)}}">
</div>
@if($errors->has('courseTitle_en'))
<span class="text-danger"> {{ $errors->first('courseTitle_en') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Title (বাংলায়)</label>
<input type="text" class="form-control" name="courseTitle_bn"
value="{{old('courseTitle_bn',$course->title_bn)}}">
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Description</label>
<input type="text" class="form-control" name="courseDescription_en"
value="{{old('courseDescription_en',$course->description_en)}}">
</div>
@if($errors->has('courseDescription_en'))
<span class="text-danger"> {{ $errors->first('courseDescription_en') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Description (বাংলায়)</label>
<input type="text" class="form-control" name="courseDescription_bn"
value="{{old('courseDescription_bn',$course->description_bn)}}">
</div>
@if($errors->has('courseDescription_bn'))
<span class="text-danger"> {{ $errors->first('courseDescription_bn') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Category</label>
<select class="form-control" name="categoryId">
@forelse ($courseCategory as $c)
<option value="{{$c->id}}" {{old('categoryId', $course->category_id) ==
$c->id?'selected':''}}>
{{$c->category_name}}</option>
@empty
<option value="">No Category Found</option>
@endforelse
</select>
</div>
@if($errors->has('categoryId'))
<span class="text-danger"> {{ $errors->first('categoryId') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Instructor</label>
<select class="form-control" name="instructorId">
@forelse ($instructor as $i)
<option value="{{$i->id}}" {{old('instructorId', $course->instructor_id) ==
$i->id?'selected':''}}>
{{$i->name_en}}</option>
@empty
<option value="">No Instructor Found</option>
@endforelse
</select>
</div>
@if($errors->has('instructorId'))
<span class="text-danger"> {{ $errors->first('instructorId') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Type</label>
<select class="form-control" name="courseType">
<option value="free" @if(old('courseType', $course->type)=='free' ) selected
@endif>Free
</option>
<option value="paid" @if(old('courseType', $course->type)=='paid' ) selected
@endif>Paid
</option>
<option value="subscription" @if(old('courseType', $course->type)
=='subscription' )
selected @endif>Subscription-based</option>
</select>
</div>
@if($errors->has('courseType'))
<span class="text-danger"> {{ $errors->first('courseType') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Price</label>
<input type="number" class="form-control" name="coursePrice"
value="{{old('coursePrice', $course->price)}}">
</div>
@if($errors->has('coursePrice'))
<span class="text-danger"> {{ $errors->first('coursePrice') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Subscription Price</label>
<input type="number" class="form-control" name="subscription_price"
value="{{old('subscription_price')}}">
</div>
@if($errors->has('subscription_price'))
<span class="text-danger"> {{ $errors->first('subscription_price',
$course->subscription_price) }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Difficulty</label>
<select class="form-control" name="courseType">
<option value="beginner" @if(old('courseDifficulty', $course->
difficulty)=='beginner' ) selected @endif>Beginner
</option>
<option value="intermediate" @if(old('courseDifficulty', $course->
difficulty)=='intermediate' ) selected @endif>Intermediate
</option>
<option value="advanced" @if(old('courseDifficulty', $course->
difficulty)=='advanced' )
selected @endif>Advanced</option>
</select>
</div>
@if($errors->has('courseDifficulty'))
<span class="text-danger"> {{ $errors->first('courseDifficulty') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Prerequisites</label>
<textarea class="form-control"
name="prerequisites">{{old('prerequisites',$course->prerequisites)}}</textarea>
</div>
@if($errors->has('prerequisites'))
<span class="text-danger"> {{ $errors->first('prerequisites') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Status</label>
<select class="form-control" name="status">
<option value="1" @if(old('status',$course->status)==1) selected
@endif>Active</option>
<option value="0" @if(old('status',$course->status)==0) selected
@endif>Inactive</option>
</select>
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Password</label>
<input type="password" class="form-control" name="password">
</div>
@if($errors->has('password'))
<span class="text-danger"> {{ $errors->first('password') }}</span>
@endif
</div>
<div class="col-lg-12 col-md-12 col-sm-12">
<label class="form-label">Image</label>
<div class="form-group fallback w-100">
<input type="file" class="dropify" data-default-file="" name="image">
</div>
</div>
<div class="col-lg-12 col-md-12 col-sm-12">
<button type="submit" class="btn btn-primary">Submit</button>
<button type="submit" class="btn btn-light">Cencel</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@push('scripts')
<!-- pickdate -->
<script src="{{asset('public/vendor/pickadate/picker.js')}}"></script>
<script src="{{asset('public/vendor/pickadate/picker.time.js')}}"></script>
<script src="{{asset('public/vendor/pickadate/picker.date.js')}}"></script>
<!-- Pickdate -->
<script src="{{asset('public/js/plugins-init/pickadate-init.js')}}"></script>
@endpush

Voir le fichier

@ -0,0 +1,119 @@
@extends('backend.layouts.app')
@section('title', 'Course List')
@push('styles')
<!-- Datatable -->
<link href="{{asset('public/vendor/datatables/css/jquery.dataTables.min.css')}}" rel="stylesheet">
@endpush
@section('content')
<div class="content-body">
<!-- row -->
<div class="container-fluid">
<div class="row page-titles mx-0">
<div class="col-sm-6 p-md-0">
<div class="welcome-text">
<h4>Course List</h4>
</div>
</div>
<div class="col-sm-6 p-md-0 justify-content-sm-end mt-2 mt-sm-0 d-flex">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{{route('dashboard')}}">Home</a></li>
<li class="breadcrumb-item active"><a href="{{route('course.index')}}">Instructors</a></li>
<li class="breadcrumb-item active"><a href="{{route('course.index')}}">All Course</a></li>
</ol>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="row tab-content">
<div class="card-header">
<a href="{{route('course.create')}}" class="btn btn-primary">+ Add new</a>
</div>
<div class="col-lg-12">
<div class="row">
@forelse ($course as $d)
<div class="col-lg-4 col-md-4 col-sm-6">
<div class="card card-profile">
<div class="card-header justify-content-end pb-0">
<div class="dropdown">
<button class="btn btn-link" type="button" data-toggle="dropdown">
<span class="dropdown-dots fs--1"></span>
</button>
<div class="dropdown-menu dropdown-menu-right border py-0">
<div class="py-2">
<a class="dropdown-item" href="{{route('course.edit', encryptor('encrypt',$d->id))}}">Edit</a>
<a class="dropdown-item text-danger" href="javascript:void(0);" onclick="$('#form{{$d->id}}').submit()">Delete</a>
<form id="form{{$d->id}}" action="{{route('course.destroy', encryptor('encrypt',$d->id))}}" method="post">
@csrf
@method('DELETE')
</form>
</div>
</div>
</div>
</div>
<div class="card-body pt-2">
<div class="text-center">
<div class="">
<img src="{{asset('public/uploads/courses/'.$d->image)}}" class="w-100" height="200" alt="">
</div>
<h3 class="mt-4 mb-1">{{$d->title_en}}</h3>
<ul class="list-group mb-3 list-group-flush">
<li class="list-group-item px-0 d-flex justify-content-between">
<span>Difficulty</span>
<strong>{{ $d->difficulty == 'beginner' ? __('Beginner') : ($d->gender == 'intermediate' ? __('Intermediate') : __('Advanced')) }}</strong>
</li>
<li class="list-group-item px-0 d-flex justify-content-between">
<span class="mb-0">Instructor :</span>
<strong>{{$d->instructor?->name_en}}</strong>
</li>
<li class="list-group-item px-0 d-flex justify-content-between">
<span class="mb-0">Category :</span>
<strong>{{$d->courseCategory?->category_name}}</strong>
</li>
<li class="list-group-item px-0 d-flex justify-content-between">
<span class="mb-0">Type :</span>
<strong>{{ $d->type == 'free' ? __('Free') : ($d->gender == 'paid' ? __('Paid') :
__('Subscription')) }}</strong>
</li>
<li class="list-group-item px-0 d-flex justify-content-between">
<span class="mb-0">Price :</span>
<strong>${{$d->price}}</strong>
</li>
</ul>
<a class="btn btn-outline-primary btn-rounded mt-3 px-4" href="about-student.html">Read More</a>
</div>
</div>
</div>
</div>
@empty
<div class="col-lg-6 col-md-6 col-sm-6 col-12">
<div class="card card-profile">
<div class="card-body pt-2">
<div class="text-center">
<p class="mt-3 px-4">Course Not Found</p>
</div>
</div>
</div>
</div>
@endforelse
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@push('scripts')
<!-- Datatable -->
<script src="{{asset('public/vendor/datatables/js/jquery.dataTables.min.js')}}"></script>
<script src="{{asset('public/js/plugins-init/datatables.init.js')}}"></script>
@endpush

Voir le fichier

@ -1,5 +1,5 @@
@extends('backend.layouts.app') @extends('backend.layouts.app')
@section('title', 'Edit Student') @section('title', 'Edit Instructor')
@push('styles') @push('styles')
<!-- Pick date --> <!-- Pick date -->
@ -16,14 +16,14 @@
<div class="row page-titles mx-0"> <div class="row page-titles mx-0">
<div class="col-sm-6 p-md-0"> <div class="col-sm-6 p-md-0">
<div class="welcome-text"> <div class="welcome-text">
<h4>Edit Student</h4> <h4>Edit Instructor</h4>
</div> </div>
</div> </div>
<div class="col-sm-6 p-md-0 justify-content-sm-end mt-2 mt-sm-0 d-flex"> <div class="col-sm-6 p-md-0 justify-content-sm-end mt-2 mt-sm-0 d-flex">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{{route('dashboard')}}">Home</a></li> <li class="breadcrumb-item"><a href="{{route('dashboard')}}">Home</a></li>
<li class="breadcrumb-item active"><a href="{{route('student.index')}}">Students</a></li> <li class="breadcrumb-item active"><a href="{{route('instructor.index')}}">Instructors</a></li>
<li class="breadcrumb-item active"><a href="javascript:void(0);">Edit Student</a></li> <li class="breadcrumb-item active"><a href="javascript:void(0);">Edit Instructor</a></li>
</ol> </ol>
</div> </div>
</div> </div>
@ -35,16 +35,17 @@
<h5 class="card-title">Basic Info</h5> <h5 class="card-title">Basic Info</h5>
</div> </div>
<div class="card-body"> <div class="card-body">
<form action="{{route('student.update',encryptor('encrypt', $student->id))}}" method="post" enctype="multipart/form-data"> <form action="{{route('instructor.update',encryptor('encrypt', $instructor->id))}}"
method="post" enctype="multipart/form-data">
@csrf @csrf
@method('PATCH') @method('PATCH')
<input type="hidden" name="uptoken" value="{{encryptor('encrypt',$student->id)}}"> <input type="hidden" name="uptoken" value="{{encryptor('encrypt',$instructor->id)}}">
<div class="row"> <div class="row">
<div class="col-lg-6 col-md-6 col-sm-12"> <div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group"> <div class="form-group">
<label class="form-label">Name</label> <label class="form-label">Name</label>
<input type="text" class="form-control" name="fullName_en" <input type="text" class="form-control" name="fullName_en"
value="{{old('fullName_en',$student->name_en)}}"> value="{{old('fullName_en',$instructor->name_en)}}">
</div> </div>
@if($errors->has('fullName_en')) @if($errors->has('fullName_en'))
<span class="text-danger"> {{ $errors->first('fullName_en') }}</span> <span class="text-danger"> {{ $errors->first('fullName_en') }}</span>
@ -54,14 +55,14 @@
<div class="form-group"> <div class="form-group">
<label class="form-label">নাম (বাংলায়)</label> <label class="form-label">নাম (বাংলায়)</label>
<input type="text" class="form-control" name="fullName_bn" <input type="text" class="form-control" name="fullName_bn"
value="{{old('fullName_bn',$student->name_bn)}}"> value="{{old('fullName_bn',$instructor->name_bn)}}">
</div> </div>
</div> </div>
<div class="col-lg-6 col-md-6 col-sm-12"> <div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group"> <div class="form-group">
<label class="form-label">Phone Number</label> <label class="form-label">Phone Number</label>
<input type="tel" class="form-control" name="contactNumber_en" <input type="tel" class="form-control" name="contactNumber_en"
value="{{old('contactNumber_en',$student->contact_en)}}"> value="{{old('contactNumber_en',$instructor->contact_en)}}">
</div> </div>
@if($errors->has('contactNumber_en')) @if($errors->has('contactNumber_en'))
<span class="text-danger"> {{ $errors->first('contactNumber_en') }}</span> <span class="text-danger"> {{ $errors->first('contactNumber_en') }}</span>
@ -71,7 +72,7 @@
<div class="form-group"> <div class="form-group">
<label class="form-label">ফোন নাম্বার (বাংলায়)</label> <label class="form-label">ফোন নাম্বার (বাংলায়)</label>
<input type="tel" class="form-control" name="contactNumber_bn" <input type="tel" class="form-control" name="contactNumber_bn"
value="{{old('contactNumber_bn',$student->contact_bn)}}"> value="{{old('contactNumber_bn',$instructor->contact_bn)}}">
</div> </div>
@if($errors->has('contactNumber_bn')) @if($errors->has('contactNumber_bn'))
<span class="text-danger"> {{ $errors->first('contactNumber_bn') }}</span> <span class="text-danger"> {{ $errors->first('contactNumber_bn') }}</span>
@ -81,7 +82,7 @@
<div class="form-group"> <div class="form-group">
<label class="form-label">Email</label> <label class="form-label">Email</label>
<input type="email" class="form-control" name="emailAddress" <input type="email" class="form-control" name="emailAddress"
value="{{old('emailAddress',$student->email)}}"> value="{{old('emailAddress',$instructor->email)}}">
</div> </div>
@if($errors->has('emailAddress')) @if($errors->has('emailAddress'))
<span class="text-danger"> {{ $errors->first('emailAddress') }}</span> <span class="text-danger"> {{ $errors->first('emailAddress') }}</span>
@ -92,7 +93,8 @@
<label class="form-label">Role</label> <label class="form-label">Role</label>
<select class="form-control" name="roleId"> <select class="form-control" name="roleId">
@forelse ($role as $r) @forelse ($role as $r)
<option value="{{$r->id}}" {{old('roleId', $student->role_id)==$r->id?'selected':''}}> <option value="{{$r->id}}" {{old('roleId', $instructor->
role_id)==$r->id?'selected':''}}>
{{$r->name}}</option> {{$r->name}}</option>
@empty @empty
<option value="">No Role Found</option> <option value="">No Role Found</option>
@ -105,33 +107,21 @@
</div> </div>
<div class="col-lg-6 col-md-6 col-sm-12"> <div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group"> <div class="form-group">
<label class="form-label">Date of Birth</label> <label class="form-label">Bio</label>
<input type="date" name="birthDate" value="{{old('birthDate',$student->date_of_birth)}}" <textarea class="form-control" name="bio">{{old('bio',$instructor->bio)}}</textarea>
class="form-control" id="">
</div> </div>
@if($errors->has('birthDate')) @if($errors->has('bio'))
<span class="text-danger"> {{ $errors->first('birthDate') }}</span> <span class="text-danger"> {{ $errors->first('bio') }}</span>
@endif @endif
</div> </div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Gender</label>
<select class="form-control" name="gender">
<option value="male" @if(old('gender',$student->gender)=='male' ) selected @endif>Male
</option>
<option value="female" @if(old('gender',$student->gender)=='female' ) selected @endif>Fenale
</option>
<option value="other" @if(old('gender',$student->gender)=='other' ) selected @endif>Other
</option>
</select>
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12"> <div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group"> <div class="form-group">
<label class="form-label">Status</label> <label class="form-label">Status</label>
<select class="form-control" name="status"> <select class="form-control" name="status">
<option value="1" @if(old('status',$student->status)==1) selected @endif>Active</option> <option value="1" @if(old('status',$instructor->status)==1) selected
<option value="0" @if(old('status',$student->status)==0) selected @endif>Inactive</option> @endif>Active</option>
<option value="0" @if(old('status',$instructor->status)==0) selected
@endif>Inactive</option>
</select> </select>
</div> </div>
</div> </div>

Voir le fichier

@ -70,7 +70,7 @@ class="nav-link btn-primary mr-1 show active">List View</a></li>
<td>{{$d->email}}</td> <td>{{$d->email}}</td>
<td>{{$d->contact_en}}</td> <td>{{$d->contact_en}}</td>
<td>{{$d->role?->name}}</td> <td>{{$d->role?->name}}</td>
<td>{{$d->contact_en}}</td> <td>{{$d->bio}}</td>
<td> <td>
<span class="badge {{$d->status==1?" <span class="badge {{$d->status==1?"
badge-success":"badge-danger"}}">@if($d->status==1){{__('Active')}} badge-success":"badge-danger"}}">@if($d->status==1){{__('Active')}}

Voir le fichier

@ -254,10 +254,10 @@ class="feather feather-log-out">
<span class="nav-text">Courses</span> <span class="nav-text">Courses</span>
</a> </a>
<ul aria-expanded="false"> <ul aria-expanded="false">
<li><a href="all-courses.html">All Courses</a></li> <li><a href="{{route('course.index')}}">All Courses</a></li>
<li><a href="add-courses.html">Add Courses</a></li> <li><a href="{{route('course.create')}}">Add Courses</a></li>
<li><a href="edit-courses.html">Edit Courses</a></li> <li><a href="{{route('course.index')}}">Edit Courses</a></li>
<li><a href="about-courses.html">About Courses</a></li> <li><a href="{{route('course.index')}}">About Courses</a></li>
</ul> </ul>
</li> </li>
<li><a class="has-arrow" href="javascript:void()" aria-expanded="false"> <li><a class="has-arrow" href="javascript:void()" aria-expanded="false">

Voir le fichier

@ -45,7 +45,7 @@
<ul class="nav nav-pills mb-3"> <ul class="nav nav-pills mb-3">
<li class="nav-item"><a href="#list-view" data-toggle="tab" <li class="nav-item"><a href="#list-view" data-toggle="tab"
class="nav-link btn-primary mr-1 show active">List View</a></li> class="nav-link btn-primary mr-1 show active">List View</a></li>
<li class="nav-item"><a href="#grid-view" data-toggle="tab" class="nav-link btn-primary">Grid <li class="nav-item"><a href="javascript:void()" data-toggle="tab" class="nav-link btn-primary">Grid
View</a></li> View</a></li>
</ul> </ul>
</div> </div>
@ -108,69 +108,6 @@ class="nav-link btn-primary mr-1 show active">List View</a></li>
</div> </div>
</div> </div>
{{-- <div id="grid-view" class="tab-pane fade col-lg-12">
<div class="row">
@forelse ($data as $d)
<div class="col-lg-4 col-md-6 col-sm-6 col-12">
<div class="card card-profile">
<div class="card-header justify-content-end pb-0">
<div class="dropdown">
<button class="btn btn-link" type="button" data-toggle="dropdown">
<span class="dropdown-dots fs--1"></span>
</button>
<div class="dropdown-menu dropdown-menu-right border py-0">
<div class="py-2">
<a class="dropdown-item"
href="{{route('user.edit', encryptor('encrypt',$d->id))}}">Edit</a>
<a class="dropdown-item text-danger"
href="javascript:void(0);">Delete</a>
</div>
</div>
</div>
</div>
<div class="card-body pt-2">
<div class="text-center">
<div class="profile-photo">
<img src="{{asset('public/uploads/users/'.$d->image)}}" width="100"
height="100" class="rounded-circle" alt="">
</div>
<h3 class="mt-4 mb-1">{{$d->name_en}}</h3>
<p class="text-muted">{{$d->role?->type}}</p>
<ul class="list-group mb-3 list-group-flush">
<li class="list-group-item px-0 d-flex justify-content-between">
<span>#Sl.</span><strong>{{$d->id}}</strong>
</li>
<li class="list-group-item px-0 d-flex justify-content-between">
<span class="mb-0">Phone No.
:</span><strong>{{$d->contact_en}}</strong>
</li>
<li class="list-group-item px-0 d-flex justify-content-between">
<span class="mb-0">Email:</span><strong>{{$d->email}}</strong>
</li>
<li class="list-group-item px-0 d-flex justify-content-between">
<span class="mb-0">Created At.
:</span><strong>{{$d->created_at}}</strong>
</li>
</ul>
<a class="btn btn-outline-primary btn-rounded mt-3 px-4"
href="about-student.html">Read More</a>
</div>
</div>
</div>
</div>
@empty
<div class="col-lg-4 col-md-6 col-sm-6 col-12">
<div class="card card-profile">
<div class="card-body pt-2">
<div class="text-center">
<p class="mt-3 px-4">User Not Found</p>
</div>
</div>
</div>
</div>
@endforelse
</div>
</div> --}}
</div> </div>
</div> </div>
</div> </div>

Voir le fichier

@ -32,8 +32,8 @@
<ul class="nav nav-pills mb-3"> <ul class="nav nav-pills mb-3">
<li class="nav-item"><a href="#list-view" data-toggle="tab" <li class="nav-item"><a href="#list-view" data-toggle="tab"
class="nav-link btn-primary mr-1 show active">List View</a></li> class="nav-link btn-primary mr-1 show active">List View</a></li>
<li class="nav-item"><a href="#grid-view" data-toggle="tab" class="nav-link btn-primary">Grid <li class="nav-item"><a href="javascript:void()" data-toggle="tab" class="nav-link btn-primary">
View</a></li> Grid View</a></li>
</ul> </ul>
</div> </div>
<div class="col-lg-12"> <div class="col-lg-12">

Voir le fichier

@ -9,6 +9,7 @@
use App\Http\Controllers\Backend\PermissionController as permission; use App\Http\Controllers\Backend\PermissionController as permission;
use App\Http\Controllers\Backend\Students\StudentController as student; use App\Http\Controllers\Backend\Students\StudentController as student;
use App\Http\Controllers\Backend\Instructors\InstructorController as instructor; use App\Http\Controllers\Backend\Instructors\InstructorController as instructor;
use App\Http\Controllers\Backend\Courses\CourseController as course;
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@ -34,14 +35,14 @@
}); });
Route::middleware(['checkrole'])->prefix('admin')->group(function () { Route::middleware(['checkrole'])->prefix('admin')->group(function () {
Route::resource('user',user::class); Route::resource('user', user::class);
Route::resource('role',role::class); Route::resource('role', role::class);
Route::get('permission/{role}',[permission::class,'index'])->name('permission.list');
Route::post('permission/{role}',[permission::class,'save'])->name('permission.save');
Route::resource('courseCategory', courseCategory::class);
Route::resource('student', student::class); Route::resource('student', student::class);
Route::resource('instructor', instructor::class); Route::resource('instructor', instructor::class);
Route::resource('courseCategory', courseCategory::class);
Route::resource('course', course::class);
Route::get('permission/{role}', [permission::class, 'index'])->name('permission.list');
Route::post('permission/{role}', [permission::class, 'save'])->name('permission.save');
}); });
@ -55,4 +56,3 @@
// Route::get('/dashboard', function () { // Route::get('/dashboard', function () {
// return view('welcome'); // return view('welcome');
// })->name('dashboard'); // })->name('dashboard');