84 lines
2.6 KiB
PHP
84 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace App;
|
|
|
|
use DateTime;
|
|
|
|
class Helper
|
|
{
|
|
public static function formatNumber($amount)
|
|
{
|
|
return number_format($amount, 2, '.', ',');
|
|
}
|
|
|
|
public static function formatDate($date_string)
|
|
{
|
|
return (new DateTime($date_string))->format("d-m-Y");
|
|
}
|
|
|
|
public static function terbilangBm(int $number): string
|
|
{
|
|
$units = [
|
|
0 => 'kosong',
|
|
1 => 'satu',
|
|
2 => 'dua',
|
|
3 => 'tiga',
|
|
4 => 'empat',
|
|
5 => 'lima',
|
|
6 => 'enam',
|
|
7 => 'tujuh',
|
|
8 => 'lapan',
|
|
9 => 'sembilan',
|
|
10 => 'sepuluh',
|
|
11 => 'sebelas'
|
|
];
|
|
|
|
if ($number < 0) return 'negatif ' . self::terbilangBm(abs($number));
|
|
if ($number < 12) return $units[$number];
|
|
if ($number < 20) return self::terbilangBm($number - 10) . ' belas';
|
|
if ($number < 100) {
|
|
$tens = intdiv($number, 10);
|
|
$rest = $number % 10;
|
|
return self::terbilangBm($tens) . ' puluh' . ($rest ? ' ' . self::terbilangBm($rest) : '');
|
|
}
|
|
if ($number < 200) return 'seratus' . ($number > 100 ? ' ' . self::terbilangBm($number - 100) : '');
|
|
if ($number < 1000) {
|
|
$hundreds = intdiv($number, 100);
|
|
$rest = $number % 100;
|
|
return self::terbilangBm($hundreds) . ' ratus' . ($rest ? ' ' . self::terbilangBm($rest) : '');
|
|
}
|
|
if ($number < 2000) return 'seribu' . ($number > 1000 ? ' ' . self::terbilangBm($number - 1000) : '');
|
|
if ($number < 1000000) {
|
|
$thousands = intdiv($number, 1000);
|
|
$rest = $number % 1000;
|
|
return self::terbilangBm($thousands) . ' ribu' . ($rest ? ' ' . self::terbilangBm($rest) : '');
|
|
}
|
|
if ($number < 1000000000) {
|
|
$millions = intdiv($number, 1000000);
|
|
$rest = $number % 1000000;
|
|
return self::terbilangBm($millions) . ' juta' . ($rest ? ' ' . self::terbilangBm($rest) : '');
|
|
}
|
|
return 'terlalu besar';
|
|
}
|
|
|
|
public static function ringgitTerbilang($amount, bool $tambahSahaja = true): string
|
|
{
|
|
$formatted = number_format((float)$amount, 2, '.', '');
|
|
[$ringgitStr, $senStr] = explode('.', $formatted);
|
|
|
|
$ringgit = (int)$ringgitStr;
|
|
$sen = (int)$senStr;
|
|
|
|
$parts = [];
|
|
$parts[] = self::terbilangBm($ringgit) . ' ringgit';
|
|
|
|
if ($sen > 0) {
|
|
$parts[] = 'dan ' . self::terbilangBm($sen) . ' sen';
|
|
} elseif ($tambahSahaja) {
|
|
$parts[] = 'sahaja';
|
|
}
|
|
|
|
return trim(preg_replace('/\s+/', ' ', implode(' ', $parts)));
|
|
}
|
|
}
|