Admin Workflow - Update business logic to fetch 1688 data for processing

This commit is contained in:
Dillon Ngo
2024-12-25 20:59:49 +08:00
parent a76d03d548
commit 2bbe7e4eab
4 changed files with 98 additions and 42 deletions
@@ -48,7 +48,7 @@ class DownloadMockUpWhiteFormPdfLogic
return ['id' => $value];
}, json_decode($request->input('payments')));
DB::beginTransaction();
DB::beginTransaction(); //cief todo: 74
$this->createSupplierTransactionProcessor->execute($supplier, $rate, $payments);
@@ -56,7 +56,7 @@ class DownloadMockUpWhiteFormPdfLogic
$pdf = LaravelMpdf::loadView('pages.pdfs.currency_vendor_order', ['transactions' => $this->createSupplierTransactionProcessor->getBills(), 'transferFeeTransactions' => $this->createSupplierTransactionProcessor->getTransferTransactions(), 'supplier' => $supplier]);
DB::rollBack();
DB::rollBack(); //cief todo: 74
$exportFileName = 'MockUpWhiteForm.pdf';
$filesystemDriver = Storage::getDefaultDriver();
@@ -0,0 +1,61 @@
<?php
namespace App\Http\Controllers\AdminWorkflow;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Models\Booking;
use App\Models\KeyValuePair;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
class AdminWorkflowBaseController
{
public function fetchOldestOrder()
{
$excludedBookingIds = KeyValuePair::where('owner_type', 'App\Models\Booking')
->where(function ($query) {
$query->where('key', '1688_admin_workflow_processed')
->orWhere(function ($query) {
$query->where('key', '1688_admin_workflow_processing')
->where('updated_at', '>', Carbon::now()->subHour());
});
})
->pluck('owner_id')
->filter(function ($value) {
return is_numeric($value);
})
->toArray();
$timeAgo = Carbon::now()->subMonths(6);
$serviceId = 4;
$booking = Booking::where('service_id', $serviceId)
->where('status', ApprovalStatus::APPROVED)
->whereNotIn('id', $excludedBookingIds)
->whereHas('bills', function ($query) {
$query->whereHas('groupTransaction', function ($query) {
$query->whereHas('group', function ($query) {
$query->whereDoesntHave('billGroup')->whereIn('issuer', [2]);
});
});
})
->where('created_at', '>=', $timeAgo)
->latest()
->first();
if(!$booking){
return responseJson(null, 'No booking found', 404);
}
markedProcessing($booking, '1688_admin_workflow_processing');
return responseJson([
'passwords' => $booking->bank->holder_name ?? null,
'account_no' => $booking->bank->account_no ?? null,
'pin' => $booking->bank->bank_branch ?? null,
'holder_name' => $booking->bank->holder_name ?? null,
'booking' => $booking
]);
}
}
@@ -73,7 +73,23 @@
{{ externalApiResponse.data.booking.marking }}
</a>
</h3>
<div v-if="externalApiResponse.data.booking_attributes && externalApiResponse.data.booking_attributes.length > 0" class="row bg-master-light m-t-15 m-b-15 rounded padding-30 justify-content-center">
<div v-if="externalApiResponse.data.reference" class="row bg-master-light m-t-15 m-b-15 rounded padding-30 justify-content-center">
<div class="col-auto text-left">
<h4>
<span class="bold d-inline-block m-r-15">Reference: {{ externalApiResponse.data.reference }}</span>
</h4>
<h4>
<span class="bold d-inline-block m-r-15">Marking: {{ externalApiResponse.data.marking }} </span>
</h4>
<h4>
<span class="bold d-inline-block m-r-15">Currency Rate: {{ externalApiResponse.data.currency_rate }} </span>
</h4>
<h4>
<span class="bold d-inline-block m-r-15">Total Amount: {{ externalApiResponse.data.total_amount }}</span>
</h4>
</div>
</div>
<!-- <div v-if="externalApiResponse.data.booking_attributes && externalApiResponse.data.booking_attributes.length > 0" class="row bg-master-light m-t-15 m-b-15 rounded padding-30 justify-content-center">
<div class="col-auto text-left">
<h4>
<span class="bold d-inline-block m-r-15">Additional Info: </span>
@@ -92,7 +108,7 @@
<span class="bold d-inline-block m-r-15">Additional Info: -</span>
</h4>
</div>
</div>
</div> -->
</div>
<div v-if="question.question_number === '1688_order_verify'">
+17 -38
View File
@@ -5,10 +5,12 @@ use App\Classes\Modules\Accounts\Services\CreatesKeyValuePair;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\TransactionType;
use App\Classes\ValueObjects\Constants\BookingAttributeNames;
use App\Http\Controllers\AdminWorkflow\AdminWorkflowBaseController;
use App\Http\Resources\BookingResource;
use App\Models\Booking;
use App\Models\KeyValuePair;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Route;
// Generalized JSON response function
@@ -27,53 +29,25 @@ if (!function_exists('responseJson')) {
}
if (!function_exists('markedProcessing')) {
function markedProcessing($booking, $key){
$kvp = $booking->attributesKVP()->where('key', $key)->first();
function markedProcessing($model, $key){
$kvp = $model->attributesKVP()->where('key', $key)->first();
if($kvp){
$kvp->delete();
$kvp = null;
}
if(!$kvp){
$keyValuePairObject = new KeyValuePairObject($key, true);
(App()->make(CreatesKeyValuePair::class))->execute($booking, $keyValuePairObject);
(App()->make(CreatesKeyValuePair::class))->execute($model, $keyValuePairObject);
}
}
}
Route::group(['prefix' => 'admin-work-flow', 'as' => 'admin_work_flow.', 'namespace' => 'AdminWorkFlow'], function () {
Route::group(['prefix' => 'admin-work-flow', 'as' => 'admin_work_flow.', 'namespace' => 'AdminWorkFlow'], function () {
Route::get('/fetch-oldest-order', function () {
$excludedBookingIds = KeyValuePair::where('owner_type', 'App\Models\Booking')
->where(function ($query) {
$query->where('key', '1688_admin_workflow_processed')
->orWhere(function ($query) {
$query->where('key', '1688_admin_workflow_processing')
->where('updated_at', '>', Carbon::now()->subHour());
});
})
->pluck('owner_id')
->filter(function ($value) {
return is_numeric($value);
})
->toArray();
$booking = Booking::where('service_id', 4)
->where('status', ApprovalStatus::APPROVED)
->whereNotIn('id', $excludedBookingIds)
->first();
if(!$booking){
return responseJson(null, 'No booking found', 404);
}
markedProcessing($booking, '1688_admin_workflow_processing');
return responseJson([
'passwords' => $booking->bank->holder_name ?? null,
'account_no' => $booking->bank->account_no ?? null,
'pin' => $booking->bank->bank_branch ?? null,
'holder_name' => $booking->bank->holder_name ?? null,
'booking' => $booking
]);
})->name('fetch_oldest_order');
Route::get('/fetch-oldest-order', [AdminWorkflowBaseController::class, 'fetchOldestOrder'])->name('fetch_oldest_order');
Route::get('/fetch-pending-approved-po', function () {
@@ -162,9 +136,14 @@ Route::group(['prefix' => 'admin-work-flow', 'as' => 'admin_work_flow.', 'namesp
->get(['id', 'value'])
->map(fn ($attr) => $attr->only(['id', 'value']));
$transaction = $booking->bills()->first(); //cief todo: 74 - more than 1 record?
return responseJson([
'booking' => $booking,
'booking_attributes' => $attributes,
'reference' =>$transaction->owner->owner->marking,
'marking' => $transaction->owner->owner->company->reference,
'currency_rate' => $transaction->currency_rate,
'total_amount' =>$transaction->currency->short_code . ' ' . number_format((float)$transaction->amount, 2, '.', '')
]);
})->name('fetch_model_attributes');