File manager - Edit - /home/autoph/public_html/projects/document_tracking/app/Http/Controllers/UserController.php
Back
<?php namespace App\Http\Controllers; use Illuminate\Support\Facades\Http; use Illuminate\Http\Request; use App\Models\Company; use App\Models\Dealer; use App\Models\Department; use App\Models\Document; use App\Models\User; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Carbon; use App\Http\Resources\DocumentResource; use Jimmyjs\ReportGenerator\ReportMedia\PdfReport as ReportMediaPdfReport; use PdfReport; use Illuminate\Support\Facades\View; use PDF; class UserController extends Controller { public function index(){ return view('auth.login'); } public function analyticsByDate(Request $request){ $get_documents_by_specific_date = DB::table('sent_files') ->select('*') ->whereBetween('created_at',[$request->from_date, $request->to_date]) ->get(); return response()->json($get_documents_by_specific_date); } public function files_by_company(Request $request){ $q1 = User::select('*') ->get(); foreach($q1 as $id){ $q2 = Company::select('comp_code','comp_name') ->where('comp_id',$q1->company) ->first(); $q3 = Dealer::select('dealer_name') ->where('dealer_id',$q1->dealer) ->first(); $q4 = Department::select('department_name') ->where('department_id',$q1->dept_id) ->first(); $partial[] = (object) array( ); } } public function adminAnalytics(Request $request){ $date = Carbon::now(); $from_month = Carbon::now()->startOfMonth(); $to_month = Carbon::now()->endOfMonth(); $from_year = Carbon::now()->startOfYear(); $to_year = Carbon::now()->endOfYear(); $from_yesterday = Carbon::now()->startOfDay(); $to_tomorrow = Carbon::now()->endOfDay(); $current_month = $date ->monthName; //dd($current_month); $start_quarter = null; $end_quarter = null; switch ($current_month){ case "January": case "February": case "March": $start_quarter = Carbon::now()->startOfYear(); $end_quarter = Carbon::now()->startOfYear()->endOfQuarter(); break; case "April": case "May": case "June": $start_quarter = Carbon::now()->startOfYear()->addQuarters(1)->startOfQuarter(); $end_quarter = Carbon::now()->startOfYear()->addQuarters(1)->endOfQuarter(); break; case "July": case "August": case "September": $start_quarter = Carbon::now()->startOfYear()->addQuarters(2)->startOfQuarter(); $end_quarter = Carbon::now()->startOfYear()->addQuarters(2)->endOfQuarter(); break; case "October": case "November": case "December": $start_quarter = Carbon::now()->startOfYear()->addQuarters(3)->startOfQuarter(); $end_quarter = Carbon::now()->startOfYear()->addQuarters(3)->endOfQuarter(); break; break; } $days = $request->days; $start_day = null; $end_day = null; switch ($days) { case("seven"): $start_day = Carbon::now()->subDays(7); $end_day = Carbon::now()->endOfDay(); break; case("fourteen"): $start_day = Carbon::now()->subDays(14); $end_day = Carbon::now()->endOfDay(); break; case("thirty"): $start_day = Carbon::now()->subDays(30); $end_day = Carbon::now()->endOfDay(); break; break; } // dd($start_quarter->toDateString()); // $first_quarter_start = $date->startOfYear(); // $first_quarter_end = $date->startOfYear()->endOfQuarter(); // $second_quarter_start = $date->startOfYear()->addQuarters(1); // $second_quarter_end = $date->startOfYear()->addQuarters(1)->endOfQuarter(); // $third_quarter_start = $date->startOfYear()->addQuarters(2); // $third_quarter_end = $date->startOfYear()->addQuarters(2)->endOfQuarter(); // $fourth_quarter_start = $date->startOfYear()->addQuarters(3); // $fourth_quarter_end = $date->startOfYear()->addQuarters(3)->endOfQuarter(); $count_per_year = DB::table('sent_files') ->select(DB::raw('COUNT(1) as documents')) ->select('file_id') ->whereBetween('created_at',[$from_year,$to_year]) ->groupBy('file_id') ->get(); $count_per_quarter = DB::table('sent_files') ->select(DB::raw('COUNT(1) as documents')) ->select('file_id') ->whereBetween('created_at',[$start_quarter,$end_quarter]) ->groupBy('file_id') ->get(); $count_per_month = DB::table('sent_files') ->select(DB::raw('COUNT(1) as documents')) ->select('file_id') ->whereBetween('created_at',[$from_month,$to_month]) ->groupBy('file_id') ->get(); $count_per_day = DB::table('sent_files') ->select(DB::raw('COUNT(1) as documents')) ->select('file_id') ->whereBetween('created_at',[$from_yesterday,$to_tomorrow]) ->groupBy('file_id') ->get(); $count_per_day_filter = DB::table('sent_files') ->select(DB::raw('COUNT(1) as documents')) ->select('file_id') ->whereBetween('created_at',[$start_day,$end_day]) ->groupBy('file_id') ->get(); // dd($count_per_day); //dd($from_yesterday,$to_tomorrow); $document_distribution = DB::table('documents')->select('creator_id','id')->get(); $ids = DB::table('sent_files') ->select("sent_files.*") ->get();//select all id's from sent files $date = DB::table('sent_files') ->select('file_id','recipient_id',DB::raw('DATEDIFF(updated_at,created_at) as duration')) ->get();//select date diff from sent files table foreach($date as $dates){ $files = DB::table('documents') ->where('id',$dates->file_id) ->first();//select the file from documents $person = DB::table('users') ->where('id',$dates->recipient_id) ->first();//select the person name from users table $datediff[] = (object) array( 'file_name' => $files->document_title, 'person' => $person->first_name, 'duration' => $dates->duration ); } foreach($ids as $key){ $q1 = DB::table('documents') ->where('id',$key->file_id) ->first(); $q2 = DB::table('users') ->select('first_name') ->where('id',$key->recipient_id) ->first(); $foobar[] = (object) array( 'name'=>$q2->first_name, 'file_name'=>$q1->document_title, 'start'=>$key->created_at, 'end'=>$key->updated_at ); } $documentcount = Document::where('dc_status',1) ->get(); $documentcount2 = Document::where('dc_status',0) ->get(); return response()->json(["foobar"=>$foobar, "document_distribution"=>$document_distribution, "datediff"=>$datediff, "document_count"=>$count_per_month, "count_per_day_filter"=>count($count_per_day_filter), "document_per_day"=>count($count_per_day), "document_per_month"=>count($count_per_month), "document_per_quarter"=>count($count_per_quarter), "document_per_year"=>count($count_per_year), "document_done_count"=>count($documentcount), "document_open_count"=>count($documentcount2) ]); } public function getDocumentsByCompany(Request $request){ // $dates = DB::table('sent_files') // ->select('companies.comp_code',DB::raw('TIMEDIFF(sent_files.updated_at,sent_files.created_at) as ave_time')) // ->join('users','users.id',"=",'sent_files.recipient_id') // ->join('companies','users.company',"=",'companies.comp_id') // // ->groupBy('companies.comp_code') // ->get(); // $date2 = DB::table('sent_files') // ->select('companies.comp_code',DB::raw('SUM(sent_files.updated_at - sent_files.created_at) as ave_time')) // ->join('users','users.id',"=",'sent_files.recipient_id') // ->join('companies','users.company',"=",'companies.comp_id') // ->groupBy('companies.comp_code') // ->get(); // dd($request->all()); $date3 = DB::table('sent_files') ->select(DB::raw('SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(sent_files.updated_at,sent_files.created_at)))) as totalTime')) ->join('users','users.id',"=",'sent_files.recipient_id') ->join('companies','users.company',"=",'companies.comp_id') ->where('companies.comp_id',$request->comp_id) // ->where('companies.comp_id',39) // ->groupBy('companies.comp_id') ->get(); return response()->json(["date3"=>$date3]); } public function getDocsByFilter(Request $request){ $from_month = Carbon::now()->startOfMonth(); $to_month = Carbon::now()->endOfMonth(); $from_year = Carbon::now()->startOfYear(); $to_year = Carbon::now()->endOfYear(); $from_yesterday = Carbon::now()->startOfDay(); $to_tomorrow = Carbon::now()->endOfDay(); $first_quarter_start = Carbon::now()->startOfYear(); $first_quarter_end = Carbon::now()->startOfYear()->endOfQuarter(); $second_quarter_start = Carbon::now()->startOfYear()->addQuarters(1); $second_quarter_end = Carbon::now()->startOfYear()->addQuarters(1)->endOfQuarter(); $third_quarter_start = Carbon::now()->startOfYear()->addQuarters(2); $third_quarter_end = Carbon::now()->startOfYear()->addQuarters(2)->endOfQuarter(); $fourth_quarter_start = Carbon::now()->startOfYear()->addQuarters(3); $fourth_quarter_end = Carbon::now()->startOfYear()->addQuarters(3)->endOfQuarter(); if(!$request->from_date || !$request->to_date){ $count_per_year = DB::table('sent_files') ->select(DB::raw('COUNT(1) as documents')) ->select('documents.*') ->join('documents','documents.id',"=",'sent_files.file_id') ->join('users','users.id',"=",'sent_files.recipient_id') ->join('companies','comp_id',"=",'users.company') ->join('dealers','dealer_id',"=",'users.dealer') ->whereBetween('sent_files.created_at',[$from_year,$to_year]) ->where('companies.comp_id',$request->comp_id) ->where('dealers.dealer_id',$request->dealer_id) ->groupBy('documents.id') ->get(); $count_per_quarter = DB::table('sent_files') ->select(DB::raw('COUNT(1) as documents')) ->select('documents.*') ->join('documents','documents.id',"=",'sent_files.file_id') ->join('users','users.id',"=",'sent_files.recipient_id') ->join('companies','comp_id',"=",'users.company') ->join('dealers','dealer_id',"=",'users.dealer') ->whereBetween('sent_files.created_at',[$second_quarter_start,$second_quarter_end]) ->where('companies.comp_id',$request->comp_id) ->where('dealers.dealer_id',$request->dealer_id) ->groupBy('documents.id') ->get(); $count_per_month = DB::table('sent_files') ->select(DB::raw('COUNT(1) as documents')) ->select('documents.*') ->join('documents','documents.id',"=",'sent_files.file_id') ->join('users','users.id',"=",'sent_files.recipient_id') ->join('companies','comp_id',"=",'users.company') ->join('dealers','dealer_id',"=",'users.dealer') ->whereBetween('sent_files.created_at',[$from_month,$to_month]) ->where('companies.comp_id',$request->comp_id) ->where('dealers.dealer_id',$request->dealer_id) ->groupBy('documents.id') ->get(); $count_per_day = DB::table('sent_files') ->select(DB::raw('COUNT(1) as documents')) ->select('documents.*') ->join('documents','documents.id',"=",'sent_files.file_id') ->join('users','users.id',"=",'sent_files.recipient_id') ->join('companies','comp_id',"=",'users.company') ->join('dealers','dealer_id',"=",'users.dealer') ->whereBetween('sent_files.created_at',[$from_yesterday,$to_tomorrow]) ->where('companies.comp_id',$request->comp_id) ->where('dealers.dealer_id',$request->dealer_id) ->groupBy('documents.id') ->get(); return response()->json([ "document_count"=>$count_per_month, "document_per_day"=>count($count_per_day), "document_per_month"=>count($count_per_month), "document_per_quarter"=>count($count_per_quarter), "document_per_year"=>count($count_per_year), ]); } $queryBuilder = DB::table('sent_files') ->select('sent_files.file_id', 'sent_files.recipient_id', 'sent_files.cc_id', 'sent_files.created_at as sentDocumentCreatedAt', 'sent_files.updated_at as sentDocumentUpdatedAt', 'sent_files.date_diff', 'documents.*', 'companies.comp_name', 'dealers.dealer_name', 'ua.first_name as recipient_name', 'ua.last_name as recipient_surname', 'ub.first_name as sender_name', 'ub.last_name as sender_surname', ) ->join('users as ua','ua.id', "=", 'sent_files.recipient_id') ->join('users as ub','ub.id',"=",'sent_files.sender_id') ->join('documents','documents.id', "=", 'sent_files.file_id') ->join('dealers','dealers.dealer_id', "=", 'ua.dealer') ->join('companies','companies.comp_id', "=", 'ua.company') ->where('ua.dealer',$request->dealer_id) ->where('ua.company',$request->company_id) ->whereBetween('sent_files.created_at',[$request->from_date, $request->to_date]) ->orderBy('sent_files.file_id','ASC') ->get(); $view = View::make('reports')->with(["queryBuilder"=>$queryBuilder, "start_date"=>$request->from_date, "end_date"=>$request->to_date]); $html = $view->render(); $pdf = new PDF(); $pdf::SetTitle('Reports'); $pdf::SetAuthor('Adrian Pusana'); $pdf::AddPage(); $pdf::writeHTML($html, true, false, true, false, ''); $pdf::Output(public_path(uniqid().'_sample.pdf'), 'F'); } public function printPDF(){ } public function getNearDue(){ $due = DB::table('sent_files') ->select('documents.id') ->join('documents','documents.id',"=",'sent_files.file_id') ->where('documents.due_date' - 'sent_files.updated_at',"=","7:00:00") ->get(); return response()->json($due); // dd($due); } public function getDepartmentsByCompany(Request $request){ $data['data'] = Dealer::select('dealer_id', 'dealer_code') ->join('companies','dealers.comp_id',"=",'companies.comp_id') ->where('companies.comp_id',$request->comp_id) ->get(); return response()->json($data); } public function getDocumentsByDealer(Request $request){ $data = DB::table('sent_files') ->select(DB::raw('SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(sent_files.updated_at,sent_files.created_at)))) as totalTime')) ->join('users','users.id',"=",'sent_files.recipient_id') ->join('dealers','users.dealer',"=",'dealers.dealer_id') // ->where('dealers.dealer',$request->dealer_id) ->where('dealers.dealer_id',5) ->get(); return response()->json(["data"=>$data]); } public function getDocumentsByDepartment(Request $request){ $data = DB::table('sent_files') ->select(DB::raw('SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(sent_files.updated_at,sent_files.created_at)))) as totalTime')) ->join('users','users.id',"=",'sent_files.recipient_id') ->join('departments','users.dept_id',"=",'departments.department_id') // ->where('departments.department_id',$request->department_id) ->where('departments.department_id',23) ->get(); return response()->json(["data"=>$data]); } public function analyticsDashboard(Request $request){ // if(!$request->id){ $id = Auth::id(); $query = DB::table('sent_files')->select("sent_files.*") ->where('recipient_id',$id) ->get(); //get all info from sent_files table where the recipient_id is the same as the logged in user } else{ $query = DB::table('sent_files')->select("sent_files.*") ->where('recipient_id',$request->id) ->get(); //get all info from sent_files table where the recipient_id is the same as the logged in user } foreach($query as $key){ $query2 = DB::table('documents') ->select("document_title") ->where('id',$key->file_id) ->first(); $foo[] = (object) array( 'name' => $query2->document_title, 'start' => $key->created_at, 'end' => $key->updated_at ); } return response()->json($foo); } public function reg() { return view('auth.register'); } public function dashboard() { $cred = Auth::id(); $users['data'] = User::orderBy("id","asc") ->select('id','first_name','last_name','dept_name') ->get(); return view('auth.dashboard')->with(["users"=>$users,"cred"=>$cred]); } public function fetchDoc(Request $request) { $user = Auth::user(); // dd($user->id); if ($request->filter == 'pending'){ $messages = DB::table('sent_files') ->select('sent_files.file_id','sent_files.recipient_id','sent_files.cc_id','sent_files.created_at as sentDocumentCreatedAt','sent_files.updated_at as sentDocumentUpdatedAt','sent_files.date_diff','documents.*') ->join('users','users.id', "=", 'sent_files.recipient_id') ->join('documents','documents.id', "=", 'sent_files.file_id') ->where([['sent_files.recipient_id',"=",$user->id],['sent_files.date_diff',"=",'00:00:00']]) ->orWhere([['sent_files.cc_id',"=",$user->id],['sent_files.date_diff',"=",'00:00:00']]) ->orderBy('created_at','DESC') ->get(); } elseif ($request->filter == 'closed'){ $messages = DB::table('sent_files') ->select('sent_files.file_id','sent_files.recipient_id','sent_files.cc_id','sent_files.created_at as sentDocumentCreatedAt','sent_files.updated_at as sentDocumentUpdatedAt','sent_files.date_diff','documents.*') ->join('users','users.id', "=", 'sent_files.recipient_id') ->join('documents','documents.id', "=", 'sent_files.file_id') ->where([['sent_files.recipient_id',"=",$user->id],['sent_files.date_diff',"!=",'00:00:00']]) ->orWhere([['sent_files.cc_id',"=",$user->id],['sent_files.date_diff',"!=",'00:00:00']]) ->orderBy('created_at','DESC') ->get(); } elseif (!$request->filter){ $messages = DB::table('sent_files') ->select('sent_files.file_id','sent_files.recipient_id','sent_files.cc_id','sent_files.created_at as sentDocumentCreatedAt','sent_files.updated_at as sentDocumentUpdatedAt','sent_files.date_diff','documents.*') ->join('users','users.id', "=", 'sent_files.recipient_id') ->join('documents','documents.id', "=", 'sent_files.file_id') ->where([['sent_files.recipient_id',"=",$user->id],['sent_files.date_diff',"=",'00:00:00']]) ->orWhere([['sent_files.cc_id',"=",$user->id],['sent_files.date_diff',"=",'00:00:00']]) ->orderBy('created_at','DESC') ->get(); } $notif = DB::table('sent_files') ->select(DB::raw('COUNT(1) as notif')) ->whereColumn('created_at','updated_at') // ->where('created_at', "=", DB::raw('updated_at')) ->where('recipient_id',$user->id) ->get(); return json_encode(["messages"=>$messages,"notification"=>$notif]); } public function register(Request $request) { $this->validate($request, [ 'name' => 'required|min:4', 'email' => 'required|email', 'password' => 'required|min:8', 'department' => 'required', ]); $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => bcrypt($request->password), 'department' => $request->department ]); $token = $user->createToken('Laravel8PassportAuth')->accessToken; return response()->json(['token' => $token], 200); } public function login(Request $request) { $data = [ 'email' => $request->email, 'password' => $request->password ]; if (auth()->attempt($data)) { $user = Auth::user(); Auth::login($user); $token = auth()->user()->createToken('AutoHub')->accessToken; return response()->json(['token' => $token], 200); } else { return response()->json(['error' => 'Unauthorized'], 401); } } public function loginThruApi(Request $request){ $url = 'https://autohub.ph/connect/api/v1/asa/api.php'; $parameters = array( 'key'=>$request->key, 'id'=>$request->id, ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($parameters)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $op = curl_exec ($ch); $err = curl_error($ch); //if you need curl_close ($ch); $response = json_decode($op,true); //dd($response); $url2 = 'https://autohub.ph/connect/api/v1/asa/api.php'; $parameters2 = array( 'key'=>"99799116300681218", 'company_id'=>$response['company'], ); $ch2 = curl_init(); curl_setopt($ch2, CURLOPT_URL, $url2); curl_setopt($ch2, CURLOPT_POST, 1); curl_setopt($ch2, CURLOPT_POSTFIELDS, http_build_query($parameters2)); curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true); $op2 = curl_exec ($ch2); $err2 = curl_error($ch2); //if you need curl_close ($ch2); $response2 = json_decode($op2,true); // dd($response, $response2); if(array_search($response['dealer'],array_column($response2,'deal_id')) === false){ return response()->json(["message"=>"invalid data"],400); } else { if(!$response['dept_id']){ return response(["message"=>"You have some information missing. Please contact Clarence Andaya"],400); } else if($response['status']){ $user = User::updateOrCreate(['uid'=>$response['u_id']],[ 'first_name'=>$response['u_fname'], 'middle_name'=>$response['u_mname'], 'last_name'=>$response['u_lname'], 'company'=>$response['company'], 'dealer'=>$response['dealer'], 'dept_id'=>$response['dept_id'], 'position'=>$response['u_position'], 'email'=>$response['email'], 'u_status'=>$response['u_status'], 'password'=>bcrypt($response['u_password']), 'dept_name'=>$response['dept_name'], 'access_rights'=>0 ]); $company = Company::updateOrCreate([ 'comp_id'=>$response['company'], 'comp_code'=>$response['comp_code'], 'comp_name'=>$response['comp_name'] ]); $department = Department::updateOrCreate([ 'department_id'=>$response['dept_id'], 'department_name'=>$response['dept_name'] ]); $dealer = Dealer::updateOrCreate([ 'dealer_id'=>$response['dealer'], 'comp_id'=>$response['company'], 'dealer_code'=>$response['deal_code'], 'dealer_name'=>$response['deal_name'], ]); Auth::login($user); $token = auth()->user()->createToken('AutoHub')->accessToken; return response()->json(['token' => $token,"response"=>$response], 200); } } dd('user is not authenticated'); } public function sendMessage(Request $request){ $user_id = Auth::user()->id; $date = Carbon::now()->timezone('Asia/Manila')->format('Y-m-d H:i:s'); $data = [ 'sender_id' => $user_id, 'file_id' => $request->file_id, 'message' => $request->message, 'created_at' => $date, 'updated_at' => $date ]; DB::table('messages')->insert($data); return json_encode(["message"=>"message sent!"]); } public function readMessage(Request $request){ $user_id = Auth::user()->id; $message_sender = DB::table('messages') ->select('messages.message','messages.created_at','users.id','users.first_name') ->join('users', 'users.id', "=", 'messages.sender_id') ->where('file_id',$request->file_id) ->orderBy('created_at','DESC') ->get(); return response()->json(["user"=>$user_id, "message"=>$message_sender]); } public function logout(Request $request) { Auth::guard('web')->logout(); return response()->json(["message"=>"user successfully logged out"]); } }
| ver. 1.4 |
.
| PHP 8.1.32 | Generation time: 0 |
proxy
|
phpinfo
|
Settings