mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-19 12:33:56 +00:00
158 lines
4.0 KiB
PHP
158 lines
4.0 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\General;
|
|
|
|
use Illuminate\Http\Resources\Json\ResourceCollection;
|
|
use Illuminate\Support\Facades\Log;
|
|
use Illuminate\Support\Str;
|
|
use NumberToWords\NumberToWords;
|
|
|
|
class Helper
|
|
{
|
|
|
|
/**
|
|
* @param string $methodName
|
|
* @return string
|
|
*/
|
|
static function getPropertyName(string $methodName){
|
|
return Str::snake(str_replace('get', '', $methodName));
|
|
}
|
|
|
|
/**
|
|
* @param string $className
|
|
* @return array
|
|
*/
|
|
static function getClassMethodsArray(string $className){
|
|
return array_slice(get_class_methods($className), 1);
|
|
}
|
|
|
|
/**
|
|
* @param $log
|
|
* @return array
|
|
*/
|
|
static function debugLogger($log){
|
|
if($log && isset($log['message'])){
|
|
$message = $log['message'];
|
|
$substring = 'No data were found';
|
|
if (isset($message)) {
|
|
if (strpos($message, $substring) !== false) {
|
|
// Log::info('Message exist');
|
|
} else {
|
|
Log::info($log['message']);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param null|string $param
|
|
* @return array
|
|
*/
|
|
static function deserializeFilters($param): array {
|
|
if(gettype($param) == "array"){
|
|
$json = implode(',', $param);
|
|
}
|
|
else{
|
|
$json = $param;
|
|
}
|
|
return $json !== null ? collect(json_decode($json))->toArray() : [];
|
|
}
|
|
|
|
/**
|
|
* @param ResourceCollection $collection
|
|
* @return array
|
|
*/
|
|
static function collectionResponse(ResourceCollection $collection){
|
|
return json_decode($collection->response()->getContent(), true);
|
|
}
|
|
|
|
/**
|
|
* Convert a given number to words based on the specified locale.
|
|
*
|
|
* @param int|float $number
|
|
* @param string $locale The locale to use for conversion (default is 'en').
|
|
* @return string
|
|
*/
|
|
static function convert($number, $locale = 'en')
|
|
{
|
|
$numberToWords = new NumberToWords();
|
|
$numberTransformer = $numberToWords->getNumberTransformer($locale);
|
|
|
|
$number = number_format((float)$number, 2, '.', '');
|
|
[$ringgit, $cents] = explode('.', $number);
|
|
|
|
$ringgitWords = $numberTransformer->toWords((int)$ringgit);
|
|
$centsWords = $numberTransformer->toWords((int)$cents);
|
|
|
|
return strtoupper('ringgit malaysia ' . $ringgitWords . ' and ' . $centsWords . ' cents only');
|
|
}
|
|
|
|
public static function getLHDNStateCodeByName($name)
|
|
{
|
|
$path = resource_path('data/lhdn/StateCodes.json');
|
|
|
|
if (!file_exists($path)) {
|
|
return null;
|
|
}
|
|
|
|
$json = file_get_contents($path);
|
|
$data = json_decode($json, true);
|
|
|
|
if (!is_array($data)) {
|
|
return null;
|
|
}
|
|
|
|
$name = strtolower(trim($name));
|
|
|
|
// Step 1: Try exact match
|
|
foreach ($data as $item) {
|
|
if (
|
|
isset($item['State']) &&
|
|
strtolower(trim($item['State'])) === $name
|
|
) {
|
|
return $item['Code'] ?? null;
|
|
}
|
|
}
|
|
|
|
// Step 2: Try partial match
|
|
foreach ($data as $item) {
|
|
if (
|
|
isset($item['State']) &&
|
|
str_contains(strtolower($item['State']), $name)
|
|
) {
|
|
return $item['Code'] ?? null;
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public static function getLHDNMsicDescriptionByCode($code)
|
|
{
|
|
$path = resource_path('data/lhdn/MSICSubCategoryCodes.json');
|
|
|
|
if (!file_exists($path)) {
|
|
return null;
|
|
}
|
|
|
|
$json = file_get_contents($path);
|
|
$data = json_decode($json, true);
|
|
|
|
if (!is_array($data)) {
|
|
return null;
|
|
}
|
|
|
|
foreach ($data as $item) {
|
|
if (
|
|
isset($item['Code']) &&
|
|
$item['Code'] === $code
|
|
) {
|
|
return $item['Description'] ?? null;
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
}
|