diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php
index bf5fc25..f1df43b 100644
--- a/app/Http/Controllers/AdminController.php
+++ b/app/Http/Controllers/AdminController.php
@@ -7,6 +7,7 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Yajra\DataTables\Facades\DataTables;
use App\Models\ActivitiesAttended;
+use Illuminate\Support\Facades\Storage;
class AdminController extends Controller
{
@@ -22,6 +23,89 @@ class AdminController extends Controller
return view('admin.activities-attended-responses');
}
+ public function edit($id)
+ {
+ $response = ActivitiesAttended::findOrFail($id);
+ return view('admin.activities-attended.edit', compact('response'));
+ }
+
+ public function update(Request $request, $id)
+ {
+ $response = ActivitiesAttended::findOrFail($id);
+
+ // Validate the request data
+ $validated = $request->validate([
+ 'title' => 'required|string',
+ 'organising_institute' => 'required|string',
+ 'address' => 'required|string',
+ 'start_date' => 'required|date',
+ 'start_time' => 'required|date_format:H:i',
+ 'end_date' => 'required|date',
+ 'end_time' => 'required|date_format:H:i',
+ 'num_days' => 'required|integer',
+ 'activity_type' => 'required|string',
+ 'category' => 'required|string',
+ 'level' => 'required|string',
+ 'proof' => 'nullable|mimes:jpg,jpeg,png,pdf,doc,docx,zip',
+ ]);
+
+ // Combine start date and time
+ $startDateTime = date('Y-m-d H:i:s', strtotime("{$validated['start_date']} {$validated['start_time']}"));
+ $endDateTime = date('Y-m-d H:i:s', strtotime("{$validated['end_date']} {$validated['end_time']}"));
+
+ // Handle the file upload if a new file is provided
+ if ($request->hasFile('proof')) {
+ // Delete old file if exists
+ if ($response->proof && Storage::disk('public')->exists($response->proof)) {
+ Storage::disk('public')->delete($response->proof);
+ }
+
+ // Extract year from start_date
+ $year = date('Y', strtotime($validated['start_date']));
+ $username = $response->user->name;
+
+ $originalName = $request->file('proof')->getClientOriginalName();
+ $fileName = $username . '_' . $originalName;
+
+ // Create path structure: year/faculty_name
+ $folderPath = 'proofs/' . $year . '/' . $username;
+
+ // Store file in the specified path
+ $proofPath = $request->file('proof')->storeAs($folderPath, $fileName, 'public');
+
+ $response->proof = $proofPath;
+ }
+
+ // Update other fields
+ $response->title = $validated['title'];
+ $response->organising_institute = $validated['organising_institute'];
+ $response->address = $validated['address'];
+ $response->start_date = $startDateTime;
+ $response->end_date = $endDateTime;
+ $response->num_days = $validated['num_days'];
+ $response->activity_type = $validated['activity_type'];
+ $response->category = $validated['category'];
+ $response->level = $validated['level'];
+
+ $response->save();
+
+ return redirect()->route('admin.ActivitiesAttendedResponses')->with('status', 'Response updated successfully');
+ }
+
+ public function destroy($id)
+ {
+ $response = ActivitiesAttended::findOrFail($id);
+
+ // Delete the file if it exists
+ if ($response->proof && Storage::disk('public')->exists($response->proof)) {
+ Storage::disk('public')->delete($response->proof);
+ }
+
+ $response->delete();
+
+ return response()->json(['success' => 'Record deleted successfully']);
+ }
+
public function getActivitiesAttendedResponses()
{
$responses = ActivitiesAttended::with('user', 'department');
@@ -47,9 +131,14 @@ class AdminController extends Controller
})
->addColumn('action', function ($response) {
$viewButton = $response->proof
- ? 'View'
+ ? 'View'
: 'No Proof';
- return $viewButton;
+
+ $editButton = 'Edit';
+
+ $deleteButton = '';
+
+ return $viewButton . ' ' . $editButton . ' ' . $deleteButton;
})
->rawColumns(['action'])
->make(true);
diff --git a/resources/views/admin/activities-attended-responses.blade.php b/resources/views/admin/activities-attended-responses.blade.php
index 8b71715..a720c1d 100644
--- a/resources/views/admin/activities-attended-responses.blade.php
+++ b/resources/views/admin/activities-attended-responses.blade.php
@@ -58,13 +58,10 @@
-->
+@endsection
\ No newline at end of file
diff --git a/routes/web.php b/routes/web.php
index 3a3fc91..580506b 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -41,6 +41,13 @@ Route::middleware(['auth', CheckRole::class . ':Admin'])->group(function () {
Route::get('/admin', [AdminController::class, 'index'])->name('admin.dashboard');
Route::get('/admin/ActivitiesAttendedResponses', [AdminController::class, 'viewActivitiesAttendedResponses'])->name('admin.ActivitiesAttendedResponses');
Route::get('/admin/ActivitiesAttendedResponses/data', [AdminController::class, 'getActivitiesAttendedResponses'])->name('admin.ActivitiesAttendedResponses.data');
+ // In your routes file (web.php)
+ // Route::get('/admin/activities-attended/{id}/edit', 'Admin\ActivitiesAttendedController@edit')->name('admin.ActivitiesAttended.edit');
+ // Route::put('/admin/activities-attended/{id}', 'Admin\ActivitiesAttendedController@update')->name('admin.ActivitiesAttended.update');
+ // Route::delete('/admin/activities-attended/{id}', 'Admin\ActivitiesAttendedController@destroy')->name('admin.ActivitiesAttended.destroy');
+ Route::get('/admin/activities-attended/{id}/edit', [AdminController::class, 'edit'])->name('admin.ActivitiesAttended.edit');
+ Route::put('/admin/activities-attended/{id}', [AdminController::class, 'update'])->name('admin.ActivitiesAttended.update');
+ Route::delete('/admin/activities-attended/{id}', [AdminController::class, 'destroy'])->name('admin.ActivitiesAttended.destroy');
});
// Coordinator routes