Update workshop
This commit is contained in:
@@ -0,0 +1,189 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Web\Program;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Program\Workshop;
|
||||
use App\Models\Program\SesiWorkshop;
|
||||
use App\Models\Program\PesertaWorkshop;
|
||||
use App\Models\Program\Aktivitas;
|
||||
use App\Enums\StatusWorkshop;
|
||||
|
||||
class WorkshopController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
$title = 'Workshop';
|
||||
|
||||
$summary = ([
|
||||
'kegiatan' => Workshop::count(),
|
||||
'lokakarya' => Workshop::where('jenis', 'lokakarya')->count(),
|
||||
'pelatihan' => Workshop::where('jenis', 'pelatihan')->count(),
|
||||
'sosialisasi' => Workshop::where('jenis', 'sosialisasi')->count(),
|
||||
'sesi' => SesiWorkshop::count(),
|
||||
'peserta' => PesertaWorkshop::count(),
|
||||
]);
|
||||
|
||||
$query = Workshop::query();
|
||||
|
||||
if ($request->filled('search')) {
|
||||
$search = $request->search;
|
||||
$query->where(function($q) use ($search) {
|
||||
$q->where('judul', 'ilike', "%{$search}%")
|
||||
->orWhere('deskripsi', 'ilike', "%{$search}%");
|
||||
});
|
||||
}
|
||||
|
||||
if ($request->filled('jenis')) {
|
||||
$query->where('jenis', $request->jenis);
|
||||
}
|
||||
|
||||
if ($request->filled('status')) {
|
||||
$query->where('status', $request->status);
|
||||
}
|
||||
|
||||
if ($request->filled('tanggal_awal') && $request->filled('tanggal_akhir')) {
|
||||
$query->whereBetween('tanggal_awal', [$request->tanggal_awal, $request->tanggal_akhir]);
|
||||
} elseif ($request->filled('tanggal_awal')) {
|
||||
$query->where('tanggal_awal', '>=', $request->tanggal_awal);
|
||||
} elseif ($request->filled('tanggal_akhir')) {
|
||||
$query->where('tanggal_akhir', '<=', $request->tanggal_akhir);
|
||||
}
|
||||
|
||||
$perPage = $request->input('per_page', 10);
|
||||
$workshops = $query->latest()->paginate($perPage);
|
||||
|
||||
return view('program.workshop.index', compact('workshops', 'summary', 'title'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$programs = Aktivitas::latest()->get();
|
||||
return view('program.workshop.add', compact('programs'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'program_aktivitas_id' => 'nullable|integer',
|
||||
'judul' => 'required|string|max:255',
|
||||
'jenis' => 'required|string',
|
||||
'tanggal_awal' => 'required|date',
|
||||
'tanggal_akhir' => 'required|date|after_or_equal:tanggal_awal',
|
||||
'status' => 'required|string',
|
||||
'deskripsi' => 'nullable|string',
|
||||
], [
|
||||
'program_aktivitas_id.integer' => 'Program aktivitas harus berupa angka.',
|
||||
|
||||
'judul.required' => 'Judul wajib diisi.',
|
||||
'judul.string' => 'Judul harus berupa teks.',
|
||||
'judul.max' => 'Judul maksimal 255 karakter.',
|
||||
|
||||
'jenis.required' => 'Jenis wajib diisi.',
|
||||
'jenis.string' => 'Jenis harus berupa teks.',
|
||||
|
||||
'tanggal_awal.required' => 'Tanggal awal wajib diisi.',
|
||||
'tanggal_awal.date' => 'Tanggal awal harus berupa tanggal yang valid.',
|
||||
|
||||
'tanggal_akhir.required' => 'Tanggal akhir wajib diisi.',
|
||||
'tanggal_akhir.date' => 'Tanggal akhir harus berupa tanggal yang valid.',
|
||||
'tanggal_akhir.after_or_equal' => 'Tanggal akhir harus setelah atau sama dengan tanggal awal.',
|
||||
|
||||
'status.required' => 'Status wajib diisi.',
|
||||
'status.string' => 'Status harus berupa teks.',
|
||||
|
||||
'deskripsi.string' => 'Deskripsi harus berupa teks.',
|
||||
]);
|
||||
|
||||
$workshop = Workshop::create([
|
||||
'judul' => $request->judul,
|
||||
'jenis' => $request->jenis,
|
||||
'tanggal_awal' => $request->tanggal_awal,
|
||||
'tanggal_akhir' => $request->tanggal_akhir,
|
||||
'status' => $request->status,
|
||||
'deskripsi' => $request->deskripsi,
|
||||
'program_aktivitas_id' => $request->program_aktivitas_id ?? null,
|
||||
'created_by' => auth()->user()->id,
|
||||
'updated_by' => auth()->user()->id,
|
||||
]);
|
||||
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Workshop berhasil disimpan sebagai Draft.'
|
||||
]);
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
$workshop = Workshop::findOrFail($id);
|
||||
$programs = Aktivitas::latest()->get();
|
||||
|
||||
return view('program.workshop.edit', compact('workshop', 'programs'));
|
||||
}
|
||||
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$validated = $request->validate([
|
||||
'program_aktivitas_id' => 'nullable|integer',
|
||||
'judul' => 'required|string|max:255',
|
||||
'jenis' => 'required|string',
|
||||
'tanggal_awal' => 'required|date',
|
||||
'tanggal_akhir' => 'required|date|after_or_equal:tanggal_awal',
|
||||
'status' => 'required|string',
|
||||
'deskripsi' => 'nullable|string',
|
||||
], [
|
||||
'program_aktivitas_id.integer' => 'Program aktivitas harus berupa angka.',
|
||||
|
||||
'judul.required' => 'Judul wajib diisi.',
|
||||
'judul.string' => 'Judul harus berupa teks.',
|
||||
'judul.max' => 'Judul maksimal 255 karakter.',
|
||||
|
||||
'jenis.required' => 'Jenis wajib diisi.',
|
||||
'jenis.string' => 'Jenis harus berupa teks.',
|
||||
|
||||
'tanggal_awal.required' => 'Tanggal awal wajib diisi.',
|
||||
'tanggal_awal.date' => 'Tanggal awal harus berupa tanggal yang valid.',
|
||||
|
||||
'tanggal_akhir.required' => 'Tanggal akhir wajib diisi.',
|
||||
'tanggal_akhir.date' => 'Tanggal akhir harus berupa tanggal yang valid.',
|
||||
'tanggal_akhir.after_or_equal' => 'Tanggal akhir harus setelah atau sama dengan tanggal awal.',
|
||||
|
||||
'status.required' => 'Status wajib diisi.',
|
||||
'status.string' => 'Status harus berupa teks.',
|
||||
|
||||
'deskripsi.string' => 'Deskripsi harus berupa teks.',
|
||||
]);
|
||||
|
||||
$workshop = Workshop::findOrFail($id);
|
||||
|
||||
$workshop->update([
|
||||
'judul' => $request->judul,
|
||||
'jenis' => $request->jenis,
|
||||
'tanggal_awal' => $request->tanggal_awal,
|
||||
'tanggal_akhir' => $request->tanggal_akhir,
|
||||
'status' => $request->status,
|
||||
'deskripsi' => $request->deskripsi,
|
||||
'program_aktivitas_id' => $request->program_aktivitas_id ?? null,
|
||||
'updated_by' => auth()->user()->id,
|
||||
]);
|
||||
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Perubahan workshop berhasil disimpan.'
|
||||
]);
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
$workshop = Workshop::findOrFail($id);
|
||||
$workshop->update(['deleted_by' => auth()->user()->id]);
|
||||
|
||||
$workshop->delete();
|
||||
|
||||
return response()->json([
|
||||
'status' => 'success',
|
||||
'message' => 'Workshop berhasil dihapus.'
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user