iclop_v1/app/Http/Controllers/LearningFileController.php
2022-08-20 20:29:14 +07:00

198 lines
5.4 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Auth;
use Redirect;
use Session;
class LearningFileController extends Controller {
protected $filepath = 'public';
protected $dirname = 'learning';
public function index(Request $request) {
$entities = \App\LearningFile::select(
'learning_files.id',
'learning_files.guide',
'learning_files.testfile',
'learning_files.supplement',
'learning_files.other',
'learning_files.desc',
'topics.name'
)
->join(
'topics',
'topics.id','=','learning_files.topic'
)
->orderBy('topics.name','asc')
->get();
//$items = \App\Topic::all();
if (Auth::user()->roleid=='admin') {
return view('admin/learning/index')->with(compact('entities'));
} else {
return view('student/lfiles/index')->with(compact('entities'));
}
}
public function create()
{
//
$items = \App\Topic::pluck('name', 'id');
return view('admin/learning/create')->with(compact('items'));
}
public function store(Request $request)
{
//
$rules =[
'guide'=>'required',
'testfile'=>'required',
'supplement'=>'required'
];
$msg=[
'guide.required'=>'Guide file must not empty',
'testfile.required'=>'Test file must not empty',
'supplement.required'=>'Supplement file must not empty'
];
$validator=Validator::make($request->all(),$rules,$msg);
//jika data ada yang kosong
if ($validator->fails()) {
//refresh halaman
return Redirect::to('admin/learning/create')
->withErrors($validator);
} else {
$check = \App\LearningFile::where('topic','=',$request->get('topic'))->get();
if (sizeof($check)>0) {
$topic = \App\Topic::find($request->get('topic'));
$message = 'Learning File of '.$topic['name'].' is already exist!!';
//Session::flash('message',);
return Redirect::to('admin/learning/create')->withErrors($message);
} else {
$entity=new \App\LearningFile;
$entity->topic=$request->get('topic');
$file1=$request->file('guide')->store($this->dirname,$this->filepath);
$entity->guide=$file1;
$file2=$request->file('testfile')->store($this->dirname,$this->filepath);
$entity->testfile=$file2;
$file3=$request->file('supplement')->store($this->dirname,$this->filepath);
$entity->supplement=$file3;
$file4=$request->file('other');
if ($file4 != '') {
$file4=$request->file('other')->store($this->dirname,$this->filepath);
$entity->other=$file4;
}
$entity->save();
Session::flash('message','A New Learning File Stored');
return Redirect::to('admin/learning');
}
}
}
public function getTopic($fileid) {
$item = \App\LearningFile::find($fileid);
return $item->topic;
}
public function edit($id)
{
//
$topic = \App\Topic::find($this->getTopic($id));
$x=['data'=>$topic];
$fileid = $id;
return view('admin/learning/edit')->with($x)->with(compact('fileid'));
}
public function update(Request $request, $id) {
$entity=\App\LearningFile::find($id);
$change = false;
$dirpath = storage_path($this->dirname);
$file1 = $request->file('guide');
if ($file1!='') {
// File::delete(getPath($dirpath.$entity->guide));
$fname=$file1->store($this->dirname,$this->filepath);
$entity->guide=$fname;
$change=true;
}
$file2 = $request->file('testfile');
if ($file2!='') {
//File::delete(getPath($dirpath.$entity->testfile));
$fname=$file2->store($this->dirname,$this->filepath);
$entity->testfile=$fname;
$change=true;
}
$file3 = $request->file('supplement');
if ($file3!='') {
//File::delete(getPath($dirpath.$entity->supplement));
$fname=$file3->store($this->dirname,$this->filepath);
$entity->supplement=$fname;
$change=true;
}
$file4 = $request->file('other');
if ($file4!='') {
//File::delete(getPath($dirpath.$entity->other));
$fname=$file4->store($this->dirname,$this->filepath);
$entity->other=$fname;
$change=true;
}
if ($change) {
$entity->save();
Session::flash('message','A Learning File is changed');
} else {
Session::flash('message','Nothing is changed');
}
return Redirect::to('admin/learning');
}
public function destroy($id)
{
//
$entity = \App\LearningFile::find($id);
/*
$dirpath = storage_path('app\\public\\\');
File::delete(getPath($dirpath.$entity['guide']));
File::delete(getPath($dirpath.$entity['supplement']));
File::delete(getPath($dirpath.$entity['testfiles']));
if ($entity['other']!='') {
File::delete(getPath($dirpath.$entity['other']));
}
*/
$entity->delete();
Session::flash('message','Learning Files with Id='.$id.' is deleted');
return Redirect::to('admin/learning');
}
public function getPath($path) {
$res = str_replace('\\',DIRECTORY_SEPARATOR,$path);
return str_replace('/',DIRECTORY_SEPARATOR,$res);
}
}