AssociadoImportController.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Jobs\SyncAfastamentosJob;
  4. use App\Jobs\SyncAssociadosJob;
  5. use App\Jobs\SyncExamesJob;
  6. use Illuminate\Http\JsonResponse;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\Cache;
  9. use Illuminate\Support\Facades\Storage;
  10. use Illuminate\Support\Str;
  11. class AssociadoImportController extends Controller
  12. {
  13. public function importAndSync(Request $request): JsonResponse
  14. {
  15. $request->validate([
  16. 'file' => 'required|file|mimes:xlsx|max:10240',
  17. ]);
  18. $importId = Str::uuid()->toString();
  19. $filePath = Storage::putFileAs('imports', $request->file('file'), $importId . '.xlsx');
  20. Cache::put($importId, ['status' => 'pending'], now()->addDay());
  21. SyncAssociadosJob::dispatch($filePath, $importId, auth()->id());
  22. return $this->successResponse(
  23. payload: ['import_id' => $importId],
  24. code: 202,
  25. );
  26. }
  27. public function importAfastamentos(Request $request): JsonResponse
  28. {
  29. $request->validate([
  30. 'file' => 'required|file|mimes:xlsx|max:10240',
  31. ]);
  32. $importId = Str::uuid()->toString();
  33. $filePath = Storage::putFileAs('imports', $request->file('file'), $importId . '.xlsx');
  34. Cache::put($importId, ['status' => 'pending'], now()->addDay());
  35. SyncAfastamentosJob::dispatch($filePath, $importId, auth()->id());
  36. return $this->successResponse(
  37. payload: ['import_id' => $importId],
  38. code: 202,
  39. );
  40. }
  41. public function import(Request $request, int $partnerAgreementId): JsonResponse
  42. {
  43. $request->validate([
  44. 'file' => 'required|file|mimes:xlsx|max:10240',
  45. ]);
  46. $importId = Str::uuid()->toString();
  47. $filePath = Storage::putFileAs(
  48. 'imports',
  49. $request->file('file'),
  50. $importId . '.xlsx'
  51. );
  52. Cache::put(
  53. $importId,
  54. ['status' => 'pending'],
  55. now()->addDay()
  56. );
  57. SyncExamesJob::dispatch(
  58. $filePath,
  59. $importId,
  60. auth()->id(),
  61. $partnerAgreementId
  62. );
  63. return $this->successResponse(
  64. payload: [
  65. 'import_id' => $importId,
  66. ],
  67. code: 202,
  68. );
  69. }
  70. }