Files
shipping-portal/app/Http/Controllers/Orders/DownloadTaxRebateQrPdfController.php
T
2024-10-22 22:58:06 +08:00

100 lines
3.9 KiB
PHP

<?php
namespace App\Http\Controllers\Orders;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\OrderRoleTypes;
use App\Classes\ValueObjects\Constants\WarehouseReferences;
use App\Models\Order;
use Illuminate\Http\Request;
use Mccarlosen\LaravelMpdf\Facades\LaravelMpdf;
use App\Classes\General\AWSS3Helper;
use App\Models\SupplierTaxRebate;
use Illuminate\Support\Facades\Storage;
class DownloadTaxRebateQrPdfController
{
public function download(Request $request){
$order = Order::find($request->route('id'));
$deliveryAddress = $order->addresses()->where('status', ApprovalStatus::APPROVED)->first();
$warehouse= $order->orderRoles()->where('role_id', OrderRoleTypes::ORIGIN_WAREHOUSE)->first()->appointee;
$warehouseAddress = $warehouse->addresses()->first();
$warehouseContacts = $warehouse->contacts;
$warehousePrefix = '';
$deliveryPrefix = '';
$customerMarking = '';
$remark = $warehouse->remarks()->first();
if($warehouse->reference === WarehouseReferences::VT_GUANG_ZHOU || $warehouse->reference === WarehouseReferences::VT_YIWU) {
$customerMarking = $order->companyModule->connections()->first()->invitee_reference.'/';
if(strtolower($deliveryAddress->state->name) === 'sabah' || strtolower($deliveryAddress->state->name) === 'labuan') {
$deliveryPrefix = 'SB/';
}
if(strtolower($deliveryAddress->state->name) === 'sarawak') {
$deliveryPrefix = 'SRW/';
}
}
if($warehouse->reference === WarehouseReferences::YD_YIWU){
$warehousePrefix = 'YW/';
}
if(in_array($warehouse->reference,[WarehouseReferences::YD_GUANG_ZHOU, WarehouseReferences::YD_GUANG_ZHOU_2, WarehouseReferences::YD_FS_EAST_MALAYSIA, WarehouseReferences::YD_FS_WEST_MALAYSIA])){
$warehousePrefix = 'YD/';
if(strtolower($deliveryAddress->state->name) === 'sabah' || strtolower($deliveryAddress->state->name) === 'labuan' || in_array(strtolower($deliveryAddress->district->name), ['limbang', 'lawas'])) {
$warehousePrefix = 'KK/';
}
if(strtolower($deliveryAddress->state->name) === 'sarawak' && !in_array(strtolower($deliveryAddress->district->name), ['limbang', 'lawas'])) {
$warehousePrefix = 'KU/';
}
if(strtolower($deliveryAddress->state->name) === 'johor') {
$warehousePrefix = 'NX/';
}
}
// tax rebate data
$tax_rebate_refeerence = $request->query('tax_rebate_refeerence');
$supplierTaxRebate = SupplierTaxRebate::where('reference_number', $tax_rebate_refeerence)->first();
if (!$supplierTaxRebate) {
// If not found, throw an error
abort(404, 'Supplier Tax Rebate not found');
}
$data = [
'order' => $order,
'marking' => $warehousePrefix.$deliveryPrefix.'CIEF/'.$customerMarking,
'delivery_address' => $deliveryAddress,
'warehouse_address' => $warehouseAddress,
'warehouse_contacts' => $warehouseContacts,
'remark' => $remark ? $remark->content : '',
'supplierTaxRebate' => $supplierTaxRebate
];
$pdf = LaravelMpdf::loadView('pdfs.tax_rebate_qr', $data, [], [
'title' => 'CIEF_ORDER_NO_'.$order->reference,
'format' => 'A4-L',
'orientation' => 'L',
'margin_top' => '40px',
]);
$exportFileName = 'CIEF_ORDER_NO_'.$order->reference.'.pdf';
$filesystemDriver = Storage::getDefaultDriver();
if($filesystemDriver === 's3'){
$pdfContent = $pdf->output();
return response([ 'src' => AWSS3Helper::S3PDF($exportFileName, $pdfContent) ]);
}
else{
return $pdf->stream($exportFileName);
}
}
}