penjadwalan-ga/app/Http/Controllers/Admin/ProgramController.php

242 lines
7.7 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Siswa;
use App\Models\Programs;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
class ProgramController extends Controller
{
/**
* Display a listing of the resource.
*/
// public function resizeGambar($requestFile, $tempatSimpan, $simpan, $index = 0)
// {
// $file = $requestFile;
//
// $filename = time() . '_' . $index . '.' . $file->getClientOriginalExtension();
//
// $resizedImage = Image::make($file);
// $resizedImage->orientate();
// $resizedImage->resize(500, 500, function ($constraint) {
// $constraint->aspectRatio();
// $constraint->upsize();
// });
//
//
// $imageEncoded = (string) $resizedImage->encode();
//
// $path = $tempatSimpan . $filename;
// Storage::put($path, $imageEncoded);
//
// $gambar = $simpan . $filename;
// return $gambar;
// }
public function index()
{
$data = Programs::all();
return view('admin.pages.program', compact('data'));
}
public function data($id){
$data = Programs::findOrFail($id);
return response()->json([
'id' => $data->id,
'level' => $data->level,
'level_number' => $data->level_number,
'kelas' => $data->kelas,
'goal' => $data->goal ?? '',
'penjelasan' => $data->penjelasan ?? '',
'capaian' => $data->capaian ?? '',
'penjelasan_tambahan' => $data->penjelasan_tambahan ?? '',
'gambar_load' => $data->gambar_load ?? '',
'gambar' => $data->gambar ?? '',
]);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'level' => 'required',
'level_number' => 'nullable|integer|in:1,2,3,4',
'kelas' => 'required',
'goal' => 'required',
'penjelasan' => 'required',
'capaian' => 'required',
'gambar' => 'required|image|mimes:jpeg,png,jpg,gif,svg',
], [
'level.required' => 'Level wajib diisi!',
'level_number.integer' => 'Level Number harus berupa angka!',
'level_number.in' => 'Level Number tidak valid!',
'kelas.required' => 'Kelas wajib diisi!',
'goal.required' => 'Goal wajib diisi!',
'penjelasan.required' => 'Penjelasan wajib diisi!',
'capaian.required' => 'Capaian wajib diisi!',
'gambar.required' => 'Gambar wajib diisi!',
'gambar.image' => 'Gambar harus berupa gambar!',
'gambar.mimes' => 'Format gambar yang diperbolehkan adalah jpeg, png, jpg, gif, svg',
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
$validated = $validator->validated();
if ($request->hasFile('gambar')) {
$file = $request->file('gambar');
$hashedName = md5(time() . $file->getClientOriginalName()) . '.' . $file->getClientOriginalExtension();
$file->storeAs('program', $hashedName, 'public');
$validated['gambar'] = 'program/' . $hashedName;
}
// lazy load jika nanti dibutuhkan
// if ($request->hasFile('gambar_load')) {
// $file = $request->file('gambar_load');
//
// $hashedName = md5(time() . $file->getClientOriginalName()) . '.' . $file->getClientOriginalExtension();
//
// $file->storeAs('program', $hashedName, 'public');
//
// $validated['gambar_load'] = 'program/' . $hashedName;
$validated['gambar_load'] = '';
Programs::create($validated);
return redirect('/admin/program')->with('success', 'Data Program berhasil disimpan');
}
/**
* Display the specified resource.
*/
public function show(string $id)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(string $id)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, string $id)
{
$data = Programs::find($id);
$validator = Validator::make($request->all(), [
'level' => 'required',
'level_number' => 'nullable|integer|in:1,2,3,4',
'kelas' => 'required',
'goal' => 'required',
'penjelasan' => 'required',
'capaian' => 'required',
], [
'level.required' => 'Level wajib diisi!',
'level_number.integer' => 'Level Number harus berupa angka!',
'level_number.in' => 'Level Number tidak valid!',
'kelas.required' => 'Kelas wajib diisi!',
'goal.required' => 'Goal wajib diisi!',
'penjelasan.required' => 'Penjelasan wajib diisi!',
'capaian.required' => 'Capaian wajib diisi!',
]);
$validated = $validator->validated();
if ($request->hasFile('gambar')) {
if ($data->gambar) {
$imagePath = storage_path('app/public/' . $data->gambar);
if (file_exists($imagePath)) {
unlink($imagePath);
}
}
$file = $request->file('gambar');
$hashedName = md5(time() . $file->getClientOriginalName()) . '.' . $file->getClientOriginalExtension();
$file->storeAs('program', $hashedName, 'public');
$validated['gambar'] = 'program/' . $hashedName;
}
// if ($request->hasFile('gambar_load')) {
// if ($data->gambar_load) {
// $imagePath = storage_path('app/public/' . $data->gambar_load);
// if (file_exists($imagePath)) {
// unlink($imagePath);
// }
// }
//
// $file = $request->file('gambar_load');
//
// $hashedName = md5(time() . $file->getClientOriginalName()) . '.' . $file->getClientOriginalExtension();
//
// $file->storeAs('program', $hashedName, 'public');
//
// $validated['gambar_load'] = 'program/' . $hashedName;
// }
// if ($request->file('gambar')) {
// $validatedDetail['gambar_load'] = $this->resizeGambar($request->file('gambar'), 'public/program/', 'program/', '0');
// if ($data->gambar_load != null || $data->gambar_load != "") {
// $filePath = 'storage/' . $data->gambar_load;
// if (file_exists($filePath)) {
// unlink($filePath);
// }
// }
// }
$validated['gambar_load'] = ''; // kosongi dulu
$data->update($validated);
return redirect('/admin/program')->with('success', 'Data Program berhasil diedit');
}
/**
* Remove the specified resource from storage.
*/
public function destroy(string $id)
{
$data = Programs::findOrFail($id);
if ($data->gambar) {
$imagePath = storage_path('app/public/' . $data->gambar);
if (file_exists($imagePath)) {
unlink($imagePath);
}
}
if ($data->gambar_load != null || $data->gambar_load != '') {
$imagePath = storage_path('app/public/' . $data->gambar_load);
if (file_exists($imagePath)) {
unlink($imagePath);
}
}
$data->delete();
return redirect('/admin/program')->with('success', 'Data Program berhasil dihapus');
}
}