commit melhorias sgf
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api\V1;
|
||||
|
||||
use App\Http\Requests\Sgc\StoreInvoiceRequest;
|
||||
use App\Modules\Purchasing\SgcInvoiceIngress;
|
||||
use Illuminate\Database\QueryException;
|
||||
|
||||
final class SgcInvoiceIngressController
|
||||
{
|
||||
public function context(int $order, \App\Modules\Purchasing\InvoiceController $controller, \App\Modules\Purchasing\ReceiptRuntime $runtime)
|
||||
{
|
||||
$state = $controller->show($order, $runtime)->getData(true);
|
||||
return response()->json(['order'=>$state['order'], 'revision'=>$state['revision'], 'receipt_progress'=>$state['receipt_progress']]);
|
||||
}
|
||||
|
||||
public function __invoke(StoreInvoiceRequest $request, SgcInvoiceIngress $ingress)
|
||||
{
|
||||
try { return $ingress->receive($request); }
|
||||
catch (QueryException $error) {
|
||||
if (in_array($error->getCode(), ['55P03','40P01','40001'], true)) {
|
||||
return response()->json(['error'=>'RETRY_SAME_KEY', 'message'=>'Operação concorrente; recuperar com a mesma chave e conteúdo.'], 503)->header('Retry-After', '1');
|
||||
}
|
||||
if ($error->getCode() === '23505') return response()->json(['error'=>'DOCUMENT_CONFLICT'], 409);
|
||||
throw $error;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user