AssociadoImportController.php 895 B

1234567891011121314151617181920212223242526272829303132
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Jobs\SyncAssociadosJob;
  4. use Illuminate\Http\JsonResponse;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\Cache;
  7. use Illuminate\Support\Facades\Storage;
  8. use Illuminate\Support\Str;
  9. class AssociadoImportController extends Controller
  10. {
  11. public function importAndSync(Request $request): JsonResponse
  12. {
  13. $request->validate([
  14. 'file' => 'required|file|mimes:xlsx|max:10240',
  15. ]);
  16. $importId = Str::uuid()->toString();
  17. $filePath = Storage::putFileAs('imports', $request->file('file'), $importId . '.xlsx');
  18. Cache::put($importId, ['status' => 'pending'], now()->addDay());
  19. SyncAssociadosJob::dispatch($filePath, $importId)->onQueue('imports');
  20. return $this->successResponse(
  21. payload: ['import_id' => $importId],
  22. code: 202,
  23. );
  24. }
  25. }