Code sync from Shipping Portal, independent deployment of Vue Polling, Performance Improvement and tweaking for better user experience

This commit is contained in:
Dillon Ngo
2023-12-30 18:35:17 +08:00
parent 6da337b9dc
commit bf5ea2b2f2
26 changed files with 809 additions and 178 deletions
@@ -5,10 +5,11 @@ namespace App\Classes\Modules\Transactions\ControllersLogic;
use App\Classes\General\Abstracts\AbstractControllerLogic;
use App\Classes\Jobs\ListTransactionsJob;
use App\Classes\Modules\Jobs\Services\CreatesJobResult;
use App\Classes\Modules\Jobs\DataTransferObjects\ListGenericJobObject;
use ErrorException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class ListTransactionsJobLogic extends AbstractControllerLogic
{
@@ -22,6 +23,19 @@ class ListTransactionsJobLogic extends AbstractControllerLogic
];
}
/** @var CreatesJobResult */
private $createsJobResult;
/**
* ListTransactionsJobLogic constructor.
* @param CreatesJobResult $createsJobResult
*/
public function __construct(CreatesJobResult $createsJobResult)
{
$this->createsJobResult = $createsJobResult;
}
/**
* @param Request $request
* @return JsonResponse
@@ -30,10 +44,21 @@ class ListTransactionsJobLogic extends AbstractControllerLogic
{
$jobId = uniqid();
$user = Auth::user();
$userInfo = (object) [
'type' => $user->type,
];
$userInfoJson = json_encode($userInfo);
$requestSignature = md5($userInfoJson . $request->fullUrl());
$listGenericJobObject = new ListGenericJobObject(
$request->fullUrl(),
$request->all(),
$jobId
$requestSignature,
null,
$jobId,
$userInfo
);
ListTransactionsJob::dispatch($listGenericJobObject);
@@ -41,6 +66,8 @@ class ListTransactionsJobLogic extends AbstractControllerLogic
$result = [];
$result['job_id'] = $jobId;
$this->createsJobResult->execute($listGenericJobObject);
return $this->response(['data' => $result]);
}
@@ -3,14 +3,10 @@
namespace App\Classes\Modules\Transactions\Processors;
use App\Classes\Modules\Transactions\Services\ListsTransactions;
use App\Classes\Modules\Jobs\Services\CreatesJobResult;
use App\Classes\Exceptions\MalformedRequestException;
use App\Classes\Modules\Jobs\Processors\UpdateJobResultProcessor;
use App\Classes\General\Helper;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
use App\Classes\Modules\Jobs\DataTransferObjects\ListGenericJobObject;
use Illuminate\Http\Resources\Json\ResourceCollection;
use App\Http\Resources\TransactionResource;
use App\Http\Resources\ListTransactionJobResource;
class ListTransactionsJobProcessor
{
@@ -18,33 +14,32 @@ class ListTransactionsJobProcessor
/** @var ListsTransactions */
private $listsTransactions;
/** @var CreatesJobResult */
private $createsJobResult;
/** @var UpdateJobResultProcessor */
private $updateJobResultProcessor;
/**
* ListTransactionsJobProcessor constructor.
* @param ListsTransactions $listsTransactions
* @param CreatesJobResult $createsJobResult
* @param UpdateJobResultProcessor $updateJobResultProcessor
*/
public function __construct(ListsTransactions $listsTransactions, CreatesJobResult $createsJobResult)
public function __construct(ListsTransactions $listsTransactions, UpdateJobResultProcessor $updateJobResultProcessor)
{
$this->listsTransactions = $listsTransactions;
$this->createsJobResult = $createsJobResult;
$this->updateJobResultProcessor = $updateJobResultProcessor;
}
/**
* @param ListGenericJobObject $listGenericJobObject
* @return null|object
* @return void
* @throws \App\Classes\Exceptions\MalformedRequestException
* @throws \App\Classes\Exceptions\JobResourceNotFoundException
*/
public function execute(ListGenericJobObject $listGenericJobObject) {
$query = $this->listsTransactions->execute($this->listsTransactions->deserializeFilters($listGenericJobObject->getPayload()['filters']), ['page' => $listGenericJobObject->getPayload()['page']]);
$result = Helper::collectionResponse(TransactionResource::collection($query));
$create = $this->createsJobResult->execute($listGenericJobObject, json_encode($result));
return $create;
$resultCurrent = Helper::collectionResponse(ListTransactionJobResource::collection($query));
$this->updateJobResultProcessor->execute($listGenericJobObject, $resultCurrent);
}
}