28 nov 2023, 10:50pm

Cette révision appartient à :
Ibrahim Khalil Shakil 2023-11-28 22:50:03 +06:00
Parent d6c02c40f9
révision 64a83c1ca5
47 fichiers modifiés avec 980 ajouts et 73 suppressions

Voir le fichier

@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers;
namespace App\Http\Controllers\Backend\Communication;
use App\Models\Discussion;
use App\Http\Controllers\Controller;
@ -13,7 +13,8 @@ class DiscussionController extends Controller
*/
public function index()
{
//
$discussion = Discussion::paginate(10);
return view('backend.communication.discussion.index', compact('discussion'));
}
/**

Voir le fichier

@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers;
namespace App\Http\Controllers\Backend\Communication;
use App\Models\Message;
use App\Http\Controllers\Controller;
@ -13,7 +13,8 @@ class MessageController extends Controller
*/
public function index()
{
//
$message = Message::paginate(10);
return view('backend.communication.message.index', compact('message'));
}
/**

Voir le fichier

@ -18,7 +18,7 @@ class CourseController extends Controller
public function index()
{
$course = Course::paginate(10);
return view('backend.course.index', compact('course'));
return view('backend.course.courses.index', compact('course'));
}
/**
@ -28,7 +28,7 @@ public function create()
{
$courseCategory = CourseCategory::get();
$instructor = Instructor::get();
return view('backend.course.create', compact('courseCategory', 'instructor'));
return view('backend.course.courses.create', compact('courseCategory', 'instructor'));
}
/**
@ -87,7 +87,7 @@ 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'));
return view('backend.course.courses.edit', compact('courseCategory', 'instructor', 'course'));
}
/**

Voir le fichier

@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers;
namespace App\Http\Controllers\Backend\Quizzes;
use App\Models\Answer;
use App\Http\Controllers\Controller;
@ -13,8 +13,8 @@ class AnswerController extends Controller
*/
public function index()
{
$answer = Quiz::paginate(10);
return view('backend.quiz.answer.index');
$answer = Answer::paginate(10);
return view('backend.quiz.answer.index',compact('answer'));
}

Voir le fichier

@ -0,0 +1,110 @@
<?php
namespace App\Http\Controllers\Backend\Quizzes;
use App\Models\Option;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Question;
use Exception;
class OptionController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
$option = Option::paginate(20);
return view('backend.quiz.option.index', compact('option'));
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
$question = Question::get();
return view('backend.quiz.option.create', compact('question'));
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
try {
$option = new Option;
$option->question_id = $request->questionId;
$option->option_text = $request->optionText;
$option->is_correct = $request->is_correct;
if ($option->save()) {
$this->notice::success('Data Saved');
return redirect()->route('option.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(Option $option)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
$question = Question::get();
$option = Option::findOrFail(encryptor('decrypt', $id));
return view('backend.quiz.option.edit', compact('question', 'option'));
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id)
{
try {
$option = Option::findOrFail(encryptor('decrypt', $id));
$option->question_id = $request->questionId;
$option->option_text = $request->optionText;
$option->is_correct = $request->is_correct;
if ($option->save()) {
$this->notice::success('Data Saved');
return redirect()->route('option.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 = Option::findOrFail(encryptor('decrypt', $id));
if ($data->delete()) {
$this->notice::error('Data Deleted!');
return redirect()->back();
}
}
}

Voir le fichier

@ -16,7 +16,7 @@ class QuizController extends Controller
public function index()
{
$quiz = Quiz::paginate(10);
return view('backend.quiz.index', compact('quiz'));
return view('backend.quiz.quizzes.index', compact('quiz'));
}
/**
@ -25,7 +25,7 @@ public function index()
public function create()
{
$course = Course::get();
return view('backend.quiz.create', compact('course'));
return view('backend.quiz.quizzes.create', compact('course'));
}
/**
@ -67,7 +67,7 @@ public function edit($id)
{
$course = Course::get();
$quiz = Quiz::findOrFail(encryptor('decrypt', $id));
return view('backend.quiz.edit', compact('course', 'quiz'));
return view('backend.quiz.quizzes.edit', compact('course', 'quiz'));
}
/**

Voir le fichier

@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers;
namespace App\Http\Controllers\Backend\Reviews;
use App\Models\Review;
use App\Http\Controllers\Controller;
@ -13,7 +13,8 @@ class ReviewController extends Controller
*/
public function index()
{
//
$review=Review::paginate(20);
return view('backend.review.index', compact('review'));
}
/**

Voir le fichier

@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\Backend;
namespace App\Http\Controllers\Backend\Setting;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

Voir le fichier

@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\Backend;
namespace App\Http\Controllers\Backend\Setting;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

Voir le fichier

@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\Backend;
namespace App\Http\Controllers\Backend\Setting;
use App\Http\Controllers\Controller;
use App\Models\Permission;

Voir le fichier

@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\Backend;
namespace App\Http\Controllers\Backend\Setting;
use App\Http\Controllers\Controller;
use App\Models\Role;

Voir le fichier

@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\Backend;
namespace App\Http\Controllers\Backend\Setting;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

Voir le fichier

@ -8,4 +8,14 @@
class Answer extends Model
{
use HasFactory;
public function student()
{
return $this->belongsTo(Student::class);
}
public function question()
{
return $this->belongsTo(Question::class);
}
}

Voir le fichier

@ -28,4 +28,14 @@ public function quiz()
{
return $this->hasMany(Quiz::class);
}
public function review()
{
return $this->hasMany(Review::class);
}
public function discussion()
{
return $this->hasMany(Discussion::class);
}
}

Voir le fichier

@ -8,4 +8,14 @@
class Discussion extends Model
{
use HasFactory;
public function user()
{
return $this->belongsTo(User::class);
}
public function course()
{
return $this->belongsTo(Course::class);
}
}

Voir le fichier

@ -8,4 +8,9 @@
class Message extends Model
{
use HasFactory;
public function user()
{
return $this->belongsTo(User::class);
}
}

16
app/Models/Option.php Fichier normal
Voir le fichier

@ -0,0 +1,16 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Option extends Model
{
use HasFactory;
public function question()
{
return $this->belongsTo(Question::class);
}
}

Voir le fichier

@ -12,4 +12,13 @@ class Question extends Model
public function quiz(){
return $this->belongsTo(Quiz::class);
}
public function option(){
return $this->hasMany(Option::class);
}
public function answer()
{
return $this->hasMany(Answer::class);
}
}

Voir le fichier

@ -8,4 +8,14 @@
class Review extends Model
{
use HasFactory;
public function student()
{
return $this->belongsTo(Student::class);
}
public function course()
{
return $this->belongsTo(Course::class);
}
}

Voir le fichier

@ -13,4 +13,14 @@ public function role()
{
return $this->belongsTo(Role::class);
}
public function answer()
{
return $this->hasMany(Answer::class);
}
public function review()
{
return $this->hasMany(Review::class);
}
}

Voir le fichier

@ -35,4 +35,14 @@ public function role()
{
return $this->belongsTo(Role::class);
}
public function discussion()
{
return $this->hasMany(Discussion::class);
}
public function message()
{
return $this->hasMany(Message::class);
}
}

Voir le fichier

@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('options', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('question_id')->index();
$table->string('option_text');
$table->boolean('is_correct')->default(false);
$table->timestamps();
$table->softDeletes();
$table->foreign('question_id')->references('id')->on('questions')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('options');
}
};

Voir le fichier

@ -139,6 +139,15 @@ CREATE TABLE questions (
FOREIGN KEY (quiz_id) REFERENCES quizzes(id)
);
-- Introduced a new table for multiple-choice options
CREATE TABLE options (
id INT PRIMARY KEY AUTO_INCREMENT,
question_id INT,
option_text VARCHAR(255) NOT NULL,
is_correct BOOLEAN DEFAULT false,
FOREIGN KEY (question_id) REFERENCES questions(id)
);
-- User_answers table stores user responses to quiz questions
CREATE TABLE user_answers (
id INT PRIMARY KEY AUTO_INCREMENT,

Voir le fichier

@ -0,0 +1,109 @@
@extends('backend.layouts.app')
@section('title', 'Discussion 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>Discussion 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('discussion.index')}}">Discussions</a></li>
<li class="breadcrumb-item active"><a href="{{route('discussion.index')}}">All Discussion</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 Discussions List </h4>
</div>
<div class="card-body">
<div class="table-responsive">
<table id="example3" class="display" style="min-width: 845px">
<thead>
<tr>
<th>{{__('User')}}</th>
<th>{{__('Role')}}</th>
<th>{{__('Course')}}</th>
<th>{{__('Title')}}</th>
<th>{{__('Comment')}}</th>
<th>{{__('Action')}}</th>
</tr>
</thead>
<tbody>
@forelse ($discussion as $d)
<tr>
<td>{{$d->user?->name_en}}</td>
<td>{{$d->user?->role?->name}}</td>
<td>{{$d->course?->title_en}}</td>
<td>{{$d->title}}</td>
<td>{{$d->content}}</td>
<td>
<a href="{{route('discussion.edit', encryptor('encrypt',$d->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{{$d->id}}').submit()"><i
class="la la-trash-o"></i></a>
<form id="form{{$d->id}}"
action="{{route('discussion.destroy', encryptor('encrypt',$d->id))}}"
method="post">
@csrf
@method('DELETE')
</form>
</td>
</tr>
@empty
<tr>
<th colspan="6" class="text-center"><h1>No Discussion Found</h1></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

Voir le fichier

@ -0,0 +1,109 @@
@extends('backend.layouts.app')
@section('title', 'Message 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>Message 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('message.index')}}">Messages</a></li>
<li class="breadcrumb-item active"><a href="{{route('message.index')}}">All Message</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 Messages List </h4>
</div>
<div class="card-body">
<div class="table-responsive">
<table id="example3" class="display" style="min-width: 845px">
<thead>
<tr>
<th>{{__('#')}}</th>
<th>{{__('Sender')}}</th>
<th>{{__('Receiver')}}</th>
<th>{{__('Message')}}</th>
<th>{{__('Action')}}</th>
</tr>
</thead>
<tbody>
@forelse ($message as $m)
<tr>
<td>{{$m->id}}</td>
<td>{{$m->user?->name_en}}</td>
<td>{{$m->user?->name_en}}</td>
<td>{{$m->content}}</td>
<td>
<a href="{{route('message.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('message.destroy', encryptor('encrypt',$m->id))}}"
method="post">
@csrf
@method('DELETE')
</form>
</td>
</tr>
@empty
<tr>
<th colspan="5" class="text-center">
<h1>No Message Found</h1>
</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

Voir le fichier

@ -230,23 +230,15 @@ class="las la-chalkboard-teacher"></i>Instructors</a>
</li>
</ul>
</li>
<li><a class="has-arrow" href="javascript:void()" aria-expanded="false">
<i class="las la-money-check"></i>
<span class="nav-text">Payments</span>
</a>
<ul aria-expanded="false">
<li><a href="javascript:void()"><i class="las la-circle"></i>Course Fees</a></li>
<li><a href="javascript:void()"><i class="las la-circle"></i>Subscription Fees</a></li>
</ul>
</li>
<li><a class="has-arrow" href="javascript:void()" aria-expanded="false">
<i class="las la-tasks"></i>
<span class="nav-text">Quizzes</span>
</a>
<ul aria-expanded="false">
<li><a href="{{route('quiz.index')}}"><i class="las la-circle"></i>All Quizzes</a></li>
<li><a href="{{route('question.index')}}"><i class="las la-circle"></i>Questions</a></li>
<li><a href="javascript:void()"><i class="las la-circle"></i>Answers</a></li>
<li><a href="{{route('quiz.index')}}"><i class="las la-icons"></i>All Quizzes</a></li>
<li><a href="{{route('question.index')}}"><i class="las la-question-circle"></i>Questions</a></li>
<li><a href="{{route('option.index')}}"><i class="las la-stream"></i>Options</a></li>
<li><a href="{{route('answer.index')}}"><i class="las la-font"></i>Answers</a></li>
</ul>
</li>
<li><a class="has-arrow" href="javascript:void()" aria-expanded="false">
@ -254,18 +246,26 @@ class="las la-chalkboard-teacher"></i>Instructors</a>
<span class="nav-text">Reviews</span>
</a>
<ul aria-expanded="false">
<li><a href="javascript:void()"><i class="las la-circle"></i>All Review</a></li>
<li><a href="javascript:void()"><i class="las la-circle"></i>Ratings</a></li>
<li><a href="{{route('review.index')}}"><i class="las la-wave-square"></i>All Review</a></li>
<li><a href="{{route('review.index')}}"><i class="las la-star"></i>Ratings</a></li>
</ul>
</li>
<li><a class="has-arrow" href="javascript:void()" aria-expanded="false">
<i class="las la-users"></i>
<i class="las la-comment"></i>
<span class="nav-text">Forum</span>
</a>
<ul aria-expanded="false">
<li><a href="javascript:void()">Discussion</a></li>
<li><a href="javascript:void()">Comments</a></li>
<li><a href="javascript:void()">Messages</a></li>
<li><a href="{{route('discussion.index')}}"><i class="las la-comment-alt"></i>Discussion</a></li>
<li><a href="{{route('message.index')}}"><i class="las la-envelope"></i>Messages</a></li>
</ul>
</li>
<li><a class="has-arrow" href="javascript:void()" aria-expanded="false">
<i class="las la-money-check"></i>
<span class="nav-text">Payments</span>
</a>
<ul aria-expanded="false">
<li><a href="javascript:void()"><i class="las la-money-bill"></i>Course Fees</a></li>
<li><a href="javascript:void()"><i class="lab la-gg-circle"></i>Subscription Fees</a></li>
</ul>
</li>
</ul>

Voir le fichier

@ -58,20 +58,21 @@ class="nav-link btn-primary">Grid
</tr>
</thead>
<tbody>
@forelse ($quiz as $q)
@forelse ($answer as $a)
<tr>
<td>{{$q->id}}</td>
<td>{{$q->title}}</td>
<td>{{$q->student?->name_en}}</td>
<td>{{$a->id}}</td>
<td>{{$a->student?->name_en}}</td>
<td>{{$a->question?->content}}</td>
<td>{{$a->answer}}</td>
<td>
<a href="{{route('answer.edit', encryptor('encrypt',$q->id))}}"
<a href="{{route('answer.edit', encryptor('encrypt',$a->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{{$q->id}}').submit()"><i
title="Delete" onclick="$('#form{{$a->id}}').submit()"><i
class="la la-trash-o"></i></a>
<form id="form{{$q->id}}"
action="{{route('answer.destroy', encryptor('encrypt',$q->id))}}"
<form id="form{{$a->id}}"
action="{{route('answer.destroy', encryptor('encrypt',$a->id))}}"
method="post">
@csrf
@method('DELETE')
@ -80,7 +81,7 @@ class="la la-trash-o"></i></a>
</tr>
@empty
<tr>
<th colspan="4" class="text-center">No Answer Found</th>
<th colspan="5" class="text-center"><h1>No Answer Found</h1></th>
</tr>
@endforelse
</tbody>

Voir le fichier

@ -0,0 +1,100 @@
@extends('backend.layouts.app')
@section('title', 'Add Option')
@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 Option</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('option.index')}}">Options</a></li>
<li class="breadcrumb-item active"><a href="{{route('option.create')}}">Add Option</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('option.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">Question</label>
<select class="form-control" name="questionId">
@forelse ($question as $q)
<option value="{{$q->id}}" {{old('questionId')==$q->id?'selected':''}}>
{{$q->content}}</option>
@empty
<option value="">No Question Found</option>
@endforelse
</select>
</div>
@if($errors->has('questionId'))
<span class="text-danger"> {{ $errors->first('questionId') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Option</label>
<input type="text" class="form-control" name="optionText" value="{{old('optionText')}}">
</div>
@if($errors->has('optionText'))
<span class="text-danger"> {{ $errors->first('optionText') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Is Correct</label>
<select class="form-control" name="is_correct">
<option value="1" @if(old('is_correct')==1) selected @endif>Correct</option>
<option value="0" @if(old('is_correct')==0) selected @endif>Wrong</option>
</select>
</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,103 @@
@extends('backend.layouts.app')
@section('title', 'Edit Option')
@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 Option</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('option.index')}}">Options</a></li>
<li class="breadcrumb-item active"><a href="javascript:void(0);">Edit Option</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('option.update',encryptor('encrypt', $option->id))}}" method="post"
enctype="multipart/form-data">
@csrf
@method('PATCH')
<input type="hidden" name="uptoken" value="{{encryptor('encrypt',$option->id)}}">
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Question</label>
<select class="form-control" name="questionId">
@forelse ($question as $q)
<option value="{{$q->id}}" {{old('questionId', $option->question_id) ==
$q->id?'selected':''}}>
{{$q->content}}</option>
@empty
<option value="">No Question Found</option>
@endforelse
</select>
</div>
@if($errors->has('questionId'))
<span class="text-danger"> {{ $errors->first('questionId') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Option</label>
<input type="text" class="form-control" name="optionText" value="{{old('optionText',$option->option_text)}}">
</div>
@if($errors->has('optionText'))
<span class="text-danger"> {{ $errors->first('optionText') }}</span>
@endif
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Is Correct</label>
<select class="form-control" name="is_correct">
<option value="1" @if(old('is_correct',$option->is_correct)==1) selected @endif>Correct</option>
<option value="0" @if(old('is_correct',$option->is_correct)==0) selected @endif>Wrong</option>
</select>
</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,111 @@
@extends('backend.layouts.app')
@section('title', 'Option 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>Option 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('option.index')}}">Options</a></li>
<li class="breadcrumb-item active"><a href="{{route('option.index')}}">All Option</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 Options List </h4>
<a href="{{route('option.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>{{__('Question')}}</th>
<th>{{__('Option')}}</th>
<th>{{__('Is Correct')}}</th>
<th>{{__('Action')}}</th>
</tr>
</thead>
<tbody>
@forelse ($option as $o)
<tr>
<td>{{$o->id}}</td>
<td>{{$o->question?->content}}</td>
<td>{{$o->option_text}}</td>
<td>
<span class="badge {{$o->is_correct==1?"
badge-success":"badge-danger"}}">{{ $o->is_correct == 1 ? 'Correct' : 'Wrong' }}</span>
</td>
<td>
<a href="{{route('option.edit', encryptor('encrypt',$o->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{{$o->id}}').submit()"><i
class="la la-trash-o"></i></a>
<form id="form{{$o->id}}"
action="{{route('option.destroy', encryptor('encrypt',$o->id))}}"
method="post">
@csrf
@method('DELETE')
</form>
</td>
</tr>
@empty
<tr>
<th colspan="4" class="text-center">No Option 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

Voir le fichier

@ -62,7 +62,7 @@
<div class="form-group">
<label class="form-label">Qestion Type</label>
<select class="form-control" name="questionType">
<option value="video" @if(old('questionType', $question->type)=='video' ) selected
<option value="multiple_choice" @if(old('questionType', $question->type)=='multiple_choice' ) selected
@endif>Multiple Choice
</option>
<option value="true_false" @if(old('questionType', $question->type)=='true_false' ) selected

Voir le fichier

@ -0,0 +1,111 @@
@extends('backend.layouts.app')
@section('title', 'Review 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>Review 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('review.index')}}">Reviews</a></li>
<li class="breadcrumb-item active"><a href="{{route('review.index')}}">All Review</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 Reviews List </h4>
</div>
<div class="card-body">
<div class="table-responsive">
<table id="example3" class="display" style="min-width: 845px">
<thead>
<tr>
<th>{{__('#')}}</th>
<th>{{__('Rating')}}</th>
<th>{{__('Comment')}}</th>
<th>{{__('Course')}}</th>
<th>{{__('Student')}}</th>
<th>{{__('Action')}}</th>
</tr>
</thead>
<tbody>
@forelse ($review as $r)
<tr>
<td>{{$r->id}}</td>
<td>{{$r->rating}}</td>
<td>{{$r->comment}}</td>
<td>{{$r->course?->title_en}}</td>
<td>{{$r->student?->name_en}}</td>
<td>
<a href="{{route('review.edit', encryptor('encrypt',$r->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{{$r->id}}').submit()"><i
class="la la-trash-o"></i></a>
<form id="form{{$r->id}}"
action="{{route('review.destroy', encryptor('encrypt',$r->id))}}"
method="post">
@csrf
@method('DELETE')
</form>
</td>
</tr>
@empty
<tr>
<th colspan="5" class="text-center">
<h1>No Review Found</h1>
</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

Voir le fichier

@ -35,7 +35,8 @@
<h5 class="card-title">Basic Info</h5>
</div>
<div class="card-body">
<form action="{{route('student.update',encryptor('encrypt', $student->id))}}" method="post" enctype="multipart/form-data">
<form action="{{route('student.update',encryptor('encrypt', $student->id))}}" method="post"
enctype="multipart/form-data">
@csrf
@method('PATCH')
<input type="hidden" name="uptoken" value="{{encryptor('encrypt',$student->id)}}">
@ -92,7 +93,8 @@
<label class="form-label">Role</label>
<select class="form-control" name="roleId">
@forelse ($role as $r)
<option value="{{$r->id}}" {{old('roleId', $student->role_id)==$r->id?'selected':''}}>
<option value="{{$r->id}}" {{old('roleId', $student->
role_id)==$r->id?'selected':''}}>
{{$r->name}}</option>
@empty
<option value="">No Role Found</option>
@ -106,8 +108,9 @@
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label">Date of Birth</label>
<input type="date" name="birthDate" value="{{old('birthDate',$student->date_of_birth)}}"
class="form-control" id="">
<input type="date" name="birthDate"
value="{{old('birthDate',$student->date_of_birth)}}" class="form-control"
id="">
</div>
@if($errors->has('birthDate'))
<span class="text-danger"> {{ $errors->first('birthDate') }}</span>
@ -117,11 +120,14 @@ class="form-control" id="">
<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 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 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 value="other" @if(old('gender',$student->gender)=='other' ) selected
@endif>Other
</option>
</select>
</div>
@ -130,8 +136,10 @@ class="form-control" id="">
<div class="form-group">
<label class="form-label">Status</label>
<select class="form-control" name="status">
<option value="1" @if(old('status',$student->status)==1) selected @endif>Active</option>
<option value="0" @if(old('status',$student->status)==0) selected @endif>Inactive</option>
<option value="1" @if(old('status',$student->status)==1) selected
@endif>Active</option>
<option value="0" @if(old('status',$student->status)==0) selected
@endif>Inactive</option>
</select>
</div>
</div>

Voir le fichier

@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<title>{{ENV('APP_NAME')}} | @yield('title')</title>
<title>{{ENV('APP_NAME')}} | @yield('title', 'Home')</title>
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<meta content="" name="keywords">
<meta content="" name="description">

Voir le fichier

@ -1,18 +1,23 @@
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Backend\AuthenticationController as auth;
use App\Http\Controllers\Backend\UserController as user;
use App\Http\Controllers\Backend\DashboardController as dashboard;
use App\Http\Controllers\Backend\Courses\CourseCategoryController as courseCategory;
use App\Http\Controllers\Backend\RoleController as role;
use App\Http\Controllers\Backend\PermissionController as permission;
use App\Http\Controllers\Backend\Setting\AuthenticationController as auth;
use App\Http\Controllers\Backend\Setting\UserController as user;
use App\Http\Controllers\Backend\Setting\DashboardController as dashboard;
use App\Http\Controllers\Backend\Setting\RoleController as role;
use App\Http\Controllers\Backend\Setting\PermissionController as permission;
use App\Http\Controllers\Backend\Students\StudentController as student;
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\Backend\Courses\MaterialController as material;
use App\Http\Controllers\Backend\Quizzes\QuizController as quiz;
use App\Http\Controllers\Backend\Quizzes\QuestionController as question;
use App\Http\Controllers\Backend\Quizzes\OptionController as option;
use App\Http\Controllers\Backend\Quizzes\AnswerController as answer;
use App\Http\Controllers\Backend\Reviews\ReviewController as review;
use App\Http\Controllers\Backend\Communication\DiscussionController as discussion;
use App\Http\Controllers\Backend\Communication\MessageController as message;
/*
|--------------------------------------------------------------------------
@ -47,6 +52,11 @@
Route::resource('material', material::class);
Route::resource('quiz', quiz::class);
Route::resource('question', question::class);
Route::resource('option', option::class);
Route::resource('answer', answer::class);
Route::resource('review', review::class);
Route::resource('discussion', discussion::class);
Route::resource('message', message::class);
Route::get('permission/{role}', [permission::class, 'index'])->name('permission.list');
Route::post('permission/{role}', [permission::class, 'save'])->name('permission.save');
});