158 lines
8.4 KiB
PHP
158 lines
8.4 KiB
PHP
<?php
|
|
|
|
use Illuminate\Support\Facades\Route;
|
|
use App\Modules\StampeRate\Controllers\StampeRateController;
|
|
use App\Modules\StampeRate\Controllers\TemplateController;
|
|
use App\Modules\StampeRate\Controllers\HistoryController;
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| StampeRate Module Routes
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| Route del modulo Stampe Rate Avanzate
|
|
| Tutte le route sono prefissate con "stampe-rate" e raggruppate
|
|
| sotto il middleware auth e permission
|
|
|
|
|
*/
|
|
|
|
Route::middleware(['auth', 'verified'])->group(function () {
|
|
|
|
// Route principali Stampe Rate
|
|
Route::prefix('stampe-rate')->name('stampeRate.')->group(function () {
|
|
|
|
// Dashboard e lista stampe
|
|
Route::get('/', [StampeRateController::class, 'index'])->name('index');
|
|
Route::get('/dashboard', [StampeRateController::class, 'dashboard'])->name('dashboard');
|
|
|
|
// Generazione stampe
|
|
Route::get('/create', [StampeRateController::class, 'create'])->name('create');
|
|
Route::post('/generate', [StampeRateController::class, 'generate'])->name('generate');
|
|
Route::get('/preview/{stampaId}', [StampeRateController::class, 'preview'])->name('preview');
|
|
|
|
// Gestione stampe esistenti
|
|
Route::get('/{stampaId}', [StampeRateController::class, 'show'])->name('show');
|
|
Route::put('/{stampaId}', [StampeRateController::class, 'update'])->name('update');
|
|
Route::delete('/{stampaId}', [StampeRateController::class, 'destroy'])->name('destroy');
|
|
|
|
// Download e esportazione
|
|
Route::get('/{stampaId}/download', [StampeRateController::class, 'download'])->name('download');
|
|
Route::get('/{stampaId}/download-single/{fileId}', [StampeRateController::class, 'downloadSingle'])->name('download.single');
|
|
Route::post('/{stampaId}/export', [StampeRateController::class, 'export'])->name('export');
|
|
|
|
// Invio email
|
|
Route::post('/{stampaId}/send', [StampeRateController::class, 'send'])->name('send');
|
|
Route::post('/{stampaId}/send-bulk', [StampeRateController::class, 'sendBulk'])->name('send.bulk');
|
|
Route::post('/{stampaId}/send-test', [StampeRateController::class, 'sendTest'])->name('send.test');
|
|
|
|
// Ristampa e rigenerazione
|
|
Route::post('/{stampaId}/regenerate', [StampeRateController::class, 'regenerate'])->name('regenerate');
|
|
Route::post('/{stampaId}/regenerate-single/{rataId}', [StampeRateController::class, 'regenerateSingle'])->name('regenerate.single');
|
|
|
|
// Statistiche e report
|
|
Route::get('/stats/dashboard', [StampeRateController::class, 'stats'])->name('stats');
|
|
Route::get('/stats/export', [StampeRateController::class, 'exportStats'])->name('stats.export');
|
|
});
|
|
|
|
// Route Template Management
|
|
Route::prefix('stampe-rate/templates')->name('stampeRate.templates.')->group(function () {
|
|
|
|
// CRUD Template
|
|
Route::get('/', [TemplateController::class, 'index'])->name('index');
|
|
Route::get('/create', [TemplateController::class, 'create'])->name('create');
|
|
Route::post('/', [TemplateController::class, 'store'])->name('store');
|
|
Route::get('/{templateId}', [TemplateController::class, 'show'])->name('show');
|
|
Route::get('/{templateId}/edit', [TemplateController::class, 'edit'])->name('edit');
|
|
Route::put('/{templateId}', [TemplateController::class, 'update'])->name('update');
|
|
Route::delete('/{templateId}', [TemplateController::class, 'destroy'])->name('destroy');
|
|
|
|
// Gestione Template
|
|
Route::post('/{templateId}/duplicate', [TemplateController::class, 'duplicate'])->name('duplicate');
|
|
Route::post('/{templateId}/publish', [TemplateController::class, 'publish'])->name('publish');
|
|
Route::post('/{templateId}/unpublish', [TemplateController::class, 'unpublish'])->name('unpublish');
|
|
Route::get('/{templateId}/preview', [TemplateController::class, 'preview'])->name('preview');
|
|
|
|
// Import/Export Template
|
|
Route::get('/import', [TemplateController::class, 'import'])->name('import');
|
|
Route::post('/import', [TemplateController::class, 'processImport'])->name('import.process');
|
|
Route::get('/{templateId}/export', [TemplateController::class, 'export'])->name('export');
|
|
|
|
// Template Marketplace (per sviluppi futuri)
|
|
Route::get('/marketplace', [TemplateController::class, 'marketplace'])->name('marketplace');
|
|
Route::post('/marketplace/{templateId}/install', [TemplateController::class, 'installFromMarketplace'])->name('marketplace.install');
|
|
});
|
|
|
|
// Route Cronologia e Tracking
|
|
Route::prefix('stampe-rate/history')->name('stampeRate.history.')->group(function () {
|
|
|
|
// Cronologia generale
|
|
Route::get('/', [HistoryController::class, 'index'])->name('index');
|
|
Route::get('/dashboard', [HistoryController::class, 'dashboard'])->name('dashboard');
|
|
|
|
// Tracking invii email
|
|
Route::get('/email-tracking', [HistoryController::class, 'emailTracking'])->name('email.tracking');
|
|
Route::get('/email-tracking/{invioId}', [HistoryController::class, 'emailTrackingDetail'])->name('email.tracking.detail');
|
|
|
|
// Report e statistiche
|
|
Route::get('/reports', [HistoryController::class, 'reports'])->name('reports');
|
|
Route::get('/reports/monthly', [HistoryController::class, 'monthlyReport'])->name('reports.monthly');
|
|
Route::get('/reports/yearly', [HistoryController::class, 'yearlyReport'])->name('reports.yearly');
|
|
Route::post('/reports/custom', [HistoryController::class, 'customReport'])->name('reports.custom');
|
|
|
|
// Export cronologia
|
|
Route::post('/export', [HistoryController::class, 'export'])->name('export');
|
|
Route::get('/export/csv', [HistoryController::class, 'exportCSV'])->name('export.csv');
|
|
Route::get('/export/excel', [HistoryController::class, 'exportExcel'])->name('export.excel');
|
|
|
|
// Cleanup e manutenzione
|
|
Route::post('/cleanup', [HistoryController::class, 'cleanup'])->name('cleanup');
|
|
Route::post('/archive', [HistoryController::class, 'archive'])->name('archive');
|
|
});
|
|
|
|
// Route API per AJAX e integrazione
|
|
Route::prefix('api/stampe-rate')->name('api.stampeRate.')->group(function () {
|
|
|
|
// API Liste
|
|
Route::get('/stabili', [StampeRateController::class, 'getStabili'])->name('stabili');
|
|
Route::get('/rate/{stabileId}', [StampeRateController::class, 'getRateByStabile'])->name('rate');
|
|
Route::get('/templates', [TemplateController::class, 'getTemplates'])->name('templates');
|
|
|
|
// API Generazione
|
|
Route::post('/generate', [StampeRateController::class, 'apiGenerate'])->name('generate');
|
|
Route::get('/status/{stampaId}', [StampeRateController::class, 'getStatus'])->name('status');
|
|
|
|
// API Invio Email
|
|
Route::post('/send', [StampeRateController::class, 'apiSend'])->name('send');
|
|
Route::get('/tracking/{invioId}', [HistoryController::class, 'getTrackingInfo'])->name('tracking');
|
|
|
|
// API Statistiche
|
|
Route::get('/stats/dashboard', [StampeRateController::class, 'getDashboardStats'])->name('stats.dashboard');
|
|
Route::get('/stats/chart/{type}', [StampeRateController::class, 'getChartData'])->name('stats.chart');
|
|
});
|
|
});
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Route Pubbliche (per tracking email, ecc.)
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
|
|
// Tracking aperture email (no auth richiesta)
|
|
Route::get('/track/email/{trackingId}', [HistoryController::class, 'trackEmailOpen'])->name('stampeRate.track.email');
|
|
Route::get('/track/download/{trackingId}', [HistoryController::class, 'trackDownload'])->name('stampeRate.track.download');
|
|
|
|
// Unsubscribe link
|
|
Route::get('/unsubscribe/{token}', [HistoryController::class, 'unsubscribe'])->name('stampeRate.unsubscribe');
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Route Webhook (per integrazioni esterne)
|
|
|--------------------------------------------------------------------------
|
|
*/
|
|
|
|
// Webhook per servizi email esterni (SendGrid, MailChimp, etc.)
|
|
Route::post('/webhook/email-status', [HistoryController::class, 'webhookEmailStatus'])->name('stampeRate.webhook.email');
|
|
|
|
// Webhook per pagamenti/licenze
|
|
Route::post('/webhook/license-status', [StampeRateController::class, 'webhookLicenseStatus'])->name('stampeRate.webhook.license');
|