This commit is contained in:
louiscklaw
2025-02-01 02:08:48 +08:00
parent 3de8aea20a
commit db8bf18f7a
754 changed files with 137077 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\ConfirmsPasswords;
class ConfirmPasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Confirm Password Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password confirmations and
| uses a simple trait to include the behavior. You're free to explore
| this trait and override any functions that require customization.
|
*/
use ConfirmsPasswords;
/**
* Where to redirect users when the intended url fails.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
class ForgotPasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Password Reset Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password reset emails and
| includes a trait which assists in sending these notifications from
| your application to your users. Feel free to explore this trait.
|
*/
use SendsPasswordResetEmails;
}

View File

@@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
public function index() {
if(Auth::check()){
return redirect(route('admin.dashboard'));
}
return view('admin.login');
}
/* Login Check Authenticate User */
public function login(Request $request){
$validator = Validator::make($request->all(), [
'email' => 'required|email|max:255',
'password' => 'required|min:8',
]);
if ($validator->fails()) {
return redirect('login')
->withErrors($validator, 'login')
->withInput();
}
if (Auth::attempt(['email' => $request->email, 'password' => $request->password])) {
$user = Auth::user();
if($user->email_verified_at && $user->email_verified_at ==null){
$this->logout($request);
redirect()->route('login')->with("error","Your are not verified user.");
}
if($user->role == 1){
return redirect()->route('admin.dashboard')->with("success","Welcome To ". env("APP_NAME"));
}else{
redirect()->route('login')->with("error","Your are not authorized user.");
}
}else{
return redirect()->back()->with("error","Invalid Email Or Password.");
}
}
/*Logout*/
public function logout(Request $request){
Auth::logout();
$request->session()->regenerateToken();
return redirect()->route('login');
}
}

View File

@@ -0,0 +1,73 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use App\Models\User;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
class RegisterController extends Controller
{
/*
|--------------------------------------------------------------------------
| Register Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users as well as their
| validation and creation. By default this controller uses a trait to
| provide this functionality without requiring any additional code.
|
*/
use RegistersUsers;
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\Models\User
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
}

View File

@@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\ResetsPasswords;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use App\Models\User;
use Illuminate\Support\Facades\Crypt;
use App\Models\ResetPassword;
use App\Jobs\SendEmailJob;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\URL;
class ResetPasswordController extends Controller {
/*
|--------------------------------------------------------------------------
| Password Reset Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password reset requests
| and uses a simple trait to include this behavior. You're free to
| explore this trait and override any methods you wish to tweak.
|
*/
use ResetsPasswords;
/**
* Where to redirect users after resetting their password.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
public function forgotpassword() {
return view('admin.forgotpassword');
}
public function sendEmailForgotPassword(Request $request) {
$validator = Validator::make($request->all(), [
'email' => 'required|email|max:255',
]);
if ($validator->fails()) {
return redirect('forgotpassword')
->withErrors($validator, 'forgotpassword')
->withInput();
}
$user = User::where('email', $request->email)->first();
if (!$user) {
return redirect()->route('forgotpassword')->with("error", "Your not Registered User.");
}
$token = Crypt::encrypt($request->email);
ResetPassword::updateOrCreate(["email" => $request->email, 'token' => $token]);
dispatch(new SendEmailJob([
'_blade' => 'forgot',
'name' => $user->name,
'toemail' => $request->email,
'token' => $token,
'url' => route('resetpassword', $token)
]));
return redirect()->route('forgotpassword')->with("success", "Your Forgot Password mail has been sent Succefully!");
}
public function resetpassword($token) {
$resetpasswordData = ResetPassword::where('token', $token)->first();
if (empty($resetpasswordData)) {
return redirect()->route('login')->with("error", "Your Reset Password link has been expired.");
}
return view('admin.resetpassword', compact('resetpasswordData'));
}
public function postResetPassword(Request $request) {
if ($request->password != $request->confirmpassword) {
return redirect()->route('resetpassword')->with("error", "Password and Confirm Password has been not match.");
}
$email = $request->email;
User::where('email', $email)->update(["password" => Hash::make($request->password)]);
ResetPassword::where('email', $email)->delete();
return redirect()->route('login')->with("success", "Your Password has been Reset Succefully!");
}
}

View File

@@ -0,0 +1,42 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\VerifiesEmails;
class VerificationController extends Controller
{
/*
|--------------------------------------------------------------------------
| Email Verification Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling email verification for any
| user that recently registered with the application. Emails may also
| be re-sent if the user didn't receive the original email message.
|
*/
use VerifiesEmails;
/**
* Where to redirect users after verification.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
$this->middleware('signed')->only('verify');
$this->middleware('throttle:6,1')->only('verify', 'resend');
}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}

View File

@@ -0,0 +1,77 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Country;
use App\Models\State;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Validator;
class CountryController extends Controller
{
public function index()
{
return view('admin.country.index');
}
public function getCountryList(Request $request){
return Country::getCountryList($request);
}
public function create(Request $request){
return view('admin.country.create');
}
function store(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required|unique:country,name',
]);
if ($validator->fails()) {
return redirect()->route('admin.country.add')
->withErrors($validator, 'country')
->withInput();
}
$country = Country::addEditCountry($request);
if($country){
return redirect()->route('admin.country')->with("success","Country add Successfully!");
}else{
return redirect()->route('admin.add-country')->with("error","Some thing went wrong!");
}
}
public function edit($id){
$country = Country::find($id);
return view('admin.country.edit',compact('country'));
}
public function update(Request $request,$id)
{
$validator = Validator::make($request->all(), [
'name' => 'required|unique:country,name,'.$id,
]);
if ($validator->fails()) {
return redirect()->route('admin.country.edit',$id)
->withErrors($validator, 'country')
->withInput();
}
$country = Country::addEditCountry($request,$id);
if($country){
return redirect()->route('admin.country')->with("success","Country update Successfully!");
}else{
return redirect()->route('admin.country.edit',$id)->with("error","Some thing went wrong!");
}
}
public function delete(Request $request)
{ $state = State::where('country_id',$request->id)->get();
if ($state->count() == 0){
$data = Country::countrydelete($request->id);
if($data == 1){
echo json_encode(["status"=>1]);exit;
}else{
echo json_encode(["status"=>0]);exit;
}
}else{
echo json_encode(["status"=>2]);exit;
}
}
}

View File

@@ -0,0 +1,77 @@
<?php
namespace App\Http\Controllers;
use App\Models\Exam;
use Illuminate\Http\Request;
use App\Models\ExamCategory;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Response;
class ExamCategoryController extends Controller
{
public function index(){
return view('admin.examcategory.index');
}
public function getExamCategoryList(Request $request){
return ExamCategory::getExamCategoryList($request);
}
public function create(Request $request){
return view('admin.examcategory.create');
}
function store(Request $request){
$validator = Validator::make($request->all(), [
'title' => 'required|unique:exam_category,title'
]);
if ($validator->fails()) {
return redirect()->route('admin.examcategory.add')
->withErrors($validator, 'examcategory')
->withInput();
}
$state = ExamCategory::addEditExamCategory($request);
if($state){
return redirect()->route('admin.examcategory')->with("success","Exam Category add Successfully!");
}else{
return redirect()->route('admin.examcategory.add')->with("error","Some thing went wrong!");
}
}
public function edit($id){
$examcategory = ExamCategory::find($id);
return view('admin.examcategory.edit',compact('examcategory'));
}
public function update(Request $request,$id){
$validator = Validator::make($request->all(), [
'title' => 'required|unique:exam_category,title,except'.$id
]);
if ($validator->fails()) {
return redirect()->route('admin.examcategory.edit',$id)
->withErrors($validator, 'examcategory')
->withInput();
}
$country = ExamCategory::addEditExamCategory($request,$id);
if($country){
return redirect()->route('admin.examcategory')->with("success","Exam Category update Successfully!");
}else{
return redirect()->route('admin.examcategory.edit')->with("error","Some thing went wrong!");
}
}
public function delete(Request $request){
$exam = Exam::where('exam_category_id',$request->id)->get();
if ($exam->count() == 0){
$data = ExamCategory::ExamCategorydelete($request->id);
if($data == 1){
echo json_encode(["status"=>1]);exit;
}else{
echo json_encode(["status"=>0]);exit;
}
}else{
echo json_encode(["status"=>2]);exit;
}
}
}

View File

@@ -0,0 +1,106 @@
<?php
namespace App\Http\Controllers;
use App\Models\Country;
use Illuminate\Http\Request;
use App\Models\Exam;
use App\Models\ExamCategory;
use App\Models\Plan;
use App\Models\State;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Validator;
class ExamController extends Controller
{
public function index(){
return view('admin.exam.index');
}
public function getExamList(Request $request){
return Exam::getExamList($request);
}
public function get_StateList(Request $request)
{
$country = $request->country_id;
$state = State::get_StateList($country);
return Response::json($state);
}
public function create(Request $request){
$country = Country::get_CountryList();
$examCategory = ExamCategory::get_ExamCategoryList();
return view('admin.exam.create',compact('country','examCategory'));
}
function store(Request $request){
$validator = Validator::make($request->all(), [
'country' => 'required',
'state' => 'required',
'examcategory' => 'required',
'name' => 'required|unique:exam,name',
]);
if ($validator->fails()) {
return redirect()
->route('admin.exam.add')
->withErrors($validator, 'exam')
->withInput();
}
$Exam = Exam::addEditExam($request);
if ($Exam) {
return redirect()
->route('admin.exam')
->with('success', 'Exam update Successfully!');
} else {
return redirect()
->route('admin.exam.add')
->with('error', 'Some thing went wrong!');
}
}
public function edit($id){
$exam = Exam::find($id);
$country = Country::get_CountryList();
$state = State::all();
$examCategory = ExamCategory::get_ExamCategoryList();
return view('admin.exam.edit', compact('exam','country','state','examCategory'));
}
public function update(Request $request, $id){
$validator = Validator::make($request->all(), [
'name' => 'required|unique:exam,name,'. $id,
'country' => 'required',
'state' => 'required',
'examcategory' => 'required',
]);
if ($validator->fails()) {
return redirect()
->route('admin.exam.edit', $id)
->withErrors($validator, 'exam')
->withInput();
}
$Exam = Exam::addEditExam($request, $id);
if ($Exam) {
return redirect()
->route('admin.exam')
->with('success', 'Exam update Successfully!');
} else {
return redirect()
->route('admin.Exam.edit', $id)
->with('error', 'Some thing went wrong!');
}
}
public function delete(Request $request){
$plan = Plan::where('exam_id',$request->id)->get();
if ($plan->count() == 0){
$data = Exam::Examdelete($request->id);
if($data == 1){
echo json_encode(["status"=>1],true);exit;
}else{
echo json_encode(["status"=>0],true);exit;
}
}else{
echo json_encode(["status"=>2],true);exit;
}
}
}

View File

@@ -0,0 +1,93 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use App\Services\CommonService;
class HomeController extends Controller {
protected $service;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct(CommonService $userService) {
$this->middleware('auth');
$this->service = $userService;
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Contracts\Support\Renderable
*/
public function dashboard() {
if (Auth::user()) {
$data['totalExam'] = $this->service->totalExam();
$data['totalPlan'] = $this->service->totalPlan();
$data['totalSubject'] = $this->service->totalSubject();
$data['totalTest'] = $this->service->totalTest();
$data['totalCountry'] = $this->service->totalCountry();
$data['totalState'] = $this->service->totalState();
return view('admin.dashboard', compact('data'));
} else {
Auth::logout();
return redirect(route('login'));
}
}
/*
* Admin Profile
*/
public function profile() {
$user = User::find(Auth::user()->id);
return view('admin.profile', compact('user'));
}
/*
* Update User Profile
*/
public function updateProfile(Request $request) {
$validator = Validator::make($request->all(), [
'name' => 'required|max:255',
]);
if ($validator->fails()) {
return redirect('admin/profile')->withErrors($validator, 'profile')->withInput();
}
User::updateProfile($request, Auth::user()->id);
return redirect()->route('admin.profile')->with('success', 'Profile Update Successfully!');
}
/*
* Update User Password
*/
public function updatePassword(Request $request) {
$validator = Validator::make($request->all(), [
'currentpassword' => 'required|max:255',
'newpassword' => 'required|max:255',
'password_confirmation' => 'required|max:255|same:newpassword',
]);
if ($validator->fails()) {
return redirect('admin/profile')->withErrors($validator, 'changepassword')->withInput();
}
if (!Hash::check($request->currentpassword, Auth::user()->password)) {
return redirect()->route('admin.profile')->with('error', 'Password and Current Password does not match.');
}
if ($request->newpassword != $request->password_confirmation) {
return redirect()->route('admin.profile')->with('error', 'New Password and Confirm Password does not match.');
}
User::updatePassword($request, Auth::user()->id);
return redirect()->route('admin.profile')->with('success', 'Password Change Successfully!');
}
}

View File

@@ -0,0 +1,94 @@
<?php
namespace App\Http\Controllers;
use App\Models\Exam;
use Illuminate\Http\Request;
use App\Models\Plan;
use Illuminate\Support\Facades\Validator;
class PlanController extends Controller
{
public function index(){
return view('admin.plan.index');
}
public function getPlanList(Request $request){
return Plan::getPlanList($request);
}
public function create(Request $request){
$exam = Exam::all();
return view('admin.plan.create',compact('exam'));
}
function store(Request $request)
{
$validator = Validator::make($request->all(), [
'exam' => 'required',
'name' => 'required|unique:plans,name',
'year' => 'required|numeric',
'price' => 'required',
'validity' => 'required',
'unlimited_test_attempt'=>"required",
'attempt' => 'required_if:unlimited_test_attempt,==,0',
]);
$message = array(
'required_if' =>'Attempt field is required.'
);
if ($validator->fails($message)) {
return redirect()->route('admin.plan.add')
->withErrors($validator, 'plan')
->withInput();
}
$plan = Plan::addEditPlan($request);
if($plan){
return redirect()->route('admin.plan')->with("success","Plan add Successfully!");
}else{
return redirect()->route('admin.add-plan')->with("error","Some thing went wrong!");
}
}
public function edit($id){
$exam = Exam::all();
$plan = Plan::find($id);
return view('admin.plan.edit',compact('plan','exam'));
}
public function update(Request $request,$id)
{
$validator = Validator::make($request->all(), [
'exam' => 'required',
'name' => 'required|unique:plans,name,'.$id,
'year' => 'required|numeric',
'price' => 'required',
'validity' => 'required',
'unlimited_test_attempt'=>"required",
'attempt' => 'required_if:unlimited_test_attempt,==,0',
]);
if ($validator->fails()) {
return redirect()->route('admin.plan.edit',$id)
->withErrors($validator, 'plan')
->withInput();
}
$plan = Plan::addEditPlan($request,$id);
if($plan){
return redirect()->route('admin.plan')->with("success","Plan update Successfully!");
}else{
return redirect()->route('admin.plan.edit',$id)->with("error","Some thing went wrong!");
}
}
public function delete(Request $request)
{ $exam = Plan::where('id',$request->id)->get();
if(empty($state)){
$data = Plan::countrydelete($request->id);
if($data == 1){
echo json_encode(["status"=>1]);exit;
}else{
echo json_encode(["status"=>2]);exit;
}
}else{
echo json_encode(["status"=>0]);exit;
}
}
}

View File

@@ -0,0 +1,80 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\State;
use App\Models\Country;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Response;
class StateController extends Controller
{
public function index(){
return view('admin.state.index');
}
public function getStateList(Request $request){
return State::getStateList($request);
}
public function create(Request $request){
$country = Country::get_CountryList();
return view('admin.state.create',compact('country'));
}
function store(Request $request)
{
$validator = Validator::make($request->all(), [
'country' =>'required',
'name' => 'required|unique:state,name',
]);
if ($validator->fails()) {
return redirect('admin/add-state')
->withErrors($validator, 'state')
->withInput();
}
$state = State::addEditState($request);
if($state){
return redirect()->route('admin.state')->with("success","State add Successfully!");
}else{
return redirect()->route('admin.add-state')->with("error","Some thing went wrong!");
}
}
public function edit($id){
$country = Country::get_CountryList();
$state = State::find($id);
return view('admin.state.edit',compact('country','state'));
}
public function update(Request $request,$id)
{
$validator = Validator::make($request->all(), [
'country' =>'required',
'name' => 'required|unique:state,name,'.$id
]);
if ($validator->fails()) {
return redirect()->route('admin.state.edit',$id)
->withErrors($validator, 'state')
->withInput();
}
$state = State::addEditState($request,$id);
if($state){
return redirect()->route('admin.state')->with("success","State update Successfully!");
}else{
return redirect()->route('admin.state.edit',$id)->with("error","Some thing went wrong!");
}
}
public function delete(Request $request)
{
$data = State::Statedelete($request->id);
if($data == 1){
return Response::json(["status"=>true],200);
}else{
return Response::json(["status"=>false],500);
}
}
}

View File

@@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Response;
use App\Models\Subject;
use App\Models\Plan;
use App\Models\Test;
class SubjectController extends Controller
{
public function index(){
return view('admin.subject.index');
}
public function getSubjectList(Request $request){
return Subject::getSubjectList($request);
}
public function create(Request $request){
$plan = Plan::get_PlanList();
return view('admin.subject.create',compact('plan'));
}
function store(Request $request)
{
$validator = Validator::make($request->all(), [
'plan' =>'required',
'name' => 'required|unique:subjects,name',
]);
if ($validator->fails()) {
return redirect('admin/add-subject')
->withErrors($validator, 'state')
->withInput();
}
$state = Subject::addEditSubject($request);
if($state){
return redirect()->route('admin.subject')->with("success","State add Successfully!");
}else{
return redirect()->route('admin.add-subject')->with("error","Some thing went wrong!");
}
}
public function edit($id){
$plan = Plan::get_PlanList();
$subject = Subject::find($id);
return view('admin.subject.edit',compact('plan','subject'));
}
public function update(Request $request,$id)
{
$validator = Validator::make($request->all(), [
'plan' =>'required',
'name' => 'required|unique:subjects,name,'.$id
]);
if ($validator->fails()) {
return redirect()->route('admin.subject.edit',$id)
->withErrors($validator, 'subject')
->withInput();
}
$subject = Subject::addEditSubject($request,$id);
if($subject){
return redirect()->route('admin.subject')->with("success","Subject update Successfully!");
}else{
return redirect()->route('admin.subject.edit',$id)->with("error","Some thing went wrong!");
}
}
public function delete(Request $request)
{
$test = Test::where('subject_id',$request->id)->get();
if ($test->count() == 0){
$data = Subject::Subjectdelete($request->id);
if($data == 1){
echo json_encode(["status"=>1]);exit;
}else{
echo json_encode(["status"=>0]);exit;
}
}else{
echo json_encode(["status"=>2]);exit;
}
}
}

View File

@@ -0,0 +1,82 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Test;
use App\Models\Subject;
use Illuminate\Support\Facades\Validator;
class TestController extends Controller
{
public function index()
{
return view('admin.test.index');
}
public function getTestList(Request $request)
{
return Test::getTestList($request);
}
public function create(Request $request)
{
$subject = Subject::all();
return view('admin.test.create',compact('subject'));
}
function store(Request $request)
{
$validator = Validator::make($request->all(), [
'subject' => 'required',
'name' => 'required|unique:test,name',
]);
if ($validator->fails()) {
return redirect()->route('admin.test.add')
->withErrors($validator, 'test')
->withInput();
}
$test = Test::addEditTest($request);
if ($test) {
return redirect()->route('admin.test')->with("success", "Test add Successfully!");
} else {
return redirect()->route('admin.add-test')->with("error", "Some thing went wrong!");
}
}
public function edit($id)
{
$subject = Subject::all();
$test = Test::find($id);
return view('admin.test.edit', compact('subject','test'));
}
public function update(Request $request, $id)
{
$validator = Validator::make($request->all(), [
'subject' => 'required',
'name' => 'required|unique:test,name,' . $id,
]);
if ($validator->fails()) {
return redirect()->route('admin.test.edit', $id)
->withErrors($validator, 'test')
->withInput();
}
$test = Test::addEditTest($request, $id);
if ($test) {
return redirect()->route('admin.test')->with("success", "Test update Successfully!");
} else {
return redirect()->route('admin.test.edit', $id)->with("error", "Some thing went wrong!");
}
}
public function delete(Request $request)
{
$data = Test::testdelete($request->id);
if ($data == 1) {
echo json_encode(["status" => 1]);
exit;
} else {
echo json_encode(["status" => 0]);
exit;
}
}
}

View File

@@ -0,0 +1,94 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\TestQuestion;
use App\Models\Test;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Response;
class TestQuestionController extends Controller
{
public function index(){
return view('admin.test_question.index');
}
public function getQuestionList(Request $request){
return TestQuestion::getQuestionList($request);
}
public function create(Request $request){
$test = TestQuestion::get_TestList();
return view('admin.test_question.create',compact('test'));
}
function store(Request $request)
{
$validator = Validator::make($request->all(), [
'test' =>'required',
'question' => 'required|unique:test_question,question',
'option_1' => 'required|unique:test_question,option_1',
'option_2' => 'required|unique:test_question,option_2',
'option_3' => 'required|unique:test_question,option_2',
'option_4' => 'required|unique:test_question,option_2',
'true_answer' => 'required|unique:test_question,true_answer',
'solution' => 'required|unique:test_question,solution',
]);
if ($validator->fails()) {
return redirect('admin/add-question')
->withErrors($validator, 'testquestion')
->withInput();
}
$question = TestQuestion::addEditTestQuestion($request);
if($question){
return redirect()->route('admin.question')->with("success","Test Question add Successfully!");
}else{
return redirect()->route('admin.add-question')->with("error","Some thing went wrong!");
}
}
public function edit($id){
$test = TestQuestion::get_TestList();
$state = TestQuestion::find($id);
return view('admin.test_question.edit',compact('country','state'));
}
public function update(Request $request,$id)
{
$validator = Validator::make($request->all(), [
'test' =>'required',
'question' => 'required|unique:test_question,question',
'option_1' => 'required|unique:test_question,option_1',
'option_2' => 'required|unique:test_question,option_2',
'option_3' => 'required|unique:test_question,option_2',
'option_4' => 'required|unique:test_question,option_2',
'true_answer' => 'required|unique:test_question,true_answer',
'solution' => 'required|unique:test_question,solution',
]);
if ($validator->fails()) {
return redirect()->route('admin.state.edit',$id)
->withErrors($validator, 'state')
->withInput();
}
$question = TestQuestion::addEditTestQuestion($request,$id);
if($question){
return redirect()->route('admin.state')->with("success","Test Question update Successfully!");
}else{
return redirect()->route('admin.state.edit',$id)->with("error","Some thing went wrong!");
}
}
public function delete(Request $request)
{
$data = TestQuestion::Statedelete($request->id);
if($data == 1){
return Response::json(["status"=>true],200);
}else{
return Response::json(["status"=>false],500);
}
}
public function show($id){
$testquestion = TestQuestion::find($id);
return view('admin.test_question.show',compact('testquestion'));
}
}

View File

@@ -0,0 +1,80 @@
<?php
namespace App\Http\Controllers\front;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Auth;
class AuthController extends Controller
{
/* Login / Register Page */
public function login()
{
return view('front.login');
}
/* Login */
public function postlogin(Request $request)
{
$validator = Validator::make($request->all(), [
'email' => 'required|email|max:255',
'password' => 'required|min:8',
]);
if ($validator->fails()) {
return redirect('front.login')
->withErrors($validator, 'login')
->withInput();
}
if (Auth::attempt($request->only('email', 'password'))) {
$user = Auth::user();
if ($user->role != config('const.studentRole')) {
return redirect()->route('front.login')->with("error", "You are not authorized user.");
}
return redirect()->route('front.dashboard');
} else {
return redirect()->route('front.login')->with("error", "Invalid Email Or Password.");
}
}
/* Regisert */
public function register(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required|max:100',
'email' => 'required|unique:users,email|max:190',
'password' => 'required|confirmed',
'password_confirmation' => 'required|same:password'
]);
$message = array(
'password.confirmed' => 'Password and Confirm Password doesnot match.'
);
if ($validator->fails($message)) {
return redirect()->route('front.login')
->withErrors($validator, 'register')
->withInput();
}
$user = User::where('email', $request->email)->count();
if ($user > 0) {
return redirect()->route('front.login')->with("error", "Email is already registered.");
}
$user = User::register($request);
if ($user) {
return redirect()->route('front.login')->with("success", "You are Register Successfully!");
} else {
return redirect()->route('front.login')->with("error", "Some thing went wrong!");
}
}
/*Logout*/
public function logout(Request $request)
{
Auth::logout();
$request->session()->regenerateToken();
return redirect()->route('front.login');
}
}

View File

@@ -0,0 +1,54 @@
<?php
namespace App\Http\Controllers\front;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use App\Models\User;
class FrontHomeController extends Controller
{
public function index() {
return view('front.index');
}
/* Student Dashboard */
public function dashboard(){
return view('front.dahsboard');
}
/* Student Profile */
public function profile(){
return view('front.profile');
}
/* Student Change Password */
public function changepassword(){
return view('front.changepassword');
}
/*
* Update User Password
*/
public function updatePassword(Request $request) {
$validator = Validator::make($request->all(), [
'currentpassword' => 'required|max:255',
'password' => 'required|max:255',
'password_confirmation' => 'required|max:255|same:password',
]);
if ($validator->fails()) {
return redirect()->route('front.changepassword')->withErrors($validator, 'changepassword')->withInput();
}
if (!Hash::check($request->currentpassword, Auth::user()->password)) {
return redirect()->route('front.changepassword')->with('error', 'Password and Current Password does not match.');
}
if ($request->newpassword != $request->confirmpassword) {
return redirect()->route('front.changepassword')->with('error', 'New Password and Confirm Password does not match.');
}
User::updatePassword($request, Auth::user()->id);
return redirect()->route('front.changepassword')->with('success', 'Password Change Successfully!');
}
}

View File

@@ -0,0 +1,68 @@
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array<int, class-string|string>
*/
protected $middleware = [
// \App\Http\Middleware\TrustHosts::class,
\App\Http\Middleware\TrustProxies::class,
\Illuminate\Http\Middleware\HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
/**
* The application's route middleware groups.
*
* @var array<string, array<int, class-string|string>>
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array<string, class-string|string>
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \App\Http\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'prevent-back-history' => \App\Http\Middleware\PreventBackHistory::class,
];
}

View File

@@ -0,0 +1,21 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
class Authenticate extends Middleware
{
/**
* Get the path the user should be redirected to when they are not authenticated.
*
* @param \Illuminate\Http\Request $request
* @return string|null
*/
protected function redirectTo($request)
{
if (! $request->expectsJson()) {
return route('login');
}
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
class EncryptCookies extends Middleware
{
/**
* The names of the cookies that should not be encrypted.
*
* @var array<int, string>
*/
protected $except = [
//
];
}

View File

@@ -0,0 +1,24 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class PreventBackHistory {
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next) {
$response = $next($request);
return $response->header('Cache-Control', 'nocache, no-store, max-age=0, must-revalidate')
->header('Pragma', 'no-cache')
->header('Expires', 'Sun, 02 Jan 1990 00:00:00 GMT');
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance as Middleware;
class PreventRequestsDuringMaintenance extends Middleware
{
/**
* The URIs that should be reachable while maintenance mode is enabled.
*
* @var array<int, string>
*/
protected $except = [
//
];
}

View File

@@ -0,0 +1,32 @@
<?php
namespace App\Http\Middleware;
use App\Providers\RouteServiceProvider;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @param string|null ...$guards
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next, ...$guards)
{
$guards = empty($guards) ? [null] : $guards;
foreach ($guards as $guard) {
if (Auth::guard($guard)->check()) {
return redirect(RouteServiceProvider::HOME);
}
}
return $next($request);
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware;
class TrimStrings extends Middleware
{
/**
* The names of the attributes that should not be trimmed.
*
* @var array<int, string>
*/
protected $except = [
'current_password',
'password',
'password_confirmation',
];
}

View File

@@ -0,0 +1,20 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Middleware\TrustHosts as Middleware;
class TrustHosts extends Middleware
{
/**
* Get the host patterns that should be trusted.
*
* @return array<int, string|null>
*/
public function hosts()
{
return [
$this->allSubdomainsOfApplicationUrl(),
];
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Http\Middleware\TrustProxies as Middleware;
use Illuminate\Http\Request;
class TrustProxies extends Middleware
{
/**
* The trusted proxies for this application.
*
* @var array<int, string>|string|null
*/
protected $proxies;
/**
* The headers that should be used to detect proxies.
*
* @var int
*/
protected $headers =
Request::HEADER_X_FORWARDED_FOR |
Request::HEADER_X_FORWARDED_HOST |
Request::HEADER_X_FORWARDED_PORT |
Request::HEADER_X_FORWARDED_PROTO |
Request::HEADER_X_FORWARDED_AWS_ELB;
}

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Routing\Middleware\ValidateSignature as Middleware;
class ValidateSignature extends Middleware
{
/**
* The names of the query string parameters that should be ignored.
*
* @var array<int, string>
*/
protected $except = [
// 'fbclid',
// 'utm_campaign',
// 'utm_content',
// 'utm_medium',
// 'utm_source',
// 'utm_term',
];
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array<int, string>
*/
protected $except = [
//
];
}