Files
citrus/routes/web.php
T

165 lines
7.7 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\Route;
use App\Http\Controllers\PageController;
use App\Http\Controllers\BlogController;
use App\Http\Controllers\TemplatePreviewController;
use App\Http\Controllers\Api\SiteTranslationController;
use App\Models\Page;
// Subdomain Routes
Route::domain('akademi.truncgil.com.tr')->group(function () {
Route::get('/', [PageController::class, 'showAkademi']);
});
// Debug Route - Veritabanı kontrolü
Route::redirect('/index', '/', 301);
Route::redirect('/index.php', '/', 301);
Route::redirect('/index.html', '/', 301);
// Debug Route - Veritabanı kontrolü (Sadece super_admin)
Route::get('/debug-homepage', function () {
$page = Page::with(['headerTemplate', 'footerTemplate'])
->where('is_homepage', true)
->where('status', 'published')
->latest('updated_at')
->first();
if (!$page) {
return response()->json([
'error' => 'Homepage bulunamadı!',
'all_pages' => Page::select('id', 'title', 'slug', 'is_homepage', 'status')->get(),
]);
}
return response()->json([
'page' => [
'id' => $page->id,
'title' => $page->title,
'slug' => $page->slug,
'is_homepage' => $page->is_homepage,
'status' => $page->status,
],
'header_template' => [
'id' => $page->header_template_id,
'exists' => $page->headerTemplate ? true : false,
'title' => $page->headerTemplate?->title,
'data_filled' => !empty($page->header_data),
'data' => $page->header_data,
],
'footer_template' => [
'id' => $page->footer_template_id,
'exists' => $page->footerTemplate ? true : false,
'title' => $page->footerTemplate?->title,
'data_filled' => !empty($page->footer_data),
'data' => $page->footer_data,
],
'sections' => [
'count' => is_array($page->sections) ? count($page->sections) : 0,
'data' => $page->sections,
],
'sections_data' => [
'count' => is_array($page->sections_data) ? count($page->sections_data) : 0,
'data' => $page->sections_data,
],
]);
})->middleware(['auth', \App\Http\Middleware\SuperAdminMiddleware::class]);
// Language Switch
Route::get('/lang/{locale}', function ($locale) {
if (function_exists('switch_language')) {
switch_language($locale);
} else {
$language = \App\Models\Language::findByCode($locale);
if ($language && $language->is_active) {
app()->setLocale($locale);
session(['locale' => $locale]);
}
}
return redirect()->back();
})->name('language.switch');
// Homepage -> admin panelinde "is_homepage" olarak işaretli sayfa dinamik olarak gösterilir
Route::get('/', [PageController::class, 'index'])->name('homepage');
// Blog
Route::get('/blog', [BlogController::class, 'index'])->name('blog.index');
Route::get('/blog/{slug}', [BlogController::class, 'show'])->name('blog.show');
Route::post('/blog/{slug}/comment', [BlogController::class, 'storeComment'])->name('blog.comment.store');
// Template Preview (admin panel için)
Route::any('/admin/template-preview', [TemplatePreviewController::class, 'preview'])
->middleware(['auth'])
->name('template.preview');
// Site Translations API (DevExtreme DataGrid için)
Route::prefix('admin/api')->middleware(['auth', \App\Http\Middleware\SuperAdminMiddleware::class])->group(function () {
Route::get('/site-translations', [SiteTranslationController::class, 'index'])->name('api.site-translations.index');
Route::post('/site-translations', [SiteTranslationController::class, 'store'])->name('api.site-translations.store');
Route::put('/site-translations/{id}', [SiteTranslationController::class, 'update'])->name('api.site-translations.update');
Route::delete('/site-translations/{id}', [SiteTranslationController::class, 'destroy'])->name('api.site-translations.destroy');
Route::post('/site-translations/batch-update', [SiteTranslationController::class, 'batchUpdate'])->name('api.site-translations.batch-update');
Route::post('/site-translations/batch-destroy', [SiteTranslationController::class, 'batchDestroy'])->name('api.site-translations.batch-destroy');
});
// Products & Services
Route::redirect('/urun-hizmet/Yazılım Danışmanlık', '/urun-hizmet/yazilim-danismanlik', 301);
Route::get('/urun-hizmet/{slug}', [\App\Http\Controllers\ProductController::class, 'show'])->name('products.show');
// Music Productions
Route::get('/muzik-produksiyonlari', [\App\Http\Controllers\MusicProductionController::class, 'index'])->name('music-productions.index');
Route::get('/muzik-produksiyonlari/{slug}', [\App\Http\Controllers\MusicProductionController::class, 'show'])->name('music-productions.show');
// Career
Route::get('/kariyer', [\App\Http\Controllers\CareerController::class, 'index'])->name('career.index');
Route::get('/staj-basvurusu', [\App\Http\Controllers\CareerController::class, 'internship'])->name('career.internship');
Route::post('/kariyer', [\App\Http\Controllers\CareerController::class, 'store'])->name('career.store');
// Intern Portal
Route::get('/stajyer/giris', [\App\Http\Controllers\CareerController::class, 'internLoginForm'])->name('intern.login');
Route::post('/stajyer/giris', [\App\Http\Controllers\CareerController::class, 'internLogin'])->name('intern.login.submit');
Route::get('/stajyer/panel', [\App\Http\Controllers\CareerController::class, 'internDashboard'])->name('intern.dashboard');
Route::post('/stajyer/form-yukle', [\App\Http\Controllers\CareerController::class, 'uploadInternshipForm'])->name('intern.upload-form');
Route::post('/stajyer/github-kaydet', [\App\Http\Controllers\CareerController::class, 'saveGithubRepo'])->name('intern.save-github');
Route::get('/stajyer/gunluk-indir', [\App\Http\Controllers\CareerController::class, 'downloadMarkdown'])->name('intern.download-journal');
Route::post('/stajyer/cikis', [\App\Http\Controllers\CareerController::class, 'internLogout'])->name('intern.logout');
// Payment Process
Route::post('/payment/process', [\App\Http\Controllers\PaymentController::class, 'process'])->name('payment.process');
Route::any('/payment/success', [\App\Http\Controllers\PaymentController::class, 'success'])->name('payment.success');
Route::any('/payment/fail', [\App\Http\Controllers\PaymentController::class, 'fail'])->name('payment.fail');
// Logo Preview
Route::get('/logo-preview', function (Illuminate\Http\Request $request) {
$path = $request->query('path');
$bg = $request->query('bg', 'ffffff');
if (!$path) abort(404);
return "
<html>
<head>
<title>Logo Preview</title>
<style>
body { margin: 0; padding: 0; display: flex; align-items: center; justify-content: center; min-height: 100vh; background-color: #$bg; }
img { max-width: 90%; max-height: 90vh; }
</style>
</head>
<body>
<img src='" . asset('storage/' . $path) . "' />
</body>
</html>";
})->name('logo.preview');
// Sitemap
Route::get('/sitemap.xml', [\App\Http\Controllers\SitemapController::class, 'index'])->name('sitemap');
// Proposals Public Interface
Route::get('/teklif/{slug}', [\App\Http\Controllers\ProposalController::class, 'show'])->name('proposals.show');
Route::post('/teklif/{slug}/action', [\App\Http\Controllers\ProposalController::class, 'action'])->name('proposals.action');
// Nested Pages (Parent/Child)
Route::get('/{parentSlug}/{slug}', [PageController::class, 'showNested'])->name('page.show_nested');
// Pages (en sonda olmalı - catch-all)
Route::get('/{slug}', [PageController::class, 'show'])->name('page.show');