ldc-supportweb/routes/web.php
2022-05-31 17:37:37 +02:00

166 lines
6.9 KiB
PHP

<?php
use App\Http\Controllers\BrandController;
use App\Http\Controllers\Credit\AccountController;
use App\Http\Controllers\Credit\CreditLogController;
use App\Http\Controllers\Credit\EstimationController;
use App\Http\Controllers\FileController;
use App\Http\Controllers\HomeController;
use App\Http\Controllers\LabelController;
use App\Http\Controllers\LogController;
use App\Http\Controllers\MarkerController;
use App\Http\Controllers\ScheduleMacroController;
use App\Http\Controllers\ProjectController;
use App\Http\Controllers\ScheduleController;
use App\Http\Controllers\SiteController;
use App\Http\Controllers\TicketController;
use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| 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!
|
*/
Route::get('/', [HomeController::class, 'home'])->middleware('guest')->name('home');
Route::middleware(['throttle:credentials'])->group(function () {
// * guest:web middleware specified in AuthController
Auth::routes([
'login' => true,
'logout' => true,
'register' => false,
// For resetting passwords.
'reset' => true,
// For additional password confirmations.
'confirm' => true,
// For email verification.
'verify' => false
]);
});
// * Session Ping
Route::get('/ping', function () {
if (request()->isJson()) {
abort(404);
}
return auth()->check() ? response()->json() : response()->json([], 401);
})->withoutMiddleware('auth');
Route::middleware('auth:web')->group(function () {
// * Macro planning
Route::get('/macroplanning', [ScheduleMacroController::class, 'show'])->name('macroplanning.show');
Route::post('/activity', [ScheduleMacroController::class, 'postActivity'])->name('macroplanning.activity');
// * Logged user actions
Route::get('/users/change-password', [UserController::class, 'passwordReset'])->name('users.passwordReset');
Route::post('/users/change-password', [UserController::class, 'passwordResetSubmit'])
->name('users.passwordResetSubmit');
Route::get('/users/stats', [UserController::class, 'stats'])->name('users.stats');
// * Resources
Route::resource('ticket', TicketController::class)->except(['destroy']);
Route::resource('users', UserController::class);
Route::resource('labels', LabelController::class)->except('show');
Route::resource('brands', BrandController::class);
Route::resource('sites', SiteController::class)
->withoutMiddleware('xss')
->middleware('xss:description,todo');
Route::resource('projects', ProjectController::class)
->withoutMiddleware('xss')
->middleware('xss:description,todo');
Route::resource('projects.macro_markers', MarkerController::class)
->parameters([
'macro_markers' => 'marker'
]);
// * Brands and Accounts
Route::resource('credit_accounts', AccountController::class)->only(['index'])
->parameters([
'credit_accounts' => 'account'
]);
Route::resource('credit_accounts.credit_logs', CreditLogController::class)->only(['index'])
->parameters([
'credit_accounts' => 'account',
'credit_logs' => 'credit_log'
]);
Route::resource('brands.credit_accounts', AccountController::class)
->parameters([
'credit_accounts' => 'account'
]);
Route::get('/brand/{brand}/credit_accounts/{account}/credit', [AccountController::class, 'credit'])
->name('brands.credit_accounts.credit');
Route::put('/brand/{brand}/credit_accounts/{account}/credit', [AccountController::class, 'creditSubmit'])
->name('brands.credit_accounts.creditSubmit');
Route::resource('brands.credit_accounts.credit_logs', CreditLogController::class)
->only(['index'])
->parameters([
'credit_accounts' => 'account',
'credit_logs' => 'credit_log'
]);
// * LOGS and Files
Route::resource('logs', LogController::class)->only('index');
Route::resource('files', FileController::class)->only('index');
Route::resource('projects.logs', LogController::class);
Route::resource('projects.files', FileController::class);
Route::resource('sites.logs', LogController::class);
Route::resource('sites.files', FileController::class);
// * Ticket
Route::prefix('/ticket')->name('ticket.')->group(function () {
// * Estimation
Route::name('estimation.')->group(function () {
Route::get('/{ticket}/estimate', [EstimationController::class, 'estimate'])
->middleware('can:estimate,ticket')
->name('estimate');
Route::post('/{ticket}/estimate', [EstimationController::class, 'estimateSubmit'])
->middleware('can:estimate,ticket')
->name('estimateSubmit');
Route::post('/{ticket}/estimate/answer', [EstimationController::class, 'estimatePendingSubmit'])
->middleware('can:validateEstimate,ticket')
->name('estimatePendingSubmit');
});
Route::post('/{ticket}/assignTo', [TicketController::class, 'assignTo'])
->middleware('can:assignTo,ticket')
->name('assignTo');
Route::post('/{ticket}/reopen', [TicketController::class, 'reopen'])
->middleware('can:reopen,ticket')
->name('reopen');
Route::post('/{ticket}/status', [TicketController::class, 'changeStatus'])
->middleware('can:changeStatus,ticket')
->name('changeStatus');
Route::post('/{ticket}/subscribe', [TicketController::class, 'subscribe'])
->middleware('can:suscribeToTicket,ticket')
->name('subscribe');
Route::put('/{ticket}/archive', [TicketController::class, 'setToArchive'])
->middleware('can:changeStatus,ticket')
->name('archive');
Route::put('/{ticket}/message/create', [TicketController::class, 'createMessage'])
->middleware('can:createMessage,ticket')
->name('message.create');
Route::put('/{ticket}/message/{message}/update', [TicketController::class, 'updateMessage'])
->middleware('can:updateMessage,ticket,message')
->name('message.update');
});
Route::prefix('/schedule')->name('schedule.')->group(function () {
Route::get('/', [ScheduleController::class, 'index'])->name('index');
Route::post('/setCellContent', [ScheduleController::class, 'setCellContent'])
->name('setCellContent');
Route::post('/eraseCellContent', [ScheduleController::class, 'eraseCellContent'])
->name('eraseCellContent');
});
});