created Lesson CRUD

Cette révision appartient à :
Ibrahim Khalil Shakil 2023-12-18 00:36:06 +06:00
Parent 6b2f16b096
révision e30fe18a41
7 fichiers modifiés avec 52 ajouts et 136 suppressions

Voir le fichier

@ -7,7 +7,7 @@
use Illuminate\Http\Request;
use App\Http\Requests\Backend\Course\Materials\AddNewRequest;
use App\Http\Requests\Backend\Course\Materials\UpdateRequest;
use App\Models\Course;
use App\Models\Lesson;
use Exception;
class MaterialController extends Controller
@ -26,8 +26,8 @@ public function index()
*/
public function create()
{
$course = Course::get();
return view('backend.course.material.create', compact('course'));
$lesson= Lesson::get();
return view('backend.course.material.create', compact('lesson'));
}
/**
@ -75,9 +75,9 @@ public function show(Material $material)
*/
public function edit($id)
{
$course = Course::get();
$lesson= Course::get();
$material = Material::findOrFail(encryptor('decrypt', $id));
return view('backend.course.material.edit', compact('course', 'material'));
return view('backend.course.material.edit', compact('lesson', 'material'));
}
/**

Voir le fichier

@ -3,6 +3,7 @@
namespace App\Http\Controllers;
use App\Models\Lesson;
use App\Models\Course;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
@ -61,7 +62,7 @@ public function show(Lesson $lesson)
/**
* Show the form for editing the specified resource.
*/
public function edit(Lesson $lesson)
public function edit($id)
{
$course = Course::get();
$lesson = Lesson::findOrFail(encryptor('decrypt', $id));
@ -71,20 +72,13 @@ public function edit(Lesson $lesson)
/**
* Update the specified resource in storage.
*/
public function update(Request $request, Lesson $lesson)
public function update(Request $request, $id)
{
try {
$lesson = Lesson::findOrFail(encryptor('decrypt', $id));
$lesson->title = $request->lessonTitle;
$lesson->lesson_id = $request->lessonId;
$lesson->type = $request->materialType;
$lesson->content_url = $request->contentURL;
$lesson->course_id = $request->courseId;
if ($request->hasFile('content')) {
$contentName = rand(111, 999) . time() . '.' . $request->content->extension();
$request->content->move(public_path('uploads/courses/contents'), $contentName);
$lesson->content = $contentName;
}
if ($lesson->save()) {
$this->notice::success('Data Saved');
return redirect()->route('lesson.index');
@ -102,7 +96,7 @@ public function update(Request $request, Lesson $lesson)
/**
* Remove the specified resource from storage.
*/
public function destroy(Lesson $lesson)
public function destroy($id)
{
$data = Lesson::findOrFail(encryptor('decrypt', $id));
if ($data->delete()) {

Voir le fichier

@ -1,5 +1,5 @@
@extends('backend.layouts.app')
@section('title', 'Add Course Material')
@section('title', 'Add Course Lesson')
@push('styles')
<!-- Pick date -->
@ -16,14 +16,14 @@
<div class="row page-titles mx-0">
<div class="col-sm-6 p-md-0">
<div class="welcome-text">
<h4>Add Course Material</h4>
<h4>Add Course Lesson</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('material.index')}}">Course Materials</a></li>
<li class="breadcrumb-item active"><a href="{{route('material.create')}}">Add Course Material</a>
<li class="breadcrumb-item active"><a href="{{route('lesson.index')}}">Course Lessons</a></li>
<li class="breadcrumb-item active"><a href="{{route('lesson.create')}}">Add Course Lesson</a>
</li>
</ol>
</div>
@ -36,17 +36,17 @@
<h5 class="card-title">Basic Info</h5>
</div>
<div class="card-body">
<form action="{{route('material.store')}}" method="post" enctype="multipart/form-data">
<form action="{{route('lesson.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="materialTitle"
value="{{old('materialTitle')}}">
<input type="text" class="form-control" name="lessonTitle"
value="{{old('lessonTitle')}}">
</div>
@if($errors->has('materialTitle'))
<span class="text-danger"> {{ $errors->first('materialTitle') }}</span>
@if($errors->has('lessonTitle'))
<span class="text-danger"> {{ $errors->first('lessonTitle') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
@ -65,40 +65,9 @@
<span class="text-danger"> {{ $errors->first('courseId') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Material Type</label>
<select class="form-control" name="materialType">
<option value="video" @if(old('materialType')=='video' ) selected @endif>
Video
</option>
<option value="document" @if(old('materialType')=='document' ) selected
@endif>Document
</option>
<option value="quiz" @if(old('materialType')=='quiz' ) selected @endif>Quiz
</option>
</select>
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Content</label>
<input type="file" class="form-control" name="content">
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Content Url</label>
<textarea class="form-control"
name="contentURL">{{old('contentURL')}}</textarea>
</div>
@if($errors->has('contentURL'))
<span class="text-danger"> {{ $errors->first('contentURL') }}</span>
@endif
</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>
<button type="submit" class="btn btn-light">Cancel</button>
</div>
</div>
</form>

Voir le fichier

@ -1,5 +1,5 @@
@extends('backend.layouts.app')
@section('title', 'Edit Course Material Material')
@section('title', 'Edit Course Lesson')
@push('styles')
<!-- Pick date -->
@ -16,14 +16,14 @@
<div class="row page-titles mx-0">
<div class="col-sm-6 p-md-0">
<div class="welcome-text">
<h4>Edit Course Material</h4>
<h4>Edit Course Lesson</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('material.index')}}">Course Materials</a></li>
<li class="breadcrumb-item active"><a href="javascript:void(0);">Edit Course Material</a></li>
<li class="breadcrumb-item active"><a href="{{route('lesson.index')}}">Course Lessons</a></li>
<li class="breadcrumb-item active"><a href="javascript:void(0);">Edit Course Lesson</a></li>
</ol>
</div>
</div>
@ -35,20 +35,20 @@
<h5 class="card-title">Basic Info</h5>
</div>
<div class="card-body">
<form action="{{route('material.update',encryptor('encrypt', $material->id))}}" method="post"
<form action="{{route('lesson.update',encryptor('encrypt', $lesson->id))}}" method="post"
enctype="multipart/form-data">
@csrf
@method('PATCH')
<input type="hidden" name="uptoken" value="{{encryptor('encrypt',$material->id)}}">
<input type="hidden" name="uptoken" value="{{encryptor('encrypt',$lesson->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="materialTitle"
value="{{old('materialTitle',$material->title)}}">
<input type="text" class="form-control" name="lessonTitle"
value="{{old('lessonTitle',$lesson->title)}}">
</div>
@if($errors->has('materialTitle'))
<span class="text-danger"> {{ $errors->first('materialTitle') }}</span>
@if($errors->has('lessonTitle'))
<span class="text-danger"> {{ $errors->first('lessonTitle') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
@ -56,11 +56,11 @@
<label class="form-label">Course</label>
<select class="form-control" name="courseId">
@forelse ($course as $c)
<option value="{{$c->id}}" {{old('courseId', $material->course_id) ==
<option value="{{$c->id}}" {{old('courseId', $lesson->course_id) ==
$c->id?'selected':''}}>
{{$c->title_en}}</option>
@empty
<option value="">No Course Material Material Found</option>
<option value="">No Course Lesson Lesson Found</option>
@endforelse
</select>
</div>
@ -68,44 +68,9 @@
<span class="text-danger"> {{ $errors->first('courseId') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Material Type</label>
<select class="form-control" name="materialType">
<option value="video" @if(old('materialType', $material->type)=='video' ) selected
@endif>Video
</option>
<option value="document" @if(old('materialType', $material->type)=='document' ) selected
@endif>Document
</option>
<option value="quiz" @if(old('materialType', $material->type)
=='quiz' )
selected @endif>Quiz</option>
</select>
</div>
@if($errors->has('materialType'))
<span class="text-danger"> {{ $errors->first('materialType') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Content</label>
<input type="file" class="form-control" name="content">
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Content Url</label>
<textarea class="form-control"
name="contentURL">{{old('contentURL',$material->content_url)}}</textarea>
</div>
@if($errors->has('contentURL'))
<span class="text-danger"> {{ $errors->first('contentURL') }}</span>
@endif
</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>
<button type="submit" class="btn btn-light">Cancel</button>
</div>
</div>
</form>

Voir le fichier

@ -1,5 +1,5 @@
@extends('backend.layouts.app')
@section('title', 'Course Material List')
@section('title', 'Course Lesson List')
@push('styles')
<!-- Datatable -->
@ -15,14 +15,14 @@
<div class="row page-titles mx-0">
<div class="col-sm-6 p-md-0">
<div class="welcome-text">
<h4>Course Material List</h4>
<h4>Course Lesson 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('material.index')}}">Course Materials</a></li>
<li class="breadcrumb-item active"><a href="{{route('material.index')}}">All Course Material</a>
<li class="breadcrumb-item active"><a href="{{route('lesson.index')}}">Course Lessons</a></li>
<li class="breadcrumb-item active"><a href="{{route('lesson.index')}}">All Course Lesson</a>
</li>
</ol>
</div>
@ -43,8 +43,8 @@ class="nav-link btn-primary">Grid
<div id="list-view" class="tab-pane fade active show col-lg-12">
<div class="card">
<div class="card-header">
<h4 class="card-title">All Course Materials List </h4>
<a href="{{route('material.create')}}" class="btn btn-primary">+ Add new</a>
<h4 class="card-title">All Course Lessons List </h4>
<a href="{{route('lesson.create')}}" class="btn btn-primary">+ Add new</a>
</div>
<div class="card-body">
<div class="table-responsive">
@ -54,37 +54,24 @@ class="nav-link btn-primary">Grid
<th>{{__('#')}}</th>
<th>{{__('Title')}}</th>
<th>{{__('Course')}}</th>
<th>{{__('Material Type')}}</th>
<th>{{__('Content')}}</th>
<th>{{__('Content Url')}}</th>
<th>{{__('Action')}}</th>
</tr>
</thead>
<tbody>
@forelse ($material as $m)
@forelse ($lesson as $l)
<tr>
<td>{{$m->id}}</td>
<td>{{$m->title}}</td>
<td>{{$m->course?->title_en}}</td>
<td>{{$l->id}}</td>
<td>{{$l->title}}</td>
<td>{{$l->course?->title_en}}</td>
<td>
{{ $m->type == 'video' ? __('Video') : ($m->type == 'document' ?
__('Document') : __('Quiz')) }}
</td>
<td>
<embed
src="{{asset('public/uploads/courses/contents/'.$m->content)}}"
width="100px" height="50px" />
</td>
<td>{{$m->content_url}}</td>
<td>
<a href="{{route('material.edit', encryptor('encrypt',$m->id))}}"
<a href="{{route('lesson.edit', encryptor('encrypt',$l->id))}}"
class="btn btn-sm btn-primary" title="Edit"><i
class="la la-pencil"></i></a>
<a href="javascript:void(0);" class="btn btn-sm btn-danger"
title="Delete" onclick="$('#form{{$m->id}}').submit()"><i
title="Delete" onclick="$('#form{{$l->id}}').submit()"><i
class="la la-trash-o"></i></a>
<form id="form{{$m->id}}"
action="{{route('material.destroy', encryptor('encrypt',$m->id))}}"
<form id="form{{$l->id}}"
action="{{route('lesson.destroy', encryptor('encrypt',$l->id))}}"
method="post">
@csrf
@method('DELETE')
@ -93,7 +80,7 @@ class="la la-trash-o"></i></a>
</tr>
@empty
<tr>
<th colspan="6" class="text-center">No Course Material Found</th>
<th colspan="6" class="text-center">No Course Lesson Found</th>
</tr>
@endforelse
</tbody>

Voir le fichier

@ -227,9 +227,8 @@ class="las la-chalkboard-teacher"></i>Instructors</a>
Category</a>
</li>
<li><a href="{{route('course.index')}}"><i class="las la-book-open"></i>All Courses</a></li>
<li><a href="{{route('material.index')}}"><i class="las la-chalkboard"></i>Course
Materials</a>
</li>
<li><a href="{{route('lesson.index')}}"><i class="las la-chalkboard"></i>Lessons</a></li>
<li><a href="{{route('material.index')}}"><i class="las la-chalkboard"></i>Materials</a></li>
</ul>
</li>
<li><a class="has-arrow" href="javascript:void()" aria-expanded="false">

Voir le fichier

@ -10,6 +10,7 @@
use App\Http\Controllers\Backend\Instructors\InstructorController as instructor;
use App\Http\Controllers\Backend\Courses\CourseCategoryController as courseCategory;
use App\Http\Controllers\Backend\Courses\CourseController as course;
use App\Http\Controllers\LessonController as lesson;
use App\Http\Controllers\Backend\Courses\MaterialController as material;
use App\Http\Controllers\Backend\Quizzes\QuizController as quiz;
use App\Http\Controllers\Backend\Quizzes\QuestionController as question;
@ -59,6 +60,7 @@
Route::resource('courseCategory', courseCategory::class);
Route::resource('course', course::class);
Route::resource('material', material::class);
Route::resource('lesson', lesson::class);
Route::resource('quiz', quiz::class);
Route::resource('question', question::class);
Route::resource('option', option::class);