diff --git a/app/Http/Controllers/ActivitiesAttendedController.php b/app/Http/Controllers/ActivitiesAttendedController.php index e7ae25e..3fbe3ca 100644 --- a/app/Http/Controllers/ActivitiesAttendedController.php +++ b/app/Http/Controllers/ActivitiesAttendedController.php @@ -114,25 +114,6 @@ class ActivitiesAttendedController extends Controller return response()->json(['success' => 'Record deleted successfully']); } - public function downloadProofs(Request $request, ProofDownloadService $proofDownloadService) - { - // Validate the request - $request->validate([ - 'ids' => 'required|string', - ]); - - $ids = json_decode($request->input('ids')); - - $result = $proofDownloadService->downloadProofs(ActivitiesAttended::class, $ids); - - if (isset($result['error'])) { - return back()->with('error', $result['error']); - } - - // Return the zip file as a download - return response()->download($result['filePath'], $result['fileName'])->deleteFileAfterSend(true); - } - public function getActivitiesAttendedResponses(Request $request) { $user = auth()->user(); diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php index 936fba0..b5358e2 100644 --- a/app/Http/Controllers/AdminController.php +++ b/app/Http/Controllers/AdminController.php @@ -11,6 +11,7 @@ use App\Models\IvOrganised; use App\Models\OnlineCourse; use App\Models\Patent; use App\Models\Publication; +use App\Services\ProofDownloadService; use Illuminate\Http\Request; class AdminController extends Controller @@ -69,6 +70,43 @@ class AdminController extends Controller { return view('pages.patents.index'); } + +public function downloadProofs(Request $request, ProofDownloadService $proofDownloadService) + { + // Validate the request + $request->validate([ + 'ids' => 'required|string', + 'model' => 'sometimes|string', + ]); + + $ids = json_decode($request->input('ids')); + $modelName = $request->input('model', 'ActivitiesAttended'); + + // Model mapping + $modelMap = [ + 'ActivitiesAttended' => ActivitiesAttended::class, + 'ActivitiesOrganised' => ActivitiesOrganised::class, + 'IvOrganised' => IvOrganised::class, + 'Publication' => Publication::class, + 'BooksPublished' => BooksPublished::class, + 'ExternalEngagement' => ExternalEngagement::class, + 'OnlineCourse' => OnlineCourse::class, + 'Patent' => Patent::class, + ]; + + // Get the model class from the map or default to ActivitiesAttended + $modelClass = $modelMap[$modelName] ?? ActivitiesAttended::class; + + $result = $proofDownloadService->downloadProofs($modelClass, $ids); + + if (isset($result['error'])) { + return back()->with('error', $result['error']); + } + + // Return the zip file as a download + return response()->download($result['filePath'], $result['fileName'])->deleteFileAfterSend(true); + } + public function analyticsActivitiesAttended() { $data = ActivitiesAttended::selectRaw('departments.name as department, COUNT(*) as count') diff --git a/resources/views/components/download-proofs.blade.php b/resources/views/components/download-proofs.blade.php index 00305ce..6fa187e 100644 --- a/resources/views/components/download-proofs.blade.php +++ b/resources/views/components/download-proofs.blade.php @@ -33,6 +33,12 @@ idsInput.value = JSON.stringify(selectedIds); form.appendChild(idsInput); + const modelInput = document.createElement('input'); + modelInput.type = 'hidden'; + modelInput.name = 'model'; + modelInput.value = "{{ $model ?? 'ActivitiesAttended' }}"; + form.appendChild(modelInput); + document.body.appendChild(form); form.submit(); } else { @@ -49,4 +55,4 @@ }); }); - + \ No newline at end of file diff --git a/resources/views/pages/activities-attended/index.blade.php b/resources/views/pages/activities-attended/index.blade.php index d80b419..40e42a4 100644 --- a/resources/views/pages/activities-attended/index.blade.php +++ b/resources/views/pages/activities-attended/index.blade.php @@ -52,7 +52,7 @@
- +