Files
click-erp/app/Http/Controllers/GeneralDocumentsController.php
2023-07-27 01:33:36 +00:00

200 lines
9.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models;
use Session;
use App\Http\Requests;
class GeneralDocumentsController extends Controller
{
public function index(){
//$document_arr = new Models\GeneralDocument;
$data = [
'page_title' => 'General Documents',
'current_user' => session('current_user')
];
return view('generaldocuments.index', $data);
}
public function listcategory($category){
//$document_arr = new Models\GeneralDocument;
//dd($category);
$data = [
'page_title' => ucfirst($category) . ' Documents',
'current_user' => session('current_user'),
'category' => $category
];
return view('generaldocuments.list-index', $data);
}
public function getDocumentsJson(Request $request)
{
#$this->log_query();
$document_arr = \DB::table('general_documents')
->join('auth_users', 'auth_users.id', '=', 'general_documents.uploaded_by')
->select('general_documents.id', 'general_documents.name', 'general_documents.filename', 'auth_users.name AS UploadedBy', 'general_documents.created_at')
->orderBy('general_documents.name', 'ASC')
->paginate(15);
if($request->has('keyword')){
$keyword = $request->keyword;
$document_arr = \DB::table('general_documents')
->join('auth_users', 'auth_users.id', '=', 'general_documents.uploaded_by')
->select('general_documents.id', 'general_documents.name', 'general_documents.filename', 'auth_users.name AS UploadedBy', 'general_documents.created_at')
->orderBy('general_documents.name', 'ASC')
->whereRaw("general_documents.name LIKE '%$keyword%' OR general_documents.description LIKE '%$keyword%' OR general_documents.filename LIKE '%$keyword%' OR auth_users.name LIKE '%$keyword%'")
->paginate(15);
}
return response()->json($document_arr);
}
public function getDocumentsCategoryJson(Request $request)
{
$this->log_query();
$category = $request->category;
$document_arr = \DB::table('general_documents')
->join('auth_users', 'auth_users.id', '=', 'general_documents.uploaded_by')
->select('general_documents.id', 'general_documents.name', 'general_documents.filename', 'auth_users.name AS UploadedBy', 'general_documents.created_at')
->where('general_documents.category', $category)
->orderBy('general_documents.name', 'ASC')
->paginate(15);
if($request->has('keyword')){
$keyword = $request->keyword;
$document_arr = \DB::table('general_documents')
->join('auth_users', 'auth_users.id', '=', 'general_documents.uploaded_by')
->select('general_documents.id', 'general_documents.name', 'general_documents.filename', 'auth_users.name AS UploadedBy', 'general_documents.created_at')
->orderBy('general_documents.name', 'ASC')
->where('general_documents.category', $category)
->whereRaw("general_documents.name LIKE '%$keyword%' OR general_documents.description LIKE '%$keyword%' OR general_documents.filename LIKE '%$keyword%' OR auth_users.name LIKE '%$keyword%'")
->paginate(15);
}
return response()->json($document_arr);
}
public function create()
{
//$auth_users = Models\SystemUser::pluck('name', 'id');
$data = [
'page_title' => 'Upload Document',
//'auth_users' => $auth_users
];
return view('generaldocuments.create', $data);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Requests\GeneralDocumentsRequest $request)
{
if ($request->has('document_one') && $request->has('document_one_name')) {
if ($request->file('document_one')->isValid()) {
$filename = "erp_" . time() . str_random(6) . "." . $request->document_one->extension();
$request->document_one->storeAs('general_files', $filename, 'public');
$document_arr['filename'] = $filename;
$document_arr['file_extension'] = $request->document_one->extension();
$document_arr['file_reff'] = time() . uniqid();
$document_arr['name'] = $request->document_one_name;
$document_arr['uploaded_by'] = session('current_user.id');
$result = Models\GeneralDocument::create($document_arr);
}
}
if ($request->has('document_two') && $request->has('document_two_name')) {
if ($request->file('document_two')->isValid()) {
$filename = "erp_" . time() . str_random(6) . "." . $request->document_two->extension();
$request->document_two->storeAs('general_files', $filename, 'public');
$document_arr['filename'] = $filename;
$document_arr['file_extension'] = $request->document_two->extension();
$document_arr['file_reff'] = time() . uniqid();
$document_arr['name'] = $request->document_two_name;
$document_arr['uploaded_by'] = session('current_user.id');
$result = Models\GeneralDocument::create($document_arr);
}
}
if ($request->has('document_three') && $request->has('document_three_name')) {
if ($request->file('document_three')->isValid()) {
$filename = "erp_" . time() . str_random(6) . "." . $request->document_three->extension();
$request->document_three->storeAs('general_files', $filename, 'public');
$document_arr['filename'] = $filename;
$document_arr['file_extension'] = $request->document_three->extension();
$document_arr['file_reff'] = time() . uniqid();
$document_arr['name'] = $request->document_three_name;
$document_arr['uploaded_by'] = session('current_user.id');
$result = Models\GeneralDocument::create($document_arr);
}
}
Session::flash('success_message', 'Document(s) successfully uploaded');
return redirect(url('generaldocuments'));
}
public function storeBak(Request $request)
{
$request->validate([
'file' => 'required|mimes:csv,txt,xlx,xls,pdf|max:2048'
]);
$fileName = time().'.'.$request->file->extension();
$request->file->move(public_path('uploads'), $fileName);
return back()
->with('success','You have successfully uploaded the file.');
}
public function edit($id){
$document = Models\GeneralDocument::findOrFail($id);
$data = [
'page_title' => 'Update Document',
'document' => $document
];
return view('generaldocuments.edit', $data);
}
public function update(Request $request, $id)
{
$document = Models\GeneralDocument::findOrFail($id);
if ($request->has('document_one')) {
if ($request->file('document_one')->isValid()) {
$filename = "erp_" . time() . str_random(6) . "." . $request->document_one->extension();
$request->document_one->storeAs('general_files', $filename, 'public');
$document->filename = $filename;
$document->file_extension = $request->document_one->extension();
$document->file_reff = time() . uniqid();
}
}
$document->uploaded_by = session('current_user.id');
$document->name = $request->name;
$document->save();
Session::flash('success_message', 'Document successfully Updated');
return redirect(url('generaldocuments'));
}
public function getDocument($id)
{
$general_file = Models\GeneralDocument::find($id);
if (!$general_file) {
return redirect(url('generaldocuments'));
}
//PDF file is stored under project/public/download/info.pdf
$file = public_path('documents/general_files/') . $general_file->filename;
$headers = []; //['Content-Type: application/pdf'];
$filename = $general_file->name; // . "_" . $general_file->file_reff;
$filename = $this->cleanStr($filename);
$filename = $filename . "_Click_ERP_FILE" . "." . $general_file->file_extension;
return \Response::download($file, $filename, $headers);
}
public function cleanStr($string){
// Replaces all spaces with hyphens.
$string = str_replace(' ', '-', $string);
// Removes special chars.
$string = preg_replace('/[^A-Za-z0-9\-]/', '', $string);
// Replaces multiple hyphens with single one.
$string = preg_replace('/-+/', '_', $string);
return $string;
}
}