Files
Investidor-V2/routes/investment.php
T
2026-10-20 11:39:25 +02:00

61 lines
5.2 KiB
PHP

<?php
use App\Http\Controllers\InvestmentContextController;
use App\Http\Controllers\InvestmentDiscoveryController;
use App\Http\Controllers\InvestmentSubmissionController;
use App\Http\Controllers\InvestmentWorkspaceController;
use App\Http\Controllers\PortalContactController;
use App\Http\Controllers\PortalManagementController;
use App\Http\Middleware\PrivateInvestmentResponse;
use Illuminate\Support\Facades\Route;
Route::get('/educacao', [InvestmentDiscoveryController::class, 'index'])->name('investment.education');
Route::redirect('/clusters', '/carteira?kind=cluster');
Route::redirect('/corredores', '/carteira?kind=corridor');
Route::redirect('/projectos-ancora', '/carteira?kind=project');
Route::redirect('/portal-do-investidor', '/');
Route::redirect('/portal-do-investidor/oportunidades', '/oportunidades');
Route::get('/portal-do-investidor/oportunidades/{slug}', fn (string $slug) => redirect('/oportunidades/'.rawurlencode($slug), 301));
Route::inertia('/sobre', 'portal/about')->name('institutional.about');
Route::inertia('/contacto', 'portal/contact')->name('institutional.contact');
Route::post('/contacto/mensagem', [PortalContactController::class, 'store'])->middleware('throttle:10,1')->name('institutional.contact.store');
Route::prefix('api/v1/investment')->middleware('throttle:api')->group(function () {
foreach (['search', 'references', 'suggest', 'map', 'compare', 'export'] as $method) {
Route::get($method, [InvestmentDiscoveryController::class, $method]);
}
Route::get('opportunities/{slug}', [InvestmentDiscoveryController::class, 'detailApi']);
Route::post('favourites/{id}', [InvestmentDiscoveryController::class, 'favourite'])->whereNumber('id')->middleware(['auth', 'verified']);
});
Route::middleware(['auth', 'verified', PrivateInvestmentResponse::class])->group(function () {
foreach (['investidor', 'api/v1/investment'] as $prefix) {
Route::get($prefix.'/profile', [InvestmentWorkspaceController::class, 'profile']);
Route::put($prefix.'/profile', [InvestmentWorkspaceController::class, 'saveProfile'])->middleware('throttle:20,1');
Route::post($prefix.'/companies/{id?}', [InvestmentWorkspaceController::class, 'company'])->whereUuid('id')->middleware('throttle:20,1');
Route::put($prefix.'/organizations/{id}/country', [InvestmentWorkspaceController::class, 'organizationCountry'])->whereUuid('id')->middleware('throttle:20,1');
Route::post($prefix.'/companies/{id}/organization-country', [InvestmentWorkspaceController::class, 'reuseOrganizationCountry'])->whereUuid('id')->middleware('throttle:20,1');
Route::get($prefix.'/notifications', [InvestmentWorkspaceController::class, 'notifications']);
Route::post($prefix.'/notifications/{id}/read', [InvestmentWorkspaceController::class, 'readNotification'])->whereUuid('id');
}
foreach (['investidor/manifestacoes', 'api/v1/investment/submissions'] as $prefix) {
Route::get($prefix, [InvestmentSubmissionController::class, 'index']);
Route::post($prefix, [InvestmentSubmissionController::class, 'create'])->middleware('throttle:10,1');
Route::get($prefix.'/{id}', [InvestmentSubmissionController::class, 'show'])->whereUuid('id');
Route::put($prefix.'/{id}', [InvestmentSubmissionController::class, 'save'])->whereUuid('id')->middleware('throttle:30,1');
Route::post($prefix.'/{id}/contexto', [InvestmentSubmissionController::class, 'bindContext'])->whereUuid('id')->middleware('throttle:20,1');
Route::post($prefix.'/{id}/submit', [InvestmentSubmissionController::class, 'submit'])->whereUuid('id')->middleware('throttle:10,1');
Route::post($prefix.'/{id}/attachments', [InvestmentSubmissionController::class, 'attach'])->whereUuid('id')->middleware('throttle:10,1');
Route::post($prefix.'/{id}/messages', [InvestmentWorkspaceController::class, 'message'])->whereUuid('id')->middleware('throttle:10,1');
Route::get($prefix.'/{id}/revisions/{version}', [InvestmentWorkspaceController::class, 'revision'])->whereUuid('id')->whereNumber('version');
Route::get($prefix.'/{id}/attachments/{attachment}', [InvestmentSubmissionController::class, 'download'])->whereUuid(['id', 'attachment']);
}
});
Route::middleware(['auth', 'verified', 'can:manage-portal'])->group(function () {
Route::patch('/api/v1/investment/admin/interests/{interest}/status', [PortalManagementController::class, 'review'])->whereNumber('interest')->middleware(PrivateInvestmentResponse::class);
Route::get('/management/opportunities/{id}/context', [InvestmentContextController::class, 'edit'])->whereNumber('id');
Route::put('/management/opportunities/{id}/context', [InvestmentContextController::class, 'save'])->whereNumber('id');
Route::get('/management/investment/references', [InvestmentContextController::class, 'references']);
Route::post('/management/investment/references/{id?}', [InvestmentContextController::class, 'saveReference'])->whereNumber('id');
Route::put('/api/v1/investment/admin/opportunities/{id}/context', [InvestmentContextController::class, 'save'])->whereNumber('id');
Route::post('/api/v1/investment/admin/references/{id?}', [InvestmentContextController::class, 'saveReference'])->whereNumber('id');
});