Feat: Reusable download Proof Button
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user