File manager - Edit - /home/autoph/repositories/AutoHub-Rating/app/Http/Controllers/AuthController.php
Back
<?php namespace App\Http\Controllers; // use App\Models\Auth; use App\Models\User; use Illuminate\Support\Facades\Validator; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use App\Models\System; use App\Models\Answer; use App\Models\Auth as ModelsAuth; use App\Models\Questionnaire; use App\Models\Questions; use App\Models\Template; use Illuminate\Support\Facades\DB; use Illuminate\Support\Carbon; use Illuminate\Support\Facades\App; use PDF; use Illuminate\Support\Facades\URL; use Illuminate\Support\Facades\Mail; use Illuminate\Support\Str; use Illuminate\Support\Facades\Session; class AuthController extends Controller { private $auth,$quest,$tmp,$sys,$qst,$ans; /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function __construct() { $this->auth = new ModelsAuth; $this->quest = new Questions; $this->tmp = new Template; $this->sys = new System; $this->qst = new Questionnaire; $this->ans = new Answer; } public function dashBoard(){ $questions = $this->auth->getQuestions(); $templates = $this->auth->getTemplates(); $system = $this->auth->getSystems(); $qst = $this->auth->getQuestionnaires(); $devices = DB::table('device_access') ->first(); $rating = []; $res = []; $conditions = [ ['status',"=",1], ['active',"=",1] ]; $page_title = "Home"; // dd($topThreePerGroup); return view('index')->with(['questions'=>$questions,'templates'=>$templates,'systems'=>$system, 'qst'=>$qst, 'devices' => $devices, 'page_title' => $page_title]); } // public function default(){ // $averages = DB::table('answers') // ->select('tmpt_id','syst_id',DB::raw('AVG(JSON_EXTRACT(rating, "$[0]")) as average_rating')) // ->groupBy('syst_id','tmpt_id') // ->get(); // $data = []; // foreach($averages as $row){ // $templateTitle = Template::select('title')->where('id',$row->tmpt_id)->first(); // $systemTitle = System::select('system_name')->where('id',$row->syst_id)->first(); // $data['data'][] = [ // "template" => $templateTitle->title, // "system" => $systemTitle->system_name, // "average" => $row->average_rating // ]; // } // $groups = collect($data['data'])->groupBy('template'); // $topFivePerTemplate = []; // foreach ($groups as $template => $group) { // $topFive = $group->sortByDesc('average')->take(5)->shuffle()->toArray(); // $topFivePerTemplate[$template] = $topFive; // } // return response()->json($topFivePerTemplate); // } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { // } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { // } /** * Display the specified resource. * * @param \App\Models\Auth $auth * @return \Illuminate\Http\Response */ public function show(Request $request) { $id = $request->id; if(empty($id)){ $record = Template::inRandomOrder()->first(); $id = $record->id; } $averages = DB::table('answers') ->select('tmpt_id','syst_id',DB::raw('AVG(JSON_EXTRACT(rating, "$[0]")) as average_rating')) ->where('tmpt_id',"=",$id) ->groupBy('syst_id','tmpt_id') ->get(); $data = []; foreach($averages as $row){ $templateTitle = Template::select('title')->where('id',$row->tmpt_id)->first(); $systemTitle = System::select('system_name')->where('id',$row->syst_id)->first(); $data['data'][] = [ "template" => $templateTitle->title, "system" => $systemTitle->system_name, "average" => $row->average_rating ]; } $groups = collect($data['data'])->groupBy('template'); // dd($groups); // $topThreePerGroup = collect(); // foreach ($groups as $template => $group) { // $topThree = $group->sortByDesc('average')->take(5)->shuffle(); // $topThreePerGroup = $topThreePerGroup->merge($topThree); // } // $topThreePerGroup = $topThreePerGroup->toArray(); $topFivePerTemplate = []; foreach ($groups as $template => $group) { $topFive = $group->sortByDesc('average')->take(5)->shuffle()->toArray(); $topFivePerTemplate['result'] = $topFive; } $respondents = $this->getRespondents($id); return response()->json(['topFivePerTemplate' => $topFivePerTemplate, 'respondents' => $respondents]); } // public function passId($id){ // return $id; // } public function getRespondents($id){ $count = []; $data = DB::table('answers') ->select('syst_id', DB::raw('count(distinct user_id) as count')) ->where('tmpt_id',$id) ->groupBy('syst_id') ->get(); // dd($data->syst_id); foreach($data as $row){ $sys = System::select('system_name')->where('id',$row->syst_id)->first(); $count[] = [ 'system' => $sys->system_name, 'respondents' => $row->count ]; } return $count; } /** * Show the form for editing the specified resource. * * @param \App\Models\Auth $auth * @return \Illuminate\Http\Response */ public function edit(Auth $auth) { // } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param \App\Models\Auth $auth * @return \Illuminate\Http\Response */ public function update(Request $request, Auth $auth) { // } /** * Remove the specified resource from storage. * * @param \App\Models\Auth $auth * @return \Illuminate\Http\Response */ public function destroy(Auth $auth) { // } public function login(Request $request){ $request->validate([ 'email' => 'required', 'password' => 'required' ]); $credentials = $request->only('email','password'); if(Auth::attempt($credentials)){ return response()->json(["message"=>"success"],200); } return redirect('signup')->withSuccess('Data not valid'); } public function register(Request $request){ $validator = Validator::make($request->all(),[ 'f_name' => 'required', 'l_name' => 'required', 'email' => 'required|email|unique:App\Models\User,email|ends_with:autohubgroup.com', 'password' => 'required|confirmed|min:8', ]); if ($validator->passes()) { $user = new User(); $user->f_name = $request->f_name; $user->l_name = $request->l_name; $user->email = $request->email; $user->password = bcrypt($request->password); $user->type = "admin"; $user->save(); Auth::login($user); return response()->json(["message"=>"success"],200); } return response()->json(["message"=>$validator->errors()],500); } public function customLogout(Request $request){ $user = Auth::user(); // dd($user); if($user){ Auth::logout($user); Session::invalidate(); Session::flush(); return redirect('/'); } } public function reportDashboard(){ return view('admin.reports.blank'); } public function qstDashboard(){ return view('admin.reports.qst_masterfile'); } public function qstnDashboard(){ return view('admin.reports.qstn_masterfile'); } public function qsttmpDashboard(){ return view('admin.reports.qstn_tmp_masterfile'); } public function sysDashboard(){ return view('admin.reports.sys_masterfile'); } public function tmpDashboard(){ return view('admin.reports.tmp_masterfile'); } public function rvwDashboard(){ return view('admin.reports.reviews'); } public function countSystem(){ return view('admin.reports.count_per_system'); } public function qstReport(Request $request){ $array_data['type'] = $request->type; $array_data['search'] = ""; $array_data['where'] = ""; if(!empty($request->from_date) && !empty($request->to_date)){ $from = Carbon::parse($request->from_date); $to = Carbon::parse($request->to_date); $fromdate = $from->toDateString(); $todate = $to->toDateString(); $array_data['where'] .= " AND DATE(`questionnaires`.`created_at`) BETWEEN '$fromdate' AND '$todate' "; } $results = $this->qst->reports($array_data); $response = $this->qst->pdf($results,'view'); $pdf = App::make('dompdf.wrapper'); $pdf->loadView('layouts.reports.questionnaire',$response); switch($array_data['type']){ case('view'): return $pdf->stream(); break; case('pdf'): return $pdf->download("questionnaires-masterfile.pdf"); break; case('csv'): $this->qst->csv($results); break; } } public function qstnReport(Request $request){ $array_data['type'] = $request->type; $array_data['search'] = ""; $array_data['where'] = ""; if(!empty($request->from_date) && !empty($request->to_date)){ $from = Carbon::parse($request->from_date); $to = Carbon::parse($request->to_date); $fromdate = $from->toDateString(); $todate = $to->toDateString(); $array_data['where'] .= " AND DATE(`created_at`) BETWEEN '$fromdate' AND '$todate' "; } $results = $this->quest->reports($array_data); // dd($results); $response = $this->quest->pdf($results,'view'); $pdf = App::make('dompdf.wrapper'); $pdf->loadView('layouts.reports.questions',$response); switch($array_data['type']){ case('view'): return $pdf->stream(); break; case('pdf'): return $pdf->download("questions-masterfile.pdf"); break; case('csv'): $this->quest->csv($results); break; } } public function qstntmpReport(Request $request){ $array_data['type'] = $request->type; $array_data['search'] = ""; $array_data['where'] = ""; if(!empty($request->from_date) && !empty($request->to_date)){ $from = Carbon::parse($request->from_date); $to = Carbon::parse($request->to_date); $fromdate = $from->toDateString(); $todate = $to->toDateString(); $array_data['where'] .= " AND DATE(`created_at`) BETWEEN '$fromdate' AND '$todate' "; } $results = $this->quest->reports($array_data); // Loop through each question foreach($results as $question) { // Retrieve the template titles that are related to this question $pattern = '/(?<=\")(\d+)(?=\")/'; // Get the template titles for this question $templateTitles = Template::select('title') ->whereRaw('JSON_CONTAINS(q_id, \'["' . $question->id . '"]\')') ->where('status',1) ->pluck('title') ->toArray(); // Add the template titles to the question object $question->templateTitles = $templateTitles; } // dd($results); $response = $this->quest->pdf2($results,'view'); $pdf = App::make('dompdf.wrapper'); $pdf->loadView('layouts.reports.questions_template',$response); switch($array_data['type']){ case('view'): return $pdf->stream(); break; case('pdf'): return $pdf->download("questions-templates-masterfile.pdf"); break; case('csv'): $this->quest->csv($results); break; } } public function sysReport(Request $request){ $array_data['type'] = $request->type; $array_data['search'] = ""; $array_data['where'] = ""; if(!empty($request->from_date) && !empty($request->to_date)){ $from = Carbon::parse($request->from_date); $to = Carbon::parse($request->to_date); $fromdate = $from->toDateString(); $todate = $to->toDateString(); $array_data['where'] .= " AND DATE(`created_at`) BETWEEN '$fromdate' AND '$todate' "; } $results = $this->sys->reports($array_data); $response = $this->sys->pdf($results); $pdf = App::make('dompdf.wrapper'); $pdf->loadView('layouts.reports.systems',$response); switch($array_data['type']){ case('view'): return $pdf->stream(); break; case('pdf'): return $pdf->download("systems-masterfile.pdf"); break; case('csv'): $this->sys->csv($results); break; } } public function tmpReport(Request $request){ // dd($request->all()); $array_data['type'] = $request->type; $array_data['search'] = ""; $array_data['where'] = ""; if(!empty($request->from_date) && !empty($request->to_date)){ $from = Carbon::parse($request->from_date); $to = Carbon::parse($request->to_date); $fromdate = $from->toDateString(); $todate = $to->toDateString(); $array_data['where'] .= " AND DATE(`created_at`) BETWEEN '$fromdate' AND '$todate' "; } $results = $this->tmp->reports($array_data); $response = $this->tmp->pdf($results); $pdf = App::make('dompdf.wrapper'); $pdf->loadView('layouts.reports.templates',$response); switch($array_data['type']){ case('view'): return $pdf->stream(); break; case('pdf'): return $pdf->download("questions-masterfile.pdf"); break; case('csv'): $this->tmp->csv($results); break; } } public function rvwReport(Request $request){ $array_data['type'] = $request->type; $array_data['search'] = ""; $array_data['where'] = ""; // if(empty($request->qst_id)){ // return response()->json(['message'=>'No Questionnaire Chosen!'],403); // } if(!empty($request->from_date) && !empty($request->to_date)){ $from = Carbon::parse($request->from_date); $to = Carbon::parse($request->to_date); $fromdate = $from->toDateString(); $todate = $to->toDateString(); $array_data['where'] .= " AND DATE(`created_at`) BETWEEN '$fromdate' AND '$todate' "; } $data = $request->qst_id; // dd($data); if(!empty($data)){ $array_data['where'] .= " AND `answers`.`qstnn_id` = {$data}"; } // dd($array_data); $results = $this->ans->reports($array_data); $result = []; foreach($results as $row){ $qst_ids = json_decode($row->qst_id, true); $question_titles = []; foreach($qst_ids as $qst_id){ $question = Questions::select('title')->where('id',$qst_id)->first(); $question_titles[] = $question->title; } $ratings = json_decode($row->rating); $paired_items = []; for ($i=0; $i < count($question_titles) ; $i++) { $paired_items[] = [ 'questions' => $question_titles[$i], 'rating' => $ratings[$i], ]; } // $paired_items[] = [ // array_sum($ratings)/count($ratings) // ]; $result[] = [ 'user_name' => $row->user_name, 'template_title' => $row->template_title, 'system_name' => $row->system_name, // 'questions' => $question_titles, 'ratings' => $paired_items, ]; } // dd($result); $response = $this->ans->pdf($result,'view'); $pdf = App::make('dompdf.wrapper'); // $optionsArr = [ // 'isHtml5ParserEnabled' => true, // 'isRemoteEnabled' => true, // 'defaultPaperSize' => 'letter', // // add more options here as needed // ]; // $pdf->setOptions($optionsArr); $pdf->loadView('layouts.reports.reviews ',$response); switch($array_data['type']){ case('view'): return $pdf->stream(); break; case('pdf'): return $pdf->download("questions-masterfile.pdf"); break; case('csv'): $this->ans->csv($result); break; } } public function cprReport(Request $request){ $array_data['type'] = $request->type; $array_data['search'] = ""; $array_data['where'] = ""; $array_data['where2'] = ""; if(!empty($request->from_date) && !empty($request->to_date)){ $from = Carbon::parse($request->from_date); $to = Carbon::parse($request->to_date); $fromdate = $from->toDateString(); $todate = $to->toDateString(); $array_data['where'] .= " AND DATE(`created_at`) BETWEEN '$fromdate' AND '$todate' "; } $data = $request->qstnn_id; if(!empty($data)){ $array_data['where'] .= " AND `ans`.`qstnn_id` = {$data}"; } $results = $this->ans->reports2($array_data); $id = $array_data['where2'] .= " AND `qstnn`.`id` = {$data}"; $titles = $this->ans->getTitles($id); // dd($titles); // dd($results); $newResults = array(); foreach($results as $row){ $ave = collect(json_decode($row->average)); $average = $ave->avg(); $newResults[] = [ 'user_name' => $row->user_name, 'template_title' => $row->title, 'system_name' => $row->system_name, 'rating' => round($average) ]; } $response = $this->ans->pdf2($newResults,$titles); $pdf = App::make('dompdf.wrapper'); $pdf->loadView('layouts.reports.counts',$response); switch($array_data['type']){ case('view'): return $pdf->stream(); break; case('pdf'): return $pdf->download("questions-masterfile.pdf"); break; case('csv'): $this->ans->csv2($results); break; } } public function fetchQst(){ $qst = Questionnaire::where([['status',"=",1],['active',"=",1]])->get(); $data['results'] = []; foreach($qst as $row){ $template_name = Template::select('title')->where('id',$row->t_id)->first(); $system_name = System::select('system_name')->where('id',$row->s_id)->first(); $data['results'][] = [ "id" => $row->id, "text" => $template_name->title. " " . "(". $system_name->system_name .")" ]; } return response()->json($data); } public function fetchTMP(){ $template = Template::where([['status',"=",1],['active',"=",1]])->get(); // dd($template); $data['results'] = []; foreach($template as $row){ $data['results'][] = [ "id" => $row->id, "text" => $row->title ]; } return response()->json($data); } public function forget(){ return view('auth.forget'); } public function forgetPassword(Request $request){ if($request->validate([ 'email' => ['required','email','ends_with:autohubgroup.com'], ])){ $message = $this->getEmail($request->email); if($message == "success"){ return response()->json(['message' => "we have sent a reset link on your email."],200); } else { return response()->json(['message' => $message],403); } } else { // return response()->json(['error' => $errors], 422); } } public function getEmail($email){ $user = User::where([['email',"=",$email]])->first(); $token = uniqid() . Str::random(8); $link = url('/')."/password-forget/".$email."/".$token; if(!empty($user)){ DB::table('forget_password')->insert([ "email" => $email, "token" => $token, "link" => $link, ]); $data = ['link' => $link]; Mail::send('mail.reset-password',$data, function($message) use ($email){ $message->to($email,$email)->subject('Reset Password'); $message->from('ahub56702@gmail.com','AutoHub Group of Companies, Inc.'); }); return "success"; } else { return "no user found"; } } public function renderResetPassword(){ $url = url()->full(); $token = explode('/',$url); // dd($token[5]); $check = DB::table('forget_password')->where([['link','like','%'.$url.'%'],['token',$token[5]]])->first(); // dd($check); if(empty($check->token)){ abort(419); } else { $id = User::select('id')->where('email','like','%'.$check->email.'%')->first(); return view('auth.reset-password')->with(['id' => $id]); } } public function resetPassword(Request $request){ $url = $request->url; $token = explode('/',$url); // dd($token[5]); if($request->validate([ 'password' => 'required|confirmed', ])){ User::where('id',$request->id) ->update([ 'password' => bcrypt($request->password) ]); DB::table('forget_password')->where([['link','like','%'.$url.'%'],['token',$token[5]]]) ->update(['token'=>null,'deleted_at' => now()]); return response()->json(['message'=>'success'],200); } else { return response()->json(['message'=>'error'],403); } } }
| ver. 1.4 |
.
| PHP 7.3.33 | Generation time: 0 |
proxy
|
phpinfo
|
Settings