Files
HRM-System/routes/settings.php
2026-04-13 08:16:56 +08:00

123 lines
7.1 KiB
PHP

<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Settings\PasswordController;
use App\Http\Controllers\Settings\ProfileController;
use App\Http\Controllers\Settings\EmailSettingController;
use App\Http\Controllers\Settings\SettingsController;
use App\Http\Controllers\Settings\SystemSettingsController;
use App\Http\Controllers\Settings\CurrencySettingController;
use App\Http\Controllers\PlanOrderController;
use App\Http\Controllers\Settings\PaymentSettingController;
use App\Http\Controllers\Settings\WebhookController;
use App\Http\Controllers\StripePaymentController;
use App\Http\Controllers\PayPalPaymentController;
use App\Http\Controllers\BankPaymentController;
use App\Http\Controllers\ExperienceCertificateTemplateController;
use App\Http\Controllers\IpRestrictionController;
use App\Http\Controllers\JoiningLetterTemplateController;
use App\Http\Controllers\NocTemplateController;
use App\Http\Controllers\Settings\WorkingDaysSettingController;
use App\Http\Controllers\ZektoSettingsController;
use Inertia\Inertia;
/*
|--------------------------------------------------------------------------
| Settings Routes
|--------------------------------------------------------------------------
|
| Here are the routes for settings management
|
*/
// Payment routes accessible without plan check
Route::middleware(['auth', 'verified'])->group(function () {
Route::get('/payment-methods', [PaymentSettingController::class, 'getPaymentMethods'])->name('payment.methods');
Route::get('/enabled-payment-methods', [PaymentSettingController::class, 'getEnabledMethods'])->name('payment.enabled-methods');
Route::post('/plan-orders', [PlanOrderController::class, 'create'])->name('plan-orders.create');
Route::post('/stripe-payment', [StripePaymentController::class, 'processPayment'])->name('settings.stripe.payment');
});
Route::middleware(['auth', 'verified', 'plan.access'])->group(function () {
// Payment Settings (admin only)
Route::post('/payment-settings', [PaymentSettingController::class, 'store'])->name('payment.settings');
// Profile settings page with profile and password sections
Route::get('profile', function () {
return Inertia::render('settings/profile-settings');
})->name('profile');
// Routes for form submissions
Route::patch('profile', [ProfileController::class, 'update'])->name('profile.update');
Route::post('profile', [ProfileController::class, 'update']); // For file uploads with method spoofing
Route::delete('profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
Route::put('profile/password', [PasswordController::class, 'update'])->name('password.update');
// Email settings page
Route::get('settings/email', function () {
return Inertia::render('settings/components/email-settings');
})->name('settings.email');
// Email settings routes
Route::get('settings/email/get', [EmailSettingController::class, 'getEmailSettings'])->name('settings.email.get');
Route::post('settings/email/update', [EmailSettingController::class, 'updateEmailSettings'])->name('settings.email.update');
Route::post('settings/email/test', [EmailSettingController::class, 'sendTestEmail'])->name('settings.email.test');
// General settings page with system and company settings
Route::get('settings', [SettingsController::class, 'index'])->name('settings');
// System Settings routes
Route::post('settings/system', [SystemSettingsController::class, 'update'])->name('settings.system.update');
Route::post('settings/brand', [SystemSettingsController::class, 'updateBrand'])->name('settings.brand.update');
Route::post('settings/storage', [SystemSettingsController::class, 'updateStorage'])->name('settings.storage.update');
Route::post('settings/recaptcha', [SystemSettingsController::class, 'updateRecaptcha'])->name('settings.recaptcha.update');
Route::post('settings/chatgpt', [SystemSettingsController::class, 'updateChatgpt'])->name('settings.chatgpt.update');
Route::post('settings/cookie', [SystemSettingsController::class, 'updateCookie'])->name('settings.cookie.update');
Route::post('settings/seo', [SystemSettingsController::class, 'updateSeo'])->name('settings.seo.update');
Route::post('settings/cache/clear', [SystemSettingsController::class, 'clearCache'])->name('settings.cache.clear');
// Currency Settings routes
Route::post('settings/currency', [CurrencySettingController::class, 'update'])->name('settings.currency.update');
// Working Days Settings routes
Route::get('settings/working-days/get', [WorkingDaysSettingController::class, 'getWorkingDaysSettings'])->name('settings.working-days.get');
Route::post('settings/working-days/update', [WorkingDaysSettingController::class, 'updateWorkingDaysSettings'])->name('settings.working-days.update');
// Webhook Settings routes
Route::get('settings/webhooks', [WebhookController::class, 'index'])->name('settings.webhooks.index');
Route::post('settings/webhooks', [WebhookController::class, 'store'])->name('settings.webhooks.store');
Route::put('settings/webhooks/{webhook}', [WebhookController::class, 'update'])->name('settings.webhooks.update');
Route::delete('settings/webhooks/{webhook}', [WebhookController::class, 'destroy'])->name('settings.webhooks.destroy');
// Google Calendar Settings routes
Route::post('settings/google-calendar', [SystemSettingsController::class, 'updateGoogleCalendar'])->name('settings.google-calendar.update');
// IP Restriction Settings routes
Route::middleware('permission:manage-ip-restriction-settings')->group(function () {
Route::post('ip-restrictions', [IpRestrictionController::class, 'store'])->name('ip-restrictions.store');
Route::put('ip-restrictions/{ipRestriction}', [IpRestrictionController::class, 'update'])->name('ip-restrictions.update');
Route::delete('ip-restrictions/{ipRestriction}', [IpRestrictionController::class, 'destroy'])->name('ip-restrictions.destroy');
});
// Zekto Settings routes
Route::middleware('permission:manage-biomatric-attedance-settings')->group(function () {
Route::post('settings/zekto/update', [ZektoSettingsController::class, 'update'])->name('settings.zekto.update');
Route::post('settings/zekto/generate-token', [ZektoSettingsController::class, 'generateToken'])->name('settings.zekto.generate-token');
});
// NOC Settings routes
Route::middleware('permission:update-noc')->group(function () {
Route::post('settings/noc/update', [NocTemplateController::class, 'update'])->name('settings.noc.update');
});
// Joining Letter Settings routes
Route::middleware('permission:update-joining-letter')->group(function () {
Route::post('settings/joining-letter/update', [JoiningLetterTemplateController::class, 'update'])->name('settings.joining-letter.update');
});
// Experience Certificate Settings routes
Route::middleware('permission:update-experience-certificate')->group(function () {
Route::post('settings/experience-certificate/update', [ExperienceCertificateTemplateController::class, 'update'])->name('settings.experience-certificate.update');
});
});