Commit 6681090a authored by Sarun Mungthanya's avatar Sarun Mungthanya
Browse files

add create patch masterfile

parent 1097ea6b
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
class ConvertToJsonController extends Controller
{
public function convert()
{
// Path ของโฟลเดอร์ที่เก็บไฟล์ .inc
$formatPath = storage_path('format');
// Path ของโฟลเดอร์ที่เก็บไฟล์ JSON
$jsonPath = storage_path('json');
// ตรวจสอบว่ามีโฟลเดอร์ JSON หรือไม่ ถ้าไม่มีให้สร้างขึ้นมา
if (!file_exists($jsonPath)) {
mkdir($jsonPath, 0777, true);
}
// อ่านไฟล์ทั้งหมดในโฟลเดอร์ format
$files = scandir($formatPath);
foreach ($files as $file) {
if (pathinfo($file, PATHINFO_EXTENSION) === 'inc') {
// อ่านเนื้อหาของไฟล์ .inc
$fileContent = file_get_contents($formatPath . '/' . $file);
// ตรวจสอบว่ามีข้อมูลที่ไม่ต้องการหรือไม่
$DATABASE = '';
$PKEY = [];
$FORMAT = [];
// ใช้ eval เพื่อทำให้ PHP เข้าใจเนื้อหาในไฟล์ (ควรระวัง)
eval('?>' . $fileContent);
// สร้าง array จากข้อมูลในไฟล์
$data = [
'database' => $DATABASE,
'primary_key' => $PKEY,
'format' => $FORMAT,
];
// แปลง array เป็น JSON
$jsonContent = json_encode($data, JSON_PRETTY_PRINT);
// เขียน JSON ลงในไฟล์ใหม่ในโฟลเดอร์ json
$jsonFileName = pathinfo($file, PATHINFO_FILENAME) . '.json';
file_put_contents($jsonPath . '/' . $jsonFileName, $jsonContent);
}
}
return response()->json(['message' => 'Conversion complete!']);
}
}
<?php
namespace App\Http\Livewire\Pages\Patch;
use Livewire\Component;
use App\Models\ConfFormatFile;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Http;
use Livewire\WithFileUploads;
class PatchMasterFile extends Component
{
use WithFileUploads;
public $file, $format_file_id, $messages, $formatFile, $limit, $noLimit, $genPatch, $createPatch = false, $sendToEec = false, $genWithSmartUpdate = false;
protected $formatFiles;
protected $rules = [
'name' => 'required|string|max:255',
// 'files.*' => 'required|file|max:100000',
];
public function mount() {
}
public function createPatch()
{
$fileData = $this->file->getRealPath();
$fileFormat = ConfFormatFile::where('formatservice_ID', $this->format_file_id)->first();
$jsonFilePath = storage_path(str_replace(".inc", ".json", $fileFormat->file));
if (!file_exists($jsonFilePath)) {
session()->flash('error', 'Format JSON file not found.');
return;
}
$formatData = json_decode(file_get_contents($jsonFilePath), true);
$message = '';
if ($this->createPatch) {
$sqlPackAll = $this->readTxt($fileData, $formatData, $fileFormat, $this->limit, $this->noLimit);
$this->processPatches($sqlPackAll, $fileFormat, $this->genWithSmartUpdate);
$message .= 'Patch master file created successfully.';
}
$timeStampEec = Carbon::now()->toDateString();
$datetime = Carbon::now()->toDateTimeString();
$typeEec = $fileFormat->ac ?? '';
if ($this->sendToEec && $typeEec !== '') {
$uid = auth()->user()->id;
$response = $this->sendMasterFileToEcc(config('services.eec.url'), [
'type' => $typeEec,
'file' => fopen($fileData, 'r'),
'timestamp' => $timeStampEec,
]);
$reponseStatus = $response->status();
$responseDate = $response->json();
$requestData = json_encode([
'type' => $typeEec,
'file' => $fileData,
'timestamp' => $timeStampEec,
]);
$this->keepTransactionToEcc($uid, $typeEec, basename($fileData), $requestData, $datetime, $reponseStatus, json_encode($responseDate));
$message .= 'Send EEC successfully.';
// if ($RESPSTATUS == 200) {
// return response()->json(['message' => 'Send MasterFile To EEC'], 200);
// } else {
// return response()->json(['message' => 'Can Not Send MasterFile To EEC'], 500);
// }
} else {
// return response()->json(['message' => 'MasterFile Not config to EEC'], 400);
}
return redirect()->route('patch.index')->with('message', $message);
}
private function sendMasterFileToEcc($url, $postData)
{
return Http::attach('file', $postData['file'])
->asMultipart()
->post($url, [
'type' => $postData['type'],
'timestamp' => $postData['timestamp'],
]);
}
private function keepTransactionToEcc($UID, $TYPE, $FILENAME, $REQDATA, $ACTDATETIME, $RESPSTATUS, $RESPDATA)
{
DB::table('log_send_master2eec')->insert([
'UID' => $UID,
'TYPE' => $TYPE,
'FILENAME' => $FILENAME,
'REQDATA' => $REQDATA,
'ACTDATETIME' => $ACTDATETIME,
'RESPSTATUS' => $RESPSTATUS,
'RESPDATA' => $RESPDATA,
]);
}
function processPatches($sqlPackAll, $fileFormat, $genspnsmartupdatedecode)
{
$uid = auth()->user()->id;
$pLevel = "Critical";
$nameFormat = $fileFormat->name ?? 'Unknown Format';
$pDesc = $nameFormat;
$day = Date('j');
$month = Date('n');
$year = Date('Y');
$pApproveDate = date("Y-m-d h:i:s");
$partPatch = '';
$countSql = count($sqlPackAll);
$part = 1;
foreach ($sqlPackAll as $i__ => $sqlPack) {
if ($countSql != 1 && !$this->noLimit) {
$partPatch = 'Part ' . $part++;
}
$tis620_encoded = iconv('UTF-8', 'TIS-620', var_export($sqlPack, true));
$ALL64 = base64_encode(gzcompress($tis620_encoded));
$patchCode = '$ALL64="' . $ALL64 . '";' . "\n";
if ($genspnsmartupdatedecode) {
$updatedecode = '$ALLVAR=gzuncompress(spnsmartupdatedecode($ALL64));' . "\n";
} else {
$updatedecode = '$ALLVAR=gzuncompress(base64_decode($ALL64));' . "\n";
}
$patchCode .= $updatedecode;
$patchCode .= "eval('\$SQL='.".'$ALLVAR.";");'."\n";
$patchCode .= $this->generatePatchCode($countSql , $i__);
if ($this->noLimit && ($i__ == $countSql - 1)) {
$this->savePatch($patchCode, $nameFormat, $day, $month, $year, $partPatch, $pLevel, $pDesc, $uid, $pApproveDate);
} elseif (!$this->noLimit) {
$this->savePatch($patchCode, $nameFormat, $day, $month, $year, $partPatch, $pLevel, $pDesc, $uid, $pApproveDate);
}
}
}
private function generatePatchCode($countSql , $i__)
{
$patchCode = '';
$patchCode .= '$insert=$SQL["insert"];' . "\n";
$patchCode .= '$update=$SQL["update"];' . "\n";
$patchCode .= '$select=$SQL["select"];' . "\n";
$patchCode .= '$select2=$SQL["select2"];' . "\n";
$patchCode .= '$DATABASE=$SQL["DATABASE"];' . "\n";
$patchCode .= '$CountSQL_=count($insert);' . "\n";
$patchCode .= '$succ="0";' . "\n";
$patchCode .= '$succ2="0";' . "\n";
$patchCode .= 'for($i_=0;$i_<$CountSQL_;$i_++){' . "\n";
$patchCode .= ' $INSERT_ID="";' . "\n";
$patchCode .= ' if($DBTYPE=="MYSQL"){' . "\n";
$patchCode .= ' $sql=$insert[$i_]." ON DUPLICATE KEY UPDATE ".$update[$i_];' . "\n";
$patchCode .= ' }' . "\n";
$patchCode .= ' if($DBTYPE=="MSSQL"){' . "\n";
$patchCode .= ' $sql="IF EXISTS (".$select[$i_].") BEGIN UPDATE $DATABASE SET ".$update[$i_].$select2[$i_]." END ELSE ".$insert[$i_];' . "\n";
$patchCode .= ' }' . "\n";
$patchCode .= ' exec_query($sql);' . "\n";
$patchCode .= ' $succ++;' . "\n";
$patchCode .= ' if($INSERT_ID!=""){$succ2++;}' . "\n";
$patchCode .= '}' . "\n";
$patchCode .= 'unset($ALL64);' . "\n";
$patchCode .= 'unset($ALLVAR);' . "\n";
$patchCode .= 'unset($SQL);' . "\n";
$patchCode .= 'unset($insert);' . "\n";
$patchCode .= 'unset($update);' . "\n";
$patchCode .= 'unset($select);' . "\n";
$patchCode .= 'unset($select2);' . "\n";
$patchCode .= '$PRINT_ .= date("h:i:s")." Process '.($i__+1).' / ' . $countSql . ' Successful Update $succ data(s) (Added = $succ2) from $CountSQL_.</br>";' . "\n";
return $patchCode;
}
private function savePatch($patchCode, $nameformat, $day, $month, $year, $partPatch, $PLEVEL, $PDESC, $UID, $PAPPROVEDATE)
{
$patchCode .= '$PRINTOUT=$PRINT_;' . "\n";
$patchCode .= '$PATCH_STATUS="OK";' . "\n";
// $patchCode = str_replace("'", "''", $patchCode);
$data = [
'PATCHNAME' => "Update Master File $nameformat วันที่ $day เดือน $month ปี $year $partPatch",
'PDATE' => Carbon::now(),
'PLEVEL' => $PLEVEL,
'PCODE' => 'SHIPPINGNET',
'MAJOR_VERSION' => 'ALL',
'PDESC' => $PDESC,
'POWNER' => $UID,
'PTYPE' => 'UPDATE MASTER',
'PAPPROVEDATE' => $PAPPROVEDATE,
'PATCHCODE' => iconv("utf-8", "tis-620" ,$patchCode),
'UNINSTALL' => '$DONE=1;',
'PATCHCODE_SERVER' => '$DONE=1;',
];
DB::table('conf_smartupdate')->insert($data);
}
private function readTxt($filePath, $formatData, $ac, $limit = 10000, $noLimit = false)
{
$sqlPackAll = [];
$count = 0;
$fileHandle = fopen($filePath, "r");
while (!feof($fileHandle)) {
$text = fgets($fileHandle);
$text = iconv('TIS-620', 'UTF-8', $text);
$X = $Y = $Z = 0;
$primaryKeyConditions = [];
foreach ($formatData['primary_key'] as $keyIndex => $primaryKey) {
$fieldFormat = $formatData['format'][$keyIndex];
$type = $fieldFormat['TYPE'];
if (strpos($type, 'DE') !== false) {
$type = str_replace('DE', '', $type);
$type = (int) $type + 1;
}
$type = (int) filter_var($type, FILTER_SANITIZE_NUMBER_INT);
$fieldValue = mb_substr($text, $Y, $type, 'UTF-8');
$Y += $type;
if ($fieldFormat['FORMAT'] === 'date') {
$fieldValue = $this->convertDate($fieldValue);
}
$primaryKeyConditions[] = $primaryKey['FILD'] . " = '" . trim($fieldValue) . "'";
}
$select2[] = " WHERE ".implode(' AND ', $primaryKeyConditions);
$select[] = "SELECT * FROM " . $formatData['database'] . " ". " WHERE ".implode(' AND ', $primaryKeyConditions);
$insertFields = [];
$insertValues = [];
foreach ($formatData['format'] as $fieldFormat) {
$type = $fieldFormat['TYPE'];
if (strpos($type, 'DE') !== false) {
$type = str_replace('DE', '', $type);
$type = (int) $type + 1;
}
$type = (int) filter_var($type, FILTER_SANITIZE_NUMBER_INT);
$fieldValue = mb_substr($text, $X, $type, 'UTF-8');
$X += $type;
if ($fieldFormat['FORMAT'] === 'date') {
$fieldValue = $this->convertDate($fieldValue);
}
$insertFields[] = "`" . $fieldFormat['FILD'] . "`";
$insertValues[] = "'" . str_replace("'", "''", trim($fieldValue)) . "'";
}
$insert[] = "INSERT INTO " . $formatData['database'] . " (". implode(',', $insertFields) . ") VALUES (" . implode(',', $insertValues) . ")";
$update[] = $this->generateUpdateQuery($formatData['format'], $text, $Z, $formatData['primary_key']);
$sqlPack = [
'insert' => $insert,
'update' => $update,
'select' => $select,
'select2' => $select2,
'DATABASE' => $formatData['database'],
'counter' => $count+=1
];
$sqlPackAll[] = $sqlPack;
if ($this->noLimit && $this->limit > 10000) {
break;
} elseif ($this->limit >= $limit) {
break;
}
}
fclose($fileHandle);
return $sqlPackAll;
}
private function convertDate($datetime)
{
$year = substr($datetime, 4, 8) - 543;
$month = substr($datetime, 2, 2);
$day = substr($datetime, 0, 2);
return date("Y-m-d", mktime(0, 0, 0, $month, $day, $year));
}
private function generateUpdateQuery($formatData, $text, &$Z, $primaryKeys)
{
$update = "";
foreach ($formatData as $index => $fieldFormat) {
$type = $fieldFormat['TYPE'];
if (strpos($type, 'DE') !== false) {
$type = str_replace('DE', '', $type);
$type = (int) $type + 1;
}
$type = (int) filter_var($type, FILTER_SANITIZE_NUMBER_INT);
$fieldValue = mb_substr($text, $Z, $type, 'UTF-8');
$Z += $type;
if ($fieldFormat['FORMAT'] === 'date') {
$fieldValue = $this->convertDate($fieldValue);
}
if (!in_array($fieldFormat['FILD'], array_column($primaryKeys, 'FILD'))) {
if ($update != "") {
$update .= ", ";
}
$update .= "`" . $fieldFormat['FILD'] . "` = '" . str_replace("'", "''", trim($fieldValue)) . "'";
}
}
return $update;
}
public function render()
{
$this->formatFiles = ConfFormatFile::all();
return view('livewire.pages.patch.patch-master-file', with([
'formatFiles' => $this->formatFiles
]));
}
}
<?php return array (
'code-comparer' => 'App\\Http\\Livewire\\CodeComparer',
'delete-item-modal' => 'App\\Http\\Livewire\\DeleteItemModal',
'delete-modal' => 'App\\Http\\Livewire\\DeleteModal',
'main-container' => 'App\\Http\\Livewire\\MainContainer',
'navbar' => 'App\\Http\\Livewire\\Navbar',
'pages.company.company-create' => 'App\\Http\\Livewire\\Pages\\Company\\CompanyCreate',
'pages.company.company-edit' => 'App\\Http\\Livewire\\Pages\\Company\\CompanyEdit',
'pages.company.company-index' => 'App\\Http\\Livewire\\Pages\\Company\\CompanyIndex',
'pages.dischargeport.dischargeport-index' => 'App\\Http\\Livewire\\Pages\\Dischargeport\\DischargeportIndex',
'pages.dischargeport.dischargeport-upload' => 'App\\Http\\Livewire\\Pages\\Dischargeport\\DischargeportUpload',
'pages.exchangerate.exchangerate-create' => 'App\\Http\\Livewire\\Pages\\Exchangerate\\ExchangerateCreate',
'pages.exchangerate.exchangerate-edit' => 'App\\Http\\Livewire\\Pages\\Exchangerate\\ExchangerateEdit',
'pages.exchangerate.exchangerate-index' => 'App\\Http\\Livewire\\Pages\\Exchangerate\\ExchangerateIndex',
'pages.exchangerate.exchangerate-upload' => 'App\\Http\\Livewire\\Pages\\Exchangerate\\ExchangerateUpload',
'pages.format-file-master.file-create' => 'App\\Http\\Livewire\\Pages\\FormatFileMaster\\FileCreate',
'pages.format-file-master.file-index' => 'App\\Http\\Livewire\\Pages\\FormatFileMaster\\FileIndex',
'pages.group.group-create' => 'App\\Http\\Livewire\\Pages\\Group\\GroupCreate',
'pages.group.group-edit' => 'App\\Http\\Livewire\\Pages\\Group\\GroupEdit',
'pages.group.group-index' => 'App\\Http\\Livewire\\Pages\\Group\\GroupIndex',
'pages.parameter.parameter-create' => 'App\\Http\\Livewire\\Pages\\Parameter\\ParameterCreate',
'pages.parameter.parameter-edit' => 'App\\Http\\Livewire\\Pages\\Parameter\\ParameterEdit',
'pages.parameter.parameter-index' => 'App\\Http\\Livewire\\Pages\\Parameter\\ParameterIndex',
'pages.patch.modal-edit-code' => 'App\\Http\\Livewire\\Pages\\Patch\\ModalEditCode',
'pages.patch.modal-form-patch-file' => 'App\\Http\\Livewire\\Pages\\Patch\\ModalFormPatchFile',
'pages.patch.patch-create' => 'App\\Http\\Livewire\\Pages\\Patch\\PatchCreate',
'pages.patch.patch-edit' => 'App\\Http\\Livewire\\Pages\\Patch\\PatchEdit',
'pages.patch.patch-index' => 'App\\Http\\Livewire\\Pages\\Patch\\PatchIndex',
'pages.patch.patch-master-file' => 'App\\Http\\Livewire\\Pages\\Patch\\PatchMasterFile',
'pages.role.role-create' => 'App\\Http\\Livewire\\Pages\\Role\\RoleCreate',
'pages.role.role-edit' => 'App\\Http\\Livewire\\Pages\\Role\\RoleEdit',
'pages.role.role-index' => 'App\\Http\\Livewire\\Pages\\Role\\RoleIndex',
'pages.send-patch.delete-multi-patch' => 'App\\Http\\Livewire\\Pages\\SendPatch\\DeleteMultiPatch',
'pages.send-patch.delete-multi-patch-box' => 'App\\Http\\Livewire\\Pages\\SendPatch\\DeleteMultiPatchBox',
'pages.send-patch.delete-multi-patch-list' => 'App\\Http\\Livewire\\Pages\\SendPatch\\DeleteMultiPatchList',
'pages.send-patch.send-multi-patch-box' => 'App\\Http\\Livewire\\Pages\\SendPatch\\SendMultiPatchBox',
'pages.send-patch.send-multi-patch-list' => 'App\\Http\\Livewire\\Pages\\SendPatch\\SendMultiPatchList',
'pages.send-patch.send-patch-edit' => 'App\\Http\\Livewire\\Pages\\SendPatch\\SendPatchEdit',
'pages.send-patch.send-patch-index' => 'App\\Http\\Livewire\\Pages\\SendPatch\\SendPatchIndex',
'pages.server-license.server-license-create' => 'App\\Http\\Livewire\\Pages\\ServerLicense\\ServerLicenseCreate',
'pages.server-license.server-license-edit' => 'App\\Http\\Livewire\\Pages\\ServerLicense\\ServerLicenseEdit',
'pages.server-license.server-license-index' => 'App\\Http\\Livewire\\Pages\\ServerLicense\\ServerLicenseIndex',
'pages.user.user-create' => 'App\\Http\\Livewire\\Pages\\User\\UserCreate',
'pages.user.user-edit' => 'App\\Http\\Livewire\\Pages\\User\\UserEdit',
'pages.user.user-index' => 'App\\Http\\Livewire\\Pages\\User\\UserIndex',
);
\ No newline at end of file
......@@ -96,13 +96,13 @@ return [
'temporary_file_upload' => [
'disk' => null, // Example: 'local', 's3' Default: 'default'
'rules' => null, // Example: ['file', 'mimes:png,jpg'] Default: ['required', 'file', 'max:12288'] (12MB)
'rules' => ['required', 'file', 'max:100000'], // Example: ['file', 'mimes:png,jpg'] Default: ['required', 'file', 'max:12288'] (12MB)
'directory' => null, // Example: 'tmp' Default 'livewire-tmp'
'middleware' => null, // Example: 'throttle:5,1' Default: 'throttle:60,1'
'preview_mimes' => [ // Supported file types for temporary pre-signed file URLs.
'png', 'gif', 'bmp', 'svg', 'wav', 'mp4',
'mov', 'avi', 'wmv', 'mp3', 'm4a',
'jpg', 'jpeg', 'mpga', 'webp', 'wma',
'jpg', 'jpeg', 'mpga', 'webp', 'wma', 'inc','php'
],
'max_upload_time' => 5, // Max duration (in minutes) before an upload gets invalidated.
],
......
......@@ -31,4 +31,9 @@ return [
'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],
'eec' => [
'url' => env('EEC_URL', '')
]
];
......@@ -38,7 +38,7 @@
@elseif ($currentContent === 'DischargePort')
<livewire:pages.dischargeport.dischargeport-index />
@elseif ($currentContent === 'MasterFile')
<livewire:pages.masterfile.masterfile-index />
<livewire:pages.patch.patch-master-file/>
@elseif ($currentContent === 'FormatFileMaster')
<livewire:pages.format-file-master.file-index />
@else
......
<div class="bg-main-container" x-data="{ notLimit: false }">
<div class="max-w-full mx-auto p-6">
<div class="flex justify-between items-center mb-6">
<h2 class="text-3xl font-semibold text-gray-800">Patch Master File</h2>
<a href="/patch" class="btn text-white bg-primary px-4 py-2 rounded hover:bg-primary-focus">
Back
</a>
</div>
<div class="bg-white p-6 rounded-lg shadow-md">
<div class="mb-4">
<label for="format_file_id" class="block text-gray-700 font-medium">Choose Format File</label>
<select id="format_file_id" wire:model.defer="format_file_id"
class="w-full mt-2 p-3 border border-gray-300 rounded-lg focus:ring-primary focus:border-primary">
@foreach ($formatFiles as $format )
<option value="{{ $format->formatservice_ID }}">{{ $format->name }}</option>
@endforeach
</select>
</div>
<div class="mb-4">
<label for="upload_file" class="block text-gray-700 font-medium">Upload File Data</label>
<div class="flex items-center mt-2">
@if ($file)
<div class="text-sm text-gray-600 dark:text-gray-300 mr-4">
Uploaded File: {{ $file->getClientOriginalName() }}
</div>
@endif
<span wire:loading>
<svg class="animate-spin h-5 w-5 text-primary m-3" xmlns="http://www.w3.org/2000/svg" fill="none"
viewBox="0 0 24 24">
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4">
</circle>
<path class="opacity-75" fill="currentColor"
d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.964 7.964 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z">
</path>
</svg>
</span>
<label for="file-upload"
class="btn bg-gray-200 text-gray-800 hover:bg-gray-300 focus:bg-gray-300 active:bg-gray-300 dark:bg-gray-500 dark:text-gray-50 dark:hover:bg-gray-450 dark:focus:bg-gray-450 dark:active:bg-gray-450/90">
<input tabindex="-1" id="file-upload" type="file" wire:model="file"
class="pointer-events-none absolute inset-0 h-full w-full opacity-0" />
<div class="flex items-center space-x-2">
<svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5" fill="none" viewBox="0 0 24 24"
stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12" />
</svg>
<span>Choose File</span>
</div>
@error('file')
<span class="text-red-600 text-sm mt-2">{{ $message }}</span>
@enderror
</label>
</div>
</div>
<div class="mb-4">
<label for="limit_data" class="block text-gray-700 font-medium">Limit Data per Patch</label>
<select id="limit_data" class="w-full mt-2 p-3 border border-gray-300 rounded-lg focus:ring-primary focus:border-primary"
:disabled="notLimit" wire:model.defer="limit">
<option value="10000">10,000</option>
<!-- Add more options or use a loop to generate -->
</select>
<div class="mt-3">
<label class="inline-flex items-center">
<input class="form-checkbox is-basic h-4 w-4 rounded border-slate-400/70 checked:bg-primary checked:border-primary focus:bordark:bg-navy-900 dark:border-navy-500 dark:checked:bg-accent dark:checked:border-accent dark:hover:border-accent dark:focus:border-accent" type="checkbox"
x-model="notLimit" wire:model.defer="noLimit"/>
<span class="ml-2">Not Limit</span>
</label>
</div>
</div>
<div class="mb-4">
<label class="inline-flex items-center">
<input wire:model.defer="genWithSmartUpdate" class="form-checkbox is-basic h-4 w-4 rounded border-slate-400/70 checked:bg-primary checked:border-primary focus:border-primary dark:bg-navy-900 dark:border-navy-500 dark:checked:bg-accent dark:checked:border-accent dark:hover:border-accent dark:focus:border-accent" type="checkbox" value="">
<span class="ml-2">Gen patch ด้วย function spnsmartupdatedecode</span>
</label>
</div>
<div class="mb-4 flex items-center space-x-4">
<label class="inline-flex items-center">
<input wire:model.defer="createPatch" class="form-checkbox is-basic h-4 w-4 rounded border-slate-400/70 checked:bg-primary checked:border-primary focus:border-primary dark:bg-navy-900 dark:border-navy-500 dark:checked:bg-accent dark:checked:border-accent dark:hover:border-accent dark:focus:border-accent" type="checkbox" value="">
<span class="ml-2">Create Patch</span>
</label>
<label class="inline-flex items-center">
<input wire:model.defer="sendToEec" class="form-checkbox is-basic h-4 w-4 rounded border-slate-400/70 checked:bg-primary checked:border-primary focus:border-primary dark:bg-navy-900 dark:border-navy-500 dark:checked:bg-accent dark:checked:border-accent dark:hover:border-accent dark:focus:border-accent" type="checkbox" value="">
<span class="ml-2">Send To EEC</span>
</label>
</div>
<div class="text-right">
<button class="bg-primary text-white px-4 py-2 rounded-md hover:bg-primary-focus focus:outline-none focus:ring-2 focus:ring-primary focus:ring-opacity-50"
wire:click="createPatch">
Create Patch
</button>
</div>
</div>
</div>
</div>
<div class="bg-main-container">
<div class="max-w-full mx-auto px-5 ">
<div class="max-w-full mx-auto p-5 ">
{{-- <div class="flex flex-wrap items-center"> --}}
<h2 class="text-2xl text-black ">
Server License Management
......
<div class="border-0 shadow-none">
` <div wire:loading.class="" wire:loading.class.remove="hidden" wire:target="save"
<div class="border-0 shadow-none ">
<div wire:loading.class="" wire:loading.class.remove="hidden" wire:target="save"
class="absolute inset-0 items-center justify-center z-50 bg-slate-50 dark:bg-navy-900 hidden">
<div class="flex justify-center items-center ">
<div class="items-center h-100vh" style="align-content: center;">
......
......@@ -16,6 +16,7 @@ use App\Http\Controllers\CompanyController;
use App\Http\Controllers\ConfigOptionController;
use App\Http\Controllers\ExchangeRateController;
use App\Http\Controllers\ConsigneeController;
use App\Http\Controllers\ConvertToJsonController;
use App\Http\Controllers\DeletePatchController;
use App\Http\Controllers\DischargePortController;
use App\Http\Controllers\FormatFileMasterContrller;
......@@ -51,7 +52,7 @@ Route::middleware('guest')->group(function () {
Route::middleware('auth')->group(function () {
Route::post('/logout', [\App\Http\Controllers\AuthController::class, 'logout'])->name('logout');
Route::get('/convert-to-json', [ConvertToJsonController::class, 'convert']);
Route::get('/', [HomeController::class, 'index'])->name('index');
Route::get('/get-serverlicense', [ServerLicenseController::class, 'getAllServerKey']);
......
<?php
$DATABASE='master_permissiongoods';
$PKEY[0]['FILD'] = 'tariffClass';
$PKEY[1]['FILD'] = 'tariffStat';
$PKEY[2]['FILD'] = 'startDate';
$PKEY[3]['FILD'] = 'permissionGoodsType';
$PKEY[4]['FILD'] = 'companyTaxNo';
$FORMAT[0]['NAME']='TariffClassification';
$FORMAT[0]['TYPE']='12A';
$FORMAT[0]['FILD']='tariffClass';
$FORMAT[1]['NAME']='Tariff Stat';
$FORMAT[1]['TYPE']='3A';
$FORMAT[1]['FILD']='tariffStat';
$FORMAT[2]['NAME']='Permission Goods Type';
$FORMAT[2]['TYPE']='2A';
$FORMAT[2]['FILD']='permissionGoodsType';
$FORMAT[3]['NAME']='Company Tax Number';
$FORMAT[3]['TYPE']='17A';
$FORMAT[3]['FILD']='companyTaxNo';
$FORMAT[4]['NAME']='Validate Indicator';
$FORMAT[4]['TYPE']='2A';
$FORMAT[4]['FILD']='validateIndicator';
$FORMAT[5]['NAME']='countryCode';
$FORMAT[5]['TYPE']='2A';
$FORMAT[5]['FILD']='countryCode';
$FORMAT[6]['NAME']='Quantity';
$FORMAT[6]['TYPE']='15N';
$FORMAT[6]['FILD']='quantity';
$FORMAT[7]['NAME']='Quantity Unit';
$FORMAT[7]['TYPE']='3A';
$FORMAT[7]['FILD']='quantityUnit';
$FORMAT[8]['NAME']='Permission Goods Thai Description';
$FORMAT[8]['TYPE']='512A';
$FORMAT[8]['FILD']='thDescription';
$FORMAT[9]['NAME']='Permission Goods English Description';
$FORMAT[9]['TYPE']='512A';
$FORMAT[9]['FILD']='enDescription';
$FORMAT[10]['NAME']='Condition';
$FORMAT[10]['TYPE']='512A';
$FORMAT[10]['FILD']='condition';
$FORMAT[11]['NAME']='Announce Number';
$FORMAT[11]['TYPE']='10N';
$FORMAT[11]['FILD']='announceNo';
$FORMAT[12]['NAME']='Announce Date';
$FORMAT[12]['TYPE']='8N';
$FORMAT[12]['FILD']='announceDate';
$FORMAT[13]['NAME']='Start Date';
$FORMAT[13]['TYPE']='8N';
$FORMAT[13]['FILD']='startDate';
$FORMAT[14]['NAME']='Expired Date';
$FORMAT[14]['TYPE']='8N';
$FORMAT[14]['FILD']='expiredDate';
?>
\ No newline at end of file
<?php
$DATABASE='master_permissiongoods';
$PKEY[0]['FILD'] = 'tariffClass';
$PKEY[1]['FILD'] = 'tariffStat';
$PKEY[2]['FILD'] = 'startDate';
$PKEY[3]['FILD'] = 'permissionGoodsType';
$PKEY[4]['FILD'] = 'companyTaxNo';
$FORMAT[0]['NAME']='TariffClassification';
$FORMAT[0]['TYPE']='12A';
$FORMAT[0]['FILD']='tariffClass';
$FORMAT[1]['NAME']='Tariff Stat';
$FORMAT[1]['TYPE']='3A';
$FORMAT[1]['FILD']='tariffStat';
$FORMAT[2]['NAME']='Permission Goods Type';
$FORMAT[2]['TYPE']='2A';
$FORMAT[2]['FILD']='permissionGoodsType';
$FORMAT[3]['NAME']='Company Tax Number';
$FORMAT[3]['TYPE']='17A';
$FORMAT[3]['FILD']='companyTaxNo';
$FORMAT[4]['NAME']='Validate Indicator';
$FORMAT[4]['TYPE']='2A';
$FORMAT[4]['FILD']='validateIndicator';
$FORMAT[5]['NAME']='countryCode';
$FORMAT[5]['TYPE']='2A';
$FORMAT[5]['FILD']='countryCode';
$FORMAT[6]['NAME']='Quantity';
$FORMAT[6]['TYPE']='15N';
$FORMAT[6]['FILD']='quantity';
$FORMAT[7]['NAME']='Quantity Unit';
$FORMAT[7]['TYPE']='3A';
$FORMAT[7]['FILD']='quantityUnit';
$FORMAT[8]['NAME']='Permission Goods Thai Description';
$FORMAT[8]['TYPE']='3000A';
$FORMAT[8]['FILD']='thDescription';
$FORMAT[9]['NAME']='Permission Goods English Description';
$FORMAT[9]['TYPE']='3000A';
$FORMAT[9]['FILD']='enDescription';
$FORMAT[10]['NAME']='Condition';
$FORMAT[10]['TYPE']='512A';
$FORMAT[10]['FILD']='condition';
$FORMAT[11]['NAME']='Announce Number';
$FORMAT[11]['TYPE']='10N';
$FORMAT[11]['FILD']='announceNo';
$FORMAT[12]['NAME']='Announce Date';
$FORMAT[12]['TYPE']='8N';
$FORMAT[12]['FILD']='announceDate';
$FORMAT[13]['NAME']='Start Date';
$FORMAT[13]['TYPE']='8N';
$FORMAT[13]['FILD']='startDate';
$FORMAT[14]['NAME']='Expired Date';
$FORMAT[14]['TYPE']='8N';
$FORMAT[14]['FILD']='expiredDate';
?>
\ No newline at end of file
<?php
$DATABASE='master_tariff';
$PKEY[0]['FILD']='tariffclas';
$FORMAT[0]['NAME']='TariffClassification';
$FORMAT[0]['TYPE']='12N';
$FORMAT[0]['FILD']='tariffclas';
$FORMAT[0]['FORMAT']='';
$FORMAT[1]['NAME']='TariffDescription';
$FORMAT[1]['TYPE']='3000A';
$FORMAT[1]['FILD']='tdesc1';
$FORMAT[1]['FORMAT']='';
$FORMAT[2]['NAME']='TariffEnglishDescription';
$FORMAT[2]['TYPE']='3000A';
$FORMAT[2]['FILD']='edesc1';
$FORMAT[2]['FORMAT']='';
$FORMAT[3]['NAME']='StartDate';
$FORMAT[3]['TYPE']='8N';
$FORMAT[3]['FILD']='startdate';
$FORMAT[3]['FORMAT']='';
$FORMAT[4]['NAME']='FinishDate';
$FORMAT[4]['TYPE']='8N';
$FORMAT[4]['FILD']='finishdate';
$FORMAT[4]['FORMAT']='';
?>
\ No newline at end of file
<?php
$DATABASE='master_statcode';
$PKEY[0]['FILD']='tariffclas';
$PKEY[1]['FILD']='tariffstat';
$FORMAT[0]['NAME']='TariffClassification';
$FORMAT[0]['TYPE']='12N';
$FORMAT[0]['FILD']='tariffclas';
$FORMAT[0]['FORMAT']='';
$FORMAT[1]['NAME']='StatisticalCode';
$FORMAT[1]['TYPE']='3N';
$FORMAT[1]['FILD']='tariffstat';
$FORMAT[1]['FORMAT']='';
$FORMAT[2]['NAME']='StatisticalDescription';
$FORMAT[2]['TYPE']='256A';
$FORMAT[2]['FILD']='desc1';
$FORMAT[2]['FORMAT']='';
$FORMAT[3]['NAME']='StatisticalEnglishDescription';
$FORMAT[3]['TYPE']='256A';
$FORMAT[3]['FILD']='desc2';
$FORMAT[3]['FORMAT']='';
$FORMAT[4]['NAME']='UnitCode';
$FORMAT[4]['TYPE']='3A';
$FORMAT[4]['FILD']='unitcode';
$FORMAT[4]['FORMAT']='';
$FORMAT[5]['NAME']='AnnounceNumber';
$FORMAT[5]['TYPE']='10A';
$FORMAT[5]['FILD']='announceno';
$FORMAT[5]['FORMAT']='';
$FORMAT[6]['NAME']='AnnounceDate';
$FORMAT[6]['TYPE']='8N';
$FORMAT[6]['FILD']='announcedd';
$FORMAT[6]['FORMAT']='';
$FORMAT[7]['NAME']='StartDate';
$FORMAT[7]['TYPE']='8N';
$FORMAT[7]['FILD']='startdate';
$FORMAT[7]['FORMAT']='';
$FORMAT[8]['NAME']='FinishDate';
$FORMAT[8]['TYPE']='8N';
$FORMAT[8]['FILD']='finishdate';
$FORMAT[8]['FORMAT']='';
?>
\ No newline at end of file
<?php
$DATABASE='master_extariff';
$PKEY[0]['FILD']='extariff';
$PKEY[1]['FILD']='tariffseq';
$FORMAT[0]['NAME']='ExportTariff';
$FORMAT[0]['TYPE']='12A';
$FORMAT[0]['FILD']="extariff";
$FORMAT[0]['FORMAT']='';
$FORMAT[1]['NAME']='TariffSequence';
$FORMAT[1]['TYPE']='5N';
$FORMAT[1]['FILD']="tariffseq";
$FORMAT[1]['FORMAT']='';
$FORMAT[2]['NAME']='DutyCode';
$FORMAT[2]['TYPE']='1A';
$FORMAT[2]['FILD']="dutycode";
$FORMAT[2]['FORMAT']='';
$FORMAT[3]['NAME']='DutyRate';
$FORMAT[3]['TYPE']='17N DE3';
$FORMAT[3]['FILD']="advalrate";
$FORMAT[3]['FORMAT']='';
$FORMAT[4]['NAME']='SpecificDutyRate';
$FORMAT[4]['TYPE']='17N DE3';
$FORMAT[4]['FILD']="specrate";
$FORMAT[4]['FORMAT']='';
$FORMAT[5]['NAME']='SpecificCode';
$FORMAT[5]['TYPE']='3A';
$FORMAT[5]['FILD']="speccode";
$FORMAT[5]['FORMAT']='';
$FORMAT[6]['NAME']='Description';
$FORMAT[6]['TYPE']='3000A';
$FORMAT[6]['FILD']="desc1";
$FORMAT[6]['FORMAT']='';
$FORMAT[7]['NAME']='EnglishDescription';
$FORMAT[7]['TYPE']='3000A';
$FORMAT[7]['FILD']="desc3";
$FORMAT[7]['FORMAT']='';
$FORMAT[8]['NAME']='AnnounceNumber';
$FORMAT[8]['TYPE']='10A';
$FORMAT[8]['FILD']="announceno";
$FORMAT[8]['FORMAT']='';
$FORMAT[9]['NAME']='AnnounceDate';
$FORMAT[9]['TYPE']='8N';
$FORMAT[9]['FILD']="announcedd";
$FORMAT[9]['FORMAT']='';
$FORMAT[10]['NAME']='AnnounceDescription';
$FORMAT[10]['TYPE']='256A';
$FORMAT[10]['FILD']="announcedesc";
$FORMAT[10]['FORMAT']='';
$FORMAT[11]['NAME']='StartDate';
$FORMAT[11]['TYPE']='8N';
$FORMAT[11]['FILD']="startdate";
$FORMAT[11]['FORMAT']='';
$FORMAT[12]['NAME']='FinishDate';
$FORMAT[12]['TYPE']='8N';
$FORMAT[12]['FILD']="finishdate";
$FORMAT[12]['FORMAT']='';
?>
\ No newline at end of file
<?php
$DATABASE='master_imtariff';
$PKEY[0]['FILD']='imtariff';
$PKEY[1]['FILD']='tariffseq';
$FORMAT[0]['NAME']='TariffCode';
$FORMAT[0]['TYPE']='12A';
$FORMAT[0]['FILD']='imtariff';
$FORMAT[0]['FORMAT']='';
$FORMAT[1]['NAME']='TariffSequence';
$FORMAT[1]['TYPE']='5N';
$FORMAT[1]['FILD']='tariffseq';
$FORMAT[1]['FORMAT']='';
$FORMAT[2]['NAME']='DutyCode';
$FORMAT[2]['TYPE']='1A';
$FORMAT[2]['FILD']='dutycode';
$FORMAT[2]['FORMAT']='';
$FORMAT[3]['NAME']='DutyRate';
$FORMAT[3]['TYPE']='17N DE 3';
$FORMAT[3]['FILD']='advalrate';
$FORMAT[3]['FORMAT']='';
$FORMAT[4]['NAME']='SpecificDutyRate';
$FORMAT[4]['TYPE']='17N DE 3';
$FORMAT[4]['FILD']='specrate';
$FORMAT[4]['FORMAT']='';
$FORMAT[5]['NAME']='SpecificCode';
$FORMAT[5]['TYPE']='3A';
$FORMAT[5]['FILD']='speccode';
$FORMAT[5]['FORMAT']='';
$FORMAT[6]['NAME']='Description';
$FORMAT[6]['TYPE']='3000A';
$FORMAT[6]['FILD']='desc1';
$FORMAT[6]['FORMAT']='';
$FORMAT[7]['NAME']='EnglishDescription';
$FORMAT[7]['TYPE']='3000A';
$FORMAT[7]['FILD']='desc3';
$FORMAT[7]['FORMAT']='';
$FORMAT[8]['NAME']='AnnounceNumber';
$FORMAT[8]['TYPE']='10A';
$FORMAT[8]['FILD']='announceno';
$FORMAT[8]['FORMAT']='';
$FORMAT[9]['NAME']='AnnounceDate';
$FORMAT[9]['TYPE']='8N';
$FORMAT[9]['FILD']='announcedd';
$FORMAT[9]['FORMAT']='';
$FORMAT[10]['NAME']='AnnounceDescription';
$FORMAT[10]['TYPE']='256A';
$FORMAT[10]['FILD']='announcedesc';
$FORMAT[10]['FORMAT']='';
$FORMAT[11]['NAME']='Start Date';
$FORMAT[11]['TYPE']='8N';
$FORMAT[11]['FILD']='startdate';
$FORMAT[11]['FORMAT']='';
$FORMAT[12]['NAME']='FinishDate';
$FORMAT[12]['TYPE']='8N';
$FORMAT[12]['FILD']='finishdate';
$FORMAT[12]['FORMAT']='';
?>
\ No newline at end of file
<?php
$DATABASE='master_imduty';
$PKEY[0]['FILD']='tariffclas';
$PKEY[1]['FILD']='tariffseq';
$PKEY[2]['FILD']='privilege';
$FORMAT[0]['NAME']='TariffCode';
$FORMAT[0]['TYPE']='12N';
$FORMAT[0]['FILD']='tariffclas';
$FORMAT[0]['FORMAT']='';
$FORMAT[1]['NAME']='TariffSequence';
$FORMAT[1]['TYPE']='5N';
$FORMAT[1]['FILD']='tariffseq';
$FORMAT[1]['FORMAT']='';
$FORMAT[2]['NAME']='PrivilegeCode';
$FORMAT[2]['TYPE']='3A';
$FORMAT[2]['FILD']='privilege';
$FORMAT[2]['FORMAT']='';
$FORMAT[3]['NAME']='DutyCode';
$FORMAT[3]['TYPE']='1A';
$FORMAT[3]['FILD']='dutycode';
$FORMAT[3]['FORMAT']='';
$FORMAT[4]['NAME']='DutyRate';
$FORMAT[4]['TYPE']='17N DE 3';
$FORMAT[4]['FILD']='advalrate';
$FORMAT[4]['FORMAT']='';
$FORMAT[5]['NAME']='SpecificDutyRate';
$FORMAT[5]['TYPE']='17N DE 3';
$FORMAT[5]['FILD']='specrate';
$FORMAT[5]['FORMAT']='';
$FORMAT[6]['NAME']='SpecificCode';
$FORMAT[6]['TYPE']='3A';
$FORMAT[6]['FILD']='speccode';
$FORMAT[6]['FORMAT']='';
$FORMAT[7]['NAME']='AnnounceNumber';
$FORMAT[7]['TYPE']='10A';
$FORMAT[7]['FILD']='announceno';
$FORMAT[7]['FORMAT']='';
$FORMAT[8]['NAME']='AnnounceDate';
$FORMAT[8]['TYPE']='8N';
$FORMAT[8]['FILD']='announcedd';
$FORMAT[8]['FORMAT']='';
$FORMAT[9]['NAME']='AnnounceDescription';
$FORMAT[9]['TYPE']='256A';
$FORMAT[9]['FILD']='desc1';
$FORMAT[9]['FORMAT']='';
$FORMAT[10]['NAME']='Start Date';
$FORMAT[10]['TYPE']='8N';
$FORMAT[10]['FILD']='startdate';
$FORMAT[10]['FORMAT']='';
$FORMAT[11]['NAME']='FinishDate';
$FORMAT[11]['TYPE']='8N';
$FORMAT[11]['FILD']='finishdate';
$FORMAT[11]['FORMAT']='';
?>
\ No newline at end of file
<?php
$DATABASE='master_country';
$PKEY[0]['FILD']='code';
$FORMAT[0]['NAME']='Code';
$FORMAT[0]['TYPE']='2A';
$FORMAT[0]['FILD']='code';
$FORMAT[0]['FORMAT']='';
$FORMAT[1]['NAME']='Name';
$FORMAT[1]['TYPE']='72A';
$FORMAT[1]['FILD']='name';
$FORMAT[1]['FORMAT']='';
$FORMAT[2]['NAME']='currency';
$FORMAT[2]['TYPE']='3A';
$FORMAT[2]['FILD']='currency';
$FORMAT[2]['FORMAT']='';
?>
\ No newline at end of file
<?php
$DATABASE='master_country';
$PKEY[0]['FILD']='code';
$FORMAT[0]['NAME']='Code';
$FORMAT[0]['TYPE']='2A';
$FORMAT[0]['FILD']='code';
$FORMAT[0]['FORMAT']='';
$FORMAT[1]['NAME']='Name';
$FORMAT[1]['TYPE']='35A';
$FORMAT[1]['FILD']='name';
$FORMAT[1]['FORMAT']='';
$FORMAT[2]['NAME']='currency';
$FORMAT[2]['TYPE']='3A';
$FORMAT[2]['FILD']='currency';
$FORMAT[2]['FORMAT']='';
$FORMAT[3]['NAME']='wtocountry';
$FORMAT[3]['TYPE']='1A';
$FORMAT[3]['FILD']='wtocountry';
$FORMAT[3]['FORMAT']='';
?>
\ No newline at end of file
<?php
$DATABASE='master_privilege';
$PKEY[0]['FILD']='code';
$FORMAT[0]['NAME']='code';
$FORMAT[0]['TYPE']='3A';
$FORMAT[0]['FILD']='code';
$FORMAT[1]['NAME']='desc1';
$FORMAT[1]['TYPE']='256A';
$FORMAT[1]['FILD']='desc1';
$FORMAT[2]['NAME']='announceno';
$FORMAT[2]['TYPE']='10A';
$FORMAT[2]['FILD']='announceno';
$FORMAT[3]['NAME']='announcedd';
$FORMAT[3]['TYPE']='8A';
$FORMAT[3]['FILD']='announcedd';
$FORMAT[4]['NAME']='announcedesc';
$FORMAT[4]['TYPE']='256A';
$FORMAT[4]['FILD']='announcedesc';
$FORMAT[5]['NAME']='startdate';
$FORMAT[5]['TYPE']='8A';
$FORMAT[5]['FILD']='startdate';
$FORMAT[6]['NAME']='finishdate';
$FORMAT[6]['TYPE']='8A';
$FORMAT[6]['FILD']='finishdate';
?>
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment