feat(profile,publications): integrate working Google Scholar import flow and unified faculty profile system

This commit is contained in:
Harshil Vora
2025-10-18 02:53:32 -07:00
parent 8fe0ef8112
commit ba28588e38
19 changed files with 915 additions and 139 deletions

View File

@@ -2,8 +2,6 @@
use App\Http\Controllers\ActivitiesAttendedController;
use App\Http\Controllers\ActivitiesOrganisedController;
use App\Http\Controllers\ProfileController;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\RoleController;
use App\Http\Controllers\DepartmentController;
use App\Http\Controllers\UserController;
@@ -18,6 +16,7 @@ use App\Http\Controllers\OnlineCoursesController;
use App\Http\Controllers\PatentsController;
use App\Http\Controllers\PublicationsController;
use App\Http\Middleware\CheckRole;
use App\Http\Controllers\FacultyProfileController;
Route::get('/', function () {
return redirect('/login');
@@ -39,12 +38,6 @@ Route::get('/dashboard', function () {
})->middleware(['auth', 'verified'])->name('dashboard');
Route::middleware('auth')->group(function () {
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
});
// Activities Attended common routes
Route::delete('/activities-attended/{id}', [ActivitiesAttendedController::class, 'destroy'])->name('activitiesAttended.destroy');
@@ -199,6 +192,11 @@ Route::middleware(['auth', CheckRole::class . ':Coordinator'])->group(function (
Route::middleware(['auth', CheckRole::class . ':Faculty'])->group(function () {
Route::get('/faculty', [FacultyController::class, 'index'])->name('faculty.dashboard');
// Faculty Profile Routes - KEPT AS REQUESTED
Route::get('/faculty/profile', [FacultyProfileController::class, 'index'])->name('faculty.profile.index');
Route::get('/faculty/profile/edit', [FacultyProfileController::class, 'edit'])->name('faculty.profile.edit');
Route::put('/faculty/profile', [FacultyProfileController::class, 'update'])->name('faculty.profile.update');
// Activities Attended Routes
Route::get('/faculty/ActivitiesAttendedForm', [FacultyController::class, 'ActivitiesAttendedForm'])->name('faculty.ActivitiesAttendedForm');
Route::post('/faculty/ActivitiesAttendedFormResponse', [FacultyController::class, 'ActivitiesAttendedFormResponse'])->name('faculty.ActivitiesAttendedFormResponse');
@@ -262,6 +260,16 @@ Route::middleware(['auth', CheckRole::class . ':Faculty'])->group(function () {
Route::get('/faculty/PatentsResponses/data', [PatentsController::class, 'getPatentsResponses'])->name('faculty.PatentsResponses.data');
Route::get('/faculty/Patents/{id}/edit', [PatentsController::class, 'edit'])->name('faculty.Patents.edit');
Route::put('/faculty/Patents/{id}', [PatentsController::class, 'update'])->name('faculty.Patents.update');
// Google Scholar import routes (FIXED: changed fetchFromScholar to fetchScholar)
Route::post('/faculty/publications/fetch-scholar', [PublicationsController::class, 'fetchScholar'])
->name('faculty.publications.fetchScholar');
Route::post('/faculty/publications/import-scholar', [PublicationsController::class, 'importScholar'])
->name('faculty.publications.importScholar');
Route::post('/faculty/publications/import-selected', [PublicationsController::class, 'importSelected'])
->name('faculty.publications.importSelected');
});
Route::post('/missing-proofs/check', [MissingProofsController::class, 'checkAndSendEmails'])->name('missing-proofs.check');
@@ -286,7 +294,7 @@ Route::prefix('admin')->name('admin.')->group(function () {
Route::get('analytics/externalEngagement', [AdminController::class, 'analyticsExternalEngagement'])->name('analytics.externalEngagement');
Route::get('analytics/onlineCourse', [AdminController::class, 'analyticsOnlineCourse'])->name('analytics.onlineCourse');
Route::get('analytics/patent', [AdminController::class, 'analyticsPatent'])->name('analytics.patent');
Route::get('analytics/comparison', [AdminController::class, 'analyticsComparison'])->name('analytics.comparison');
Route::get('analytics/contribution', [AdminController::class, 'analyticsContribution'])->name('analytics.contribution');
});
@@ -296,3 +304,8 @@ Route::post('/admin/download-proofs', [AdminController::class, 'downloadProofs']
// Google Login Route
Route::get('/auth/google', [App\Http\Controllers\Auth\GoogleController::class, 'redirectToGoogle'])->name('google.login');
Route::get('/auth/google/callback', [App\Http\Controllers\Auth\GoogleController::class, 'handleGoogleCallback'])->name('google.callback');
// ✅ Fallback route alias to avoid 'profile.edit' missing error
Route::get('/profile', function () {
return redirect()->route('faculty.profile.edit');
})->name('profile.edit');