|
@@ -2,27 +2,33 @@
|
|
|
|
|
|
|
|
namespace App\Http\Controllers;
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
|
|
-use App\Services\ConveniosMedicosImportService;
|
|
|
|
|
-use App\Services\ParceirosImportService;
|
|
|
|
|
|
|
+use App\Jobs\SyncConveniosMedicosJob;
|
|
|
|
|
+use App\Jobs\SyncParceirosJob;
|
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\JsonResponse;
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Request;
|
|
|
|
|
+use Illuminate\Support\Facades\Cache;
|
|
|
|
|
+use Illuminate\Support\Facades\Storage;
|
|
|
|
|
+use Illuminate\Support\Str;
|
|
|
|
|
|
|
|
class PartnerImportController extends Controller
|
|
class PartnerImportController extends Controller
|
|
|
{
|
|
{
|
|
|
- public function __construct(
|
|
|
|
|
- protected ParceirosImportService $parceirosService,
|
|
|
|
|
- protected ConveniosMedicosImportService $conveniosService,
|
|
|
|
|
- ) {}
|
|
|
|
|
-
|
|
|
|
|
public function importParceiros(Request $request): JsonResponse
|
|
public function importParceiros(Request $request): JsonResponse
|
|
|
{
|
|
{
|
|
|
$request->validate([
|
|
$request->validate([
|
|
|
'file' => 'required|file|mimes:xlsx|max:10240',
|
|
'file' => 'required|file|mimes:xlsx|max:10240',
|
|
|
]);
|
|
]);
|
|
|
|
|
|
|
|
- $stats = $this->parceirosService->syncFromExcel($request->file('file'));
|
|
|
|
|
|
|
+ $importId = Str::uuid()->toString();
|
|
|
|
|
+ $filePath = Storage::putFileAs('imports', $request->file('file'), $importId . '.xlsx');
|
|
|
|
|
+
|
|
|
|
|
+ Cache::put($importId, ['status' => 'pending'], now()->addDay());
|
|
|
|
|
+
|
|
|
|
|
+ SyncParceirosJob::dispatch($filePath, $importId)->onQueue('imports');
|
|
|
|
|
|
|
|
- return $this->successResponse(payload: $stats, message: __('messages.updated'));
|
|
|
|
|
|
|
+ return $this->successResponse(
|
|
|
|
|
+ payload: ['import_id' => $importId],
|
|
|
|
|
+ code: 202,
|
|
|
|
|
+ );
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public function importConveniosMedicos(Request $request): JsonResponse
|
|
public function importConveniosMedicos(Request $request): JsonResponse
|
|
@@ -31,8 +37,16 @@ class PartnerImportController extends Controller
|
|
|
'file' => 'required|file|mimes:xlsx|max:10240',
|
|
'file' => 'required|file|mimes:xlsx|max:10240',
|
|
|
]);
|
|
]);
|
|
|
|
|
|
|
|
- $stats = $this->conveniosService->syncFromExcel($request->file('file'));
|
|
|
|
|
|
|
+ $importId = Str::uuid()->toString();
|
|
|
|
|
+ $filePath = Storage::putFileAs('imports', $request->file('file'), $importId . '.xlsx');
|
|
|
|
|
+
|
|
|
|
|
+ Cache::put($importId, ['status' => 'pending'], now()->addDay());
|
|
|
|
|
+
|
|
|
|
|
+ SyncConveniosMedicosJob::dispatch($filePath, $importId)->onQueue('imports');
|
|
|
|
|
|
|
|
- return $this->successResponse(payload: $stats, message: __('messages.updated'));
|
|
|
|
|
|
|
+ return $this->successResponse(
|
|
|
|
|
+ payload: ['import_id' => $importId],
|
|
|
|
|
+ code: 202,
|
|
|
|
|
+ );
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|