feat: add Snipe-IT asset synchronization

This commit is contained in:
2026-08-04 16:15:09 +01:00
parent 604180b735
commit 077015f17a
37 changed files with 1302 additions and 26 deletions

View File

@@ -1,8 +1,15 @@
<?php
use App\Jobs\SyncSnipeAssets;
use Illuminate\Foundation\Inspiring;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Schedule;
Artisan::command('inspire', function () {
$this->comment(Inspiring::quote());
})->purpose('Display an inspiring quote');
Schedule::job(new SyncSnipeAssets)
->hourly()
->when(fn (): bool => filled(config('services.snipe_it.url')) && filled(config('services.snipe_it.read_token')))
->withoutOverlapping();

View File

@@ -1,5 +1,6 @@
<?php
use App\Http\Controllers\Admin\SnipeItController;
use App\Http\Controllers\AssetController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\ReservationController;
@@ -13,6 +14,12 @@ Route::middleware(['auth', 'verified'])->group(function () {
Route::get('requisicoes', [ReservationController::class, 'index'])->name('reservations.index');
Route::get('requisicoes/nova', [ReservationController::class, 'create'])->name('reservations.create');
Route::post('requisicoes', [ReservationController::class, 'store'])->name('reservations.store');
Route::middleware('can:administer')->prefix('administracao')->name('admin.')->group(function () {
Route::get('snipe-it', [SnipeItController::class, 'index'])->name('snipe-it.index');
Route::post('snipe-it/testar', [SnipeItController::class, 'testConnection'])->name('snipe-it.test');
Route::post('snipe-it/sincronizar', [SnipeItController::class, 'sync'])->name('snipe-it.sync');
});
});
require __DIR__.'/settings.php';