mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/shipping-portal.git
synced 2026-08-29 01:14:04 +00:00
85 lines
2.6 KiB
PHP
85 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\Modules\Orders\ControllersLogic;
|
|
|
|
|
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
use App\Classes\Modules\Orders\Services\ChecksIfOrderNumberExists;
|
|
use App\Classes\Modules\Orders\Services\RestoresOrder;
|
|
use App\Classes\Modules\Orders\Services\FetchesOrder;
|
|
use App\Http\Resources\OrderResource;
|
|
use App\Models\Order;
|
|
use App\Models\SupplierTaxRebate;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
class CreateSupplierTaxRebateLogic extends AbstractControllerLogic
|
|
{
|
|
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
protected function notification(): array
|
|
{
|
|
return [
|
|
'title' => 'Create Supplier Tax Refund',
|
|
'message' => 'You have successfully created a Supplier Tax Refund'
|
|
];
|
|
}
|
|
|
|
/** @var RestoresOrder */
|
|
private $restoresOrder;
|
|
|
|
/** @var FetchesOrder */
|
|
private $fetchesOrder;
|
|
|
|
/** @var ChecksIfOrderNumberExists */
|
|
private $checkIfOrderNumberExists;
|
|
|
|
/**
|
|
* CancelOrderLogic constructor.
|
|
* @param RestoresOrder $restoresOrder
|
|
* @param FetchesOrder $fetchesOrder
|
|
*/
|
|
public function __construct(RestoresOrder $restoresOrder, FetchesOrder $fetchesOrder, ChecksIfOrderNumberExists $checkIfOrderNumberExists)
|
|
{
|
|
$this->restoresOrder = $restoresOrder;
|
|
$this->fetchesOrder = $fetchesOrder;
|
|
$this->checkIfOrderNumberExists = $checkIfOrderNumberExists;
|
|
}
|
|
|
|
/**
|
|
* @param Request $request
|
|
* @return JsonResponse
|
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
*/
|
|
public function logic(Request $request): JsonResponse
|
|
{
|
|
/** @var Order $order */
|
|
$order = $this->fetchesOrder->execute(['id' => $request->route('id')]);
|
|
|
|
$taxRebate = SupplierTaxRebate::create([
|
|
'order_id' => $order->id,
|
|
'supplier_name' => $request->input('supplier_name'),
|
|
'supplier_contact_number' => $request->input('supplier_contact_number'),
|
|
'reference_number' => $this->generateUniqueReferenceNumber(),
|
|
]);
|
|
|
|
return $this->resourceResponse(new OrderResource($order));
|
|
}
|
|
|
|
public function generateUniqueReferenceNumber(?string $prefix = '', ?int $length = 9): string
|
|
{
|
|
// regenerate new reference number until a new unique reference is found
|
|
do {
|
|
$reference = $prefix . rand((int)('1' . str_repeat('0', $length - 2) . '1'), (int) str_repeat('9', $length));
|
|
} while (
|
|
SupplierTaxRebate::where('reference_number', $reference)->exists() || $this->checkIfOrderNumberExists->execute($reference)
|
|
);
|
|
|
|
return $reference;
|
|
}
|
|
}
|