Update: 2026-05-06 01:38:39
This commit is contained in:
65
app/modules_app/batches/finalize.php
Normal file
65
app/modules_app/batches/finalize.php
Normal file
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
/**
|
||||
* Finalize Batch Endpoint
|
||||
* POST /v1/batches/finalize
|
||||
*
|
||||
* Marks a batch as ready for processing.
|
||||
* Triggers background processing (or processes synchronously depending on setup).
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use App\Core\Database;
|
||||
use App\Middleware\AuthMiddleware;
|
||||
use App\Core\Security;
|
||||
|
||||
$decoded = AuthMiddleware::check();
|
||||
$tenantId = $decoded['tenant_id'];
|
||||
$userId = $decoded['user_id'];
|
||||
|
||||
$data = Security::sanitize(input());
|
||||
$batchId = $data['batch_id'] ?? null;
|
||||
|
||||
if (!$batchId) {
|
||||
json_error('معرّف الدفعة مطلوب', 422);
|
||||
}
|
||||
|
||||
$db = Database::getInstance();
|
||||
|
||||
// 1. Verify batch
|
||||
$stmt = $db->prepare("
|
||||
SELECT id, status, total_images
|
||||
FROM invoice_batches
|
||||
WHERE id = ? AND tenant_id = ? AND uploaded_by = ?
|
||||
");
|
||||
$stmt->execute([$batchId, $tenantId, $userId]);
|
||||
$batch = $stmt->fetch();
|
||||
|
||||
if (!$batch) {
|
||||
json_error('الدفعة غير موجودة', 404);
|
||||
}
|
||||
|
||||
if ($batch['status'] !== 'uploading') {
|
||||
json_error('تم إنهاء هذه الدفعة مسبقاً', 400);
|
||||
}
|
||||
|
||||
if ($batch['total_images'] == 0) {
|
||||
json_error('لا يمكن إنهاء دفعة فارغة', 400);
|
||||
}
|
||||
|
||||
// 2. Mark as processing
|
||||
$stmt = $db->prepare("
|
||||
UPDATE invoice_batches
|
||||
SET status = 'processing', updated_at = NOW()
|
||||
WHERE id = ?
|
||||
");
|
||||
$stmt->execute([$batchId]);
|
||||
|
||||
// In a real production environment, you would dispatch a job to a queue worker here.
|
||||
// For now, the queue worker is a cron job that checks the `invoice_processing_queue` table.
|
||||
|
||||
json_success([
|
||||
'batch_id' => $batchId,
|
||||
'status' => 'processing',
|
||||
'total_images' => $batch['total_images']
|
||||
], 'تم إنهاء الدفعة بنجاح وإرسالها للمعالجة');
|
||||
Reference in New Issue
Block a user