<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Karyawan;
use Validator;
use Storage;
use App\Http\Requests\KaryawanRequest;
class KaryawanController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$karyawan_list = Karyawan::orderBy('id','desc')->where('deleted','0')->paginate(3);
$jumlah_karyawan = $karyawan_list->count();
return view('chaps8.karyawan',compact('halaman','karyawan_list','jumlah_karyawan'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('chaps8.create',compact('halaman'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
private function uploadFoto(KaryawanRequest $request){
$foto = $request->file('foto');
$ext = $foto->getClientOriginalExtension();
if($request->file('foto')->isValid()){
$namaFoto = date('YmdHis').".".$ext;
$upload_path = 'fotoupload';
$request->file('foto')->move($upload_path,$namaFoto);
return $namaFoto;
}
return false;
}
public function store(KaryawanRequest $request)
{
$input = $request->all();
//upload foto
if ($request->hasFile('foto')) {
$input['foto'] = $this->uploadFoto($request);
}
//insert data
$input['deleted'] = 0;
Karyawan::create($input);
return redirect('karyawan');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$karyawan = Karyawan::findOrFail($id);
return view('chaps8.show',compact('halaman','karyawan'));
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$karyawan = Karyawan::findOrFail($id);
return view('chaps8.edit',compact('karyawan'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function cari(Request $request)
{
$cari = $request['cari'];
$hasil_nama = Karyawan::where('nama', 'like','%'.$cari.'%')->orWhere('nip', 'like','%'.$cari.'%')->paginate(3);
$t_nama = $hasil_nama->count();
$jumlah_karyawan = $t_nama;
$karyawan_list = $hasil_nama;
return view('chaps8.karyawan',compact('halaman','karyawan_list','jumlah_karyawan'));
}
public function HapusFoto(Karyawan $karyawan)
{
$exist=Storage::disk('foto')->exists($karyawan->foto);
if(isset($karyawan->foto)&&$exist){
$deleted = Storage::disk('foto')->delete($karyawan->foto);
if($deleted){
return true;
}
return false;
}
}
public function DeleteFoto($request)
{
$file = 'fotoupload/'.$request->foto;
if (is_file($file)) {
unlink($file);
}
}
public function update(Karyawan $karyawan,Request $request)
{
$input=$request->all();
$validation = Validator::make($input,[
'nip'=>'required|string|size:5',
'nama'=>'required|string|max:35|min:5',
'tgl_lahir'=>'required|date',
'gender'=>'required|in:L,P',
'foto'=>'sometimes|image|max:500|mimes:jpg,jpeg,bmp,png,JPG,JPEG,PNG',
]);
if($validation->passes())
{
//cek ada foto apa ga?
if($request->hasFile('foto')){
$this->DeleteFoto($karyawan);
$ext = $request['foto']->getClientOriginalExtension();
$namaFoto = date('YmdHis').".".$ext;
$upload_path = 'fotoupload';
$request->file('foto')->move($upload_path,$namaFoto);
$input['foto'] = $namaFoto;
}
$update = Karyawan::find($input['id']);
$update->update($input);
return redirect('karyawan');
}
return back()->withInput()->withErrors($validation);
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy(Karyawan $karyawan)
{
$this->DeleteFoto($karyawan);
$user = Karyawan::find($karyawan->id);
$user->delete();
return redirect('karyawan');
}
}