nov,27,2023 - 1:43pm

Cette révision appartient à :
Ibrahim Khail Shakil 2023-11-27 13:44:07 +06:00
Parent 7b2189b781
révision f1b91b51aa
10 fichiers modifiés avec 553 ajouts et 94 suppressions

Voir le fichier

@ -47,7 +47,10 @@ public function store(Request $request)
$course->type = $request->courseType;
$course->price = $request->coursePrice;
$course->subscription_price = $request->subscriptionPrice;
$course->start_from = $request->start_from;
$course->duration = $request->duration;
$course->difficulty = $request->courseDifficulty;
$course->course_code = $request->course_code;
$course->prerequisites_en = $request->prerequisites_en;
$course->prerequisites_bn = $request->prerequisites_bn;
$course->status = $request->status;
@ -103,7 +106,10 @@ public function update(Request $request, $id)
$course->type = $request->courseType;
$course->price = $request->coursePrice;
$course->subscription_price = $request->subscriptionPrice;
$course->start_from = $request->start_from;
$course->duration = $request->duration;
$course->difficulty = $request->courseDifficulty;
$course->course_code = $request->course_code;
$course->prerequisites_en = $request->prerequisites_en;
$course->prerequisites_bn = $request->prerequisites_bn;
$course->status = $request->status;

Voir le fichier

@ -0,0 +1,113 @@
<?php
namespace App\Http\Controllers\Backend\Courses;
use App\Models\Material;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Course;
use Exception;
use File;
class MaterialController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
$material = Material::paginate(10);
return view('backend.course.material.index', compact('material'));
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
$course = Course::get();
return view('backend.course.material.create', compact('course'));
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
try {
$material = new Material;
$material->title = $request->materialTitle;
$material->course_id = $request->courseId;
$material->type = $request->materialType;
$material->content_url = $request->contentURL;
if ($material->save()) {
$this->notice::success('Data Saved');
return redirect()->route('material.index');
} else {
$this->notice::error('Please try again');
return redirect()->back()->withInput();
}
} catch (Exception $e) {
dd($e);
$this->notice::error('Please try again');
return redirect()->back()->withInput();
}
}
/**
* Display the specified resource.
*/
public function show(Material $material)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
$course = Course::get();
$material = Material::findOrFail(encryptor('decrypt', $id));
return view('backend.course.material.edit', compact('course', 'material'));
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id)
{
try {
$material = Material::findOrFail(encryptor('decrypt', $id));
$material->title = $request->materialTitle;
$material->course_id = $request->courseId;
$material->type = $request->materialType;
$material->content_url = $request->contentURL;
if ($material->save()) {
$this->notice::success('Data Saved');
return redirect()->route('material.index');
} else {
$this->notice::error('Please try again');
return redirect()->back()->withInput();
}
} catch (Exception $e) {
dd($e);
$this->notice::error('Please try again');
return redirect()->back()->withInput();
}
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
$data = Material::findOrFail(encryptor('decrypt', $id));
if ($data->delete()) {
$this->notice::error('Data Deleted!');
return redirect()->back();
}
}
}

Voir le fichier

@ -1,66 +0,0 @@
<?php
namespace App\Http\Controllers;
use App\Models\Material;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class MaterialController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*/
public function show(Material $material)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(Material $material)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, Material $material)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(Material $material)
{
//
}
}

Voir le fichier

@ -22,9 +22,12 @@ public function up(): void
$table->enum('type', ['free', 'paid', 'subscription'])->default('paid');
$table->decimal('price', 10, 2)->default(0.00)->nullable();
$table->decimal('subscription_price', 10, 2)->nullable();
$table->timestamp('start_from')->nullable();
$table->integer('duration')->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->boolean('status')->default(1)->comment('1 active, 0 inactive');
$table->string('language')->default('en');

Voir le fichier

@ -118,6 +118,18 @@
</select>
</div>
</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">Price</label>
@ -140,17 +152,23 @@
</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>
<label class="form-label">Start From</label>
<input type="date" class="form-control" name="start_from"
value="{{old('start_from')}}">
</div>
@if($errors->has('start_from'))
<span class="text-danger"> {{ $errors->first('start_from') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Duration</label>
<input type="number" class="form-control" name="duration"
value="{{old('duration')}}">
</div>
@if($errors->has('duration'))
<span class="text-danger"> {{ $errors->first('duration') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
@ -181,6 +199,15 @@
</select>
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Course Code</label>
<input type="text" class="form-control" name="course_code" value="{{old('course_code')}}">
</div>
@if($errors->has('course_code'))
<span class="text-danger"> {{ $errors->first('course_code') }}</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">

Voir le fichier

@ -131,6 +131,25 @@
<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">Difficulty</label>
<select class="form-control" name="courseDifficulty">
<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">Price</label>
@ -154,21 +173,24 @@
</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', $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>
<label class="form-label">Start From</label>
<input type="date" class="form-control" name="start_from"
value="{{old('start_from')}}">
</div>
@if($errors->has('courseDifficulty'))
<span class="text-danger"> {{ $errors->first('courseDifficulty') }}</span>
@if($errors->has('start_from'))
<span class="text-danger"> {{ $errors->first('start_from',
$course->start_from) }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Duration</label>
<input type="number" class="form-control" name="duration"
value="{{old('duration')}}">
</div>
@if($errors->has('duration'))
<span class="text-danger"> {{ $errors->first('duration',
$course->duration) }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">

Voir le fichier

@ -0,0 +1,117 @@
@extends('backend.layouts.app')
@section('title', 'Add Course Material')
@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 Material</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>
</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('material.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')}}">
</div>
@if($errors->has('materialTitle'))
<span class="text-danger"> {{ $errors->first('materialTitle') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Course</label>
<select class="form-control" name="courseId">
@forelse ($course as $c)
<option value="{{$c->id}}" {{old('courseId')==$c->id?'selected':''}}>
{{$c->title_en}}</option>
@empty
<option value="">No Course Found</option>
@endforelse
</select>
</div>
@if($errors->has('courseId'))
<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 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>
</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,124 @@
@extends('backend.layouts.app')
@section('title', 'Edit Course Material Material')
@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 Material</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>
</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('material.update',encryptor('encrypt', $material->id))}}" method="post"
enctype="multipart/form-data">
@csrf
@method('PATCH')
<input type="hidden" name="uptoken" value="{{encryptor('encrypt',$material->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_en)}}">
</div>
@if($errors->has('materialTitle'))
<span class="text-danger"> {{ $errors->first('materialTitle') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<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) ==
$c->id?'selected':''}}>
{{$c->title_en}}</option>
@empty
<option value="">No Course Material Material Found</option>
@endforelse
</select>
</div>
@if($errors->has('courseId'))
<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 Url</label>
<textarea class="form-control"
name="contentURL">{{old('contentURL',$material->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>
</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,113 @@
@extends('backend.layouts.app')
@section('title', 'Course Material 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 Material 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>
</ol>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<ul class="nav nav-pills mb-3">
<li class="nav-item"><a href="#list-view" data-toggle="tab"
class="nav-link btn-primary mr-1 show active">List View</a></li>
<li class="nav-item"><a href="javascript:void(0);" data-toggle="tab"
class="nav-link btn-primary">Grid
View</a></li>
</ul>
</div>
<div class="col-lg-12">
<div class="row tab-content">
<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>
</div>
<div class="card-body">
<div class="table-responsive">
<table id="example3" class="display" style="min-width: 845px">
<thead>
<tr>
<th>{{__('#')}}</th>
<th>{{__('Title')}}</th>
<th>{{__('Course')}}</th>
<th>{{__('Material Type')}}</th>
<th>{{__('Content Url')}}</th>
<th>{{__('Action')}}</th>
</tr>
</thead>
<tbody>
@forelse ($material as $m)
<tr>
<td>{{$m->id}}</td>
<td>{{$m->title}}</td>
<td>{{$m->course?->title_en}}</td>
<td>
{{ $m->type == 'video' ? __('Video') : ($d->type == 'Document' ?
__('Paid') : __('Quiz')) }}
</td>
<td>{{$m->content_url}}</td>
<td>
<a href="{{route('material.edit', encryptor('encrypt',$m->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
class="la la-trash-o"></i></a>
<form id="form{{$m->id}}"
action="{{route('material.destroy', encryptor('encrypt',$m->id))}}"
method="post">
@csrf
@method('DELETE')
</form>
</td>
</tr>
@empty
<tr>
<th colspan="6" class="text-center">No Course Material Found</th>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
</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