Feat: Reusable download Proof Button

This commit is contained in:
Sallu9007
2025-05-13 19:11:13 +05:30
parent 124e629f4a
commit 17ebb87bb7
5 changed files with 56 additions and 23 deletions

View File

@@ -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')