Files
citrus-cms/routes/web.php
T
2026-04-28 21:15:09 +03:00

302 lines
15 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Auth;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
loginhtdedwqa
*/
Auth::routes();
oturumAc();
if(oturumisset("locale")) {
App::setLocale(oturum("locale"));
}
Route::get('/clear-cache', function() {
Artisan::call('cache:clear');
Artisan::call('config:clear');
Artisan::call('view:clear');
Artisan::call('queue:clear', [
'--force' => true
]);
//Artisan::call('vendor:publish');
return "Cache is cleared";
});
//Route::get("/storage/app/","files")
Route::get('/artisan-optimize', function() {
Artisan::call('optimize');
return "optimized";
});
Route::get('/get-token', function() {
return csrf_token();
});
Route::get('/cache/{size}/{month}/{day}/{file}',function($size,$month,$day,$file){
if($size=="large") $size = 1920;
if($size=="small") $size = 256;
if($size=="medium") $size = 512;
yonlendir(url("r.php?w=$size&p=storage/app/files/$month/$day/$file"));
});
Route::get('/',"ContentsController@index");
Route::get('/logout',"AdminController@logout");
Route::get('/home',"AdminController@default");
Route::get('/ajax/{var?}',"AjaxController@index");
Route::match(['get', 'post', 'put', 'delete'],'/admin-ajax/{var?}',"AdminAjaxController@index");
// PDF Editor API Routes (Web middleware group for session auth)
Route::prefix('api/pdf-editor')->group(function () {
// Annotation routes
Route::get('/annotations', [\App\Http\Controllers\Api\AnnotationController::class, 'index']);
Route::post('/annotations', [\App\Http\Controllers\Api\AnnotationController::class, 'store']);
Route::post('/annotations/sync', [\App\Http\Controllers\Api\AnnotationController::class, 'sync']);
Route::post('/annotations/delete', [\App\Http\Controllers\Api\AnnotationController::class, 'deleteMultiple']);
Route::get('/annotations/{annotation}', [\App\Http\Controllers\Api\AnnotationController::class, 'show']);
Route::put('/annotations/{annotation}', [\App\Http\Controllers\Api\AnnotationController::class, 'update']);
Route::delete('/annotations/{annotation}', [\App\Http\Controllers\Api\AnnotationController::class, 'destroy']);
Route::get('/action-history', [\App\Http\Controllers\Api\AnnotationController::class, 'actionHistory']);
Route::get('/version-annotations', [\App\Http\Controllers\Api\AnnotationController::class, 'versionAnnotations']);
// QR Code routes
Route::post('/qr-code/generate', [\App\Http\Controllers\Api\QRCodeController::class, 'generate']);
Route::get('/qr-code/{shapeId}', [\App\Http\Controllers\Api\QRCodeController::class, 'generateForAnnotation']);
// PDF Editor Lookup/Metadata routes
Route::get('/metadata/drawing-types', [\App\Http\Controllers\Api\PdfEditorLookupController::class, 'drawingTypes']);
Route::get('/metadata/drawings', [\App\Http\Controllers\Api\PdfEditorLookupController::class, 'drawings']);
Route::get('/metadata/files', [\App\Http\Controllers\Api\PdfEditorLookupController::class, 'files']);
Route::get('/metadata/weld-data', [\App\Http\Controllers\Api\PdfEditorLookupController::class, 'weldData']);
Route::post('/metadata/document-stage', [\App\Http\Controllers\Api\PdfEditorLookupController::class, 'updateDocumentStage']);
// Joint Widget / IC Log routes
Route::get('/ic-log-members', [\App\Http\Controllers\Api\PdfEditorLookupController::class, 'getICLogMembers']);
Route::get('/ic-log-member-details', [\App\Http\Controllers\Api\PdfEditorLookupController::class, 'getICLogMemberDetails']);
Route::get('/check-existing-weldmap', [\App\Http\Controllers\Api\PdfEditorLookupController::class, 'checkExistingWeldmapData']);
Route::get('/get-qualified-welders', [\App\Http\Controllers\Api\PdfEditorLookupController::class, 'getQualifiedWelders']);
Route::get('/get-type-of-weld-options', [\App\Http\Controllers\Api\PdfEditorLookupController::class, 'getTypeOfWeldOptions']);
Route::post('/save-joint-data', [\App\Http\Controllers\Api\AnnotationController::class, 'saveJointData']);
Route::post('/update-welder-assignment', [\App\Http\Controllers\Api\AnnotationController::class, 'updateWelderAssignment']);
Route::get('/get-joint-data', [\App\Http\Controllers\Api\AnnotationController::class, 'getJointData']);
});
// PDF Export route
Route::post('/export-pdf', [\App\Http\Controllers\Api\AnnotationController::class, 'exportPDF']);
// PDFM API Routes (PDF Markup - Web middleware group for session auth)
Route::prefix('api/pdfm')->group(function () {
// Spools
Route::get('/spools', [\App\Http\Controllers\Api\PdfmController::class, 'getSpools']);
Route::post('/spools', [\App\Http\Controllers\Api\PdfmController::class, 'createSpool']);
Route::get('/spools/generate-number', [\App\Http\Controllers\Api\PdfmController::class, 'generateSpoolNumber']);
// Elements
Route::get('/elements', [\App\Http\Controllers\Api\PdfmController::class, 'getElements']);
Route::post('/elements', [\App\Http\Controllers\Api\PdfmController::class, 'createElement']);
// Joints
Route::get('/joints', [\App\Http\Controllers\Api\PdfmController::class, 'getJoints']);
Route::post('/joints', [\App\Http\Controllers\Api\PdfmController::class, 'createJoint']);
Route::get('/joints/generate-number', [\App\Http\Controllers\Api\PdfmController::class, 'generateJointNumber']);
// Welders
Route::get('/welders', [\App\Http\Controllers\Api\PdfmController::class, 'getWelders']);
Route::post('/welders', [\App\Http\Controllers\Api\PdfmController::class, 'createWelder']);
// Welder Assignments
Route::post('/assign-welder', [\App\Http\Controllers\Api\PdfmController::class, 'assignWelder']);
});
// Surface Area API Routes
Route::prefix('api/surface-area')->middleware('auth')->group(function () {
Route::get('/elements', [\App\Http\Controllers\Api\SurfaceAreaController::class, 'getElements']);
Route::get('/diameters', [\App\Http\Controllers\Api\SurfaceAreaController::class, 'getDiameters']);
Route::get('/mto-total', [\App\Http\Controllers\Api\SurfaceAreaController::class, 'getMtoTotal']);
Route::get('/get-saved-items', [\App\Http\Controllers\Api\SurfaceAreaController::class, 'getSavedItems']);
Route::post('/save-calculation', [\App\Http\Controllers\Api\SurfaceAreaController::class, 'save']);
});
// Read-Only API Routes for Admin-Ajax logic
Route::prefix('api/read')->middleware('auth:sanctum,web')->group(function () {
Route::get('/ndt-request', [\App\Http\Controllers\Api\ApiReadOnlyController::class, 'ndtRequest']);
Route::get('/ndt-calculation', [\App\Http\Controllers\Api\ApiReadOnlyController::class, 'ndtCalculation']);
Route::get('/spool-area-release', [\App\Http\Controllers\Api\ApiReadOnlyController::class, 'spoolAreaRelease']);
Route::get('/spool-release-detail', [\App\Http\Controllers\Api\ApiReadOnlyController::class, 'spoolReleaseDetail']);
Route::get('/repair-table', [\App\Http\Controllers\Api\ApiReadOnlyController::class, 'repairTable']);
Route::get('/repair-table/welder-based-repair-ratio-distribution', [\App\Http\Controllers\Api\ApiReadOnlyController::class, 'welderBasedRepairRatioDistribution']);
Route::get('/repair-table/defect-type-by-welder', [\App\Http\Controllers\Api\ApiReadOnlyController::class, 'defectTypeByWelder']);
Route::get('/rfi-dashboard', [\App\Http\Controllers\Api\ApiReadOnlyController::class, 'rfiDashboard']);
Route::get('/welder-qualification-status', [\App\Http\Controllers\Api\ApiReadOnlyController::class, 'welderQualificationStatus']);
Route::get('/punch-list', [\App\Http\Controllers\Api\ApiReadOnlyController::class, 'punchList']);
Route::get('/naks-welders', [\App\Http\Controllers\Api\ApiReadOnlyController::class, 'naksWelders']);
// Test Packages
Route::get('/test-package/pivot', [\App\Http\Controllers\Api\ApiReadOnlyController::class, 'testPackagePivot']);
Route::get('/test-package/status-pivot', [\App\Http\Controllers\Api\ApiReadOnlyController::class, 'testPackageStatusPivot']);
Route::get('/test-package/summary', [\App\Http\Controllers\Api\ApiReadOnlyController::class, 'testPackageSummary']);
Route::get('/test-package/summary-2', [\App\Http\Controllers\Api\ApiReadOnlyController::class, 'testPackageSummary2']);
Route::get('/welder-qualification-table', [\App\Http\Controllers\Api\ApiReadOnlyController::class, 'welderQualificationTable']);
Route::get('/rfi-tasks', [\App\Http\Controllers\Api\ApiReadOnlyController::class, 'rfiTasks']);
Route::get('/rfi-status', [\App\Http\Controllers\Api\ApiReadOnlyController::class, 'rfiStatus']);
Route::get('/ndt-release-list', [\App\Http\Controllers\Api\ApiReadOnlyController::class, 'ndtReleaseList']);
Route::get('/paint-release-list', [\App\Http\Controllers\Api\ApiReadOnlyController::class, 'paintReleaseList']);
// Add more as they are verified
});
// Notification API Routes (Performance optimized with caching)
Route::prefix('api/notifications')->middleware('auth')->group(function () {
// Get user's notifications with pagination
Route::get('/list', [\App\Http\Controllers\NotificationController::class, 'getUserNotifications']);
// Get recent notifications for dropdown (cached)
Route::get('/recent', [\App\Http\Controllers\NotificationController::class, 'getRecentNotifications']);
// Get unread count (cached)
Route::get('/unread-count', [\App\Http\Controllers\NotificationController::class, 'getUnreadCount']);
// Get notification types with counts (for inbox sidebar)
Route::get('/types', [\App\Http\Controllers\NotificationController::class, 'getNotificationTypes']);
// Get notifications by type
Route::get('/by-type', [\App\Http\Controllers\NotificationController::class, 'getNotificationsByType']);
// Mark notification as read
Route::post('/mark-read/{id}', [\App\Http\Controllers\NotificationController::class, 'markAsRead']);
// Mark notification as unread
Route::post('/mark-unread/{id}', [\App\Http\Controllers\NotificationController::class, 'markAsUnread']);
// Mark all notifications as read
Route::post('/mark-all-read', [\App\Http\Controllers\NotificationController::class, 'markAllAsRead']);
// Delete notification
Route::delete('/{id}', [\App\Http\Controllers\NotificationController::class, 'delete']);
// Delete all read notifications
Route::post('/delete-read', [\App\Http\Controllers\NotificationController::class, 'deleteReadNotifications']);
});
// Yorum kaydetme rotası - AdminAjaxController'dan bağımsız
Route::post('/api/column-comment', [\App\Http\Controllers\ColumnCommentController::class, 'saveComment'])->middleware('auth');
// Inspection History Routes
Route::prefix('ajax/inspection-history')->middleware('auth')->group(function () {
Route::post('/upload', [\App\Http\Controllers\InspectionHistoryController::class, 'upload']);
Route::get('/list', [\App\Http\Controllers\InspectionHistoryController::class, 'list']);
Route::delete('/delete/{id}', [\App\Http\Controllers\InspectionHistoryController::class, 'delete']);
Route::post('/bulk-delete', [\App\Http\Controllers\InspectionHistoryController::class, 'bulkDelete']);
});
// Register Creator rotası
Route::post('/admin/register-creator/dispatch-jobs', [\App\Http\Controllers\RegisterCreatorController::class, 'dispatchJobs']);
Route::post('/admin/tp-creator/dispatch-jobs', [\App\Http\Controllers\TpCreatorController::class, 'dispatchJobs']);
// Notification filtered list route
Route::get('/admin/notifications/filtered-list', [\App\Http\Controllers\NotificationController::class, 'showFilteredList'])->middleware('auth')->name('notifications.filtered-list');
Route::get('/admin/notifications/get-filtered-data', [\App\Http\Controllers\NotificationController::class, 'getFilteredData'])->middleware('auth')->name('notifications.get-filtered-data');
$hash="admin";
Route::group(['prefix' => $hash, 'middleware' => 'auth'], function () {
Route::post('/feedback/save-statuses', function () {
foreach (request('statuses') as $id => $status) {
$item = \App\Models\FeedbackReport::find($id);
if ($item) {
$item->status = $status;
$item->save();
}
}
return back()->with('success', 'Statuses updated');
});
});
// Önbelleğe alınmış dashboard sayfası route'u
Route::get('/'.$hash.'/cached-dashboard', "AdminController@cachedDashboard");
Route::match(['get', 'post'],'/'.$hash,"AdminController@default");
Route::get("/$hash/contents","AdminController@default");
Route::match(['get', 'post', 'put', 'delete'],"/$hash/{id}","AdminController@default");
Route::get("/$hash/new/{type}","AdminController@new");
Route::get("/$hash/export/{tableName}/{fileName?}","AdminController@exportExcel");
Route::post("/$hash/import/{tableName}","AdminController@importExcel");
Route::get("/$hash/truncate/{tableName}","AdminController@truncateTable");
Route::get("/$hash/delete/{tableName}/{id}","AdminController@delete");
Route::post("/$hash/create/{tableName}","AdminController@create");
Route::get("/$hash/autocomplete/{tableName}/{columnName}","AdminController@autocomplete");
Route::match(['get', 'post'],"/$hash/autocomplete_type/{type}","AdminController@autocompleteType");
Route::get("/$hash/fuzzy-autocomplete/{tableName}/{columnName?}","AdminController@fuzzyAutocomplete")->name('fuzzy-autocomplete');
Route::get("/$hash/detail/{tableName}/{columnName}","AdminController@rowDetail");
Route::get("/$hash/to-json/{tableName}","AdminController@tableToJson");
Route::put("/$hash/save-json/{tableName}","AdminController@saveJson");
Route::post("/$hash/insert/{tableName}","AdminController@insertJson");
Route::delete("/$hash/remove/{tableName}","AdminController@removeJson");
Route::get("/$hash/get/{tableName}/{columnName}/{value}","AdminController@getDetail");
Route::get("/$hash/link-creator/{tableName}/{id}","AdminController@linkCreator");
Route::post("/$hash/clone-row/{tableName}","AdminController@cloneRow");
Route::get("/$hash/user-guide/{module?}","AdminController@userGuide");
Route::get('import-status', "AdminController@importStatus");
Route::get('glide/{path}', function($path){
$server = \League\Glide\ServerFactory::create([
'source' => app('filesystem')->disk('public')->getDriver(),
'cache' => storage_path('glide'),
]);
return $server->getImageResponse($path, Input::query());
})->where('path', '.+');
Route::match(['get', 'post'],'/admin/action/{action}/{type}',"AdminController@action2");
Route::match(['get', 'post'],"/$hash/{type}/{id}","AdminController@default");
Route::match(['get', 'post'],"/$hash/{type}/{id}/{action}","AdminController@action");
Route::get('/l-{lang?}/',"ContentsController@default_lang");
Route::get('/l-{lang?}/{slug?}',"ContentsController@default_lang");
Route::get('/l-{lang?}/',"ContentsController@index");
Route::match(['get', 'post'],'/{slug?}',"ContentsController@default");
Auth::routes();
Route::get('/home', [\App\Http\Controllers\HomeController::class, 'index'])->name('home');
Auth::routes();
Route::get('/home', [\App\Http\Controllers\HomeController::class, 'index'])->name('home');