2025-10-26 16:09:56 +07:00
|
|
|
part of 'extension.dart';
|
|
|
|
|
|
|
|
|
|
extension StringX on String {
|
2025-10-26 23:10:23 +07:00
|
|
|
String toTitleCase() {
|
|
|
|
|
if (isEmpty) return '';
|
|
|
|
|
return split(' ')
|
|
|
|
|
.map((word) {
|
|
|
|
|
if (word.isEmpty) return '';
|
|
|
|
|
return word[0].toUpperCase() + word.substring(1).toLowerCase();
|
|
|
|
|
})
|
|
|
|
|
.join(' ');
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-27 15:27:21 +07:00
|
|
|
int get toIntegerFromText {
|
|
|
|
|
final cleanedText = replaceAll(RegExp(r'[^0-9]'), '');
|
|
|
|
|
final parsedValue = int.tryParse(cleanedText) ?? 0;
|
|
|
|
|
return parsedValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String get currencyFormatRpV2 {
|
|
|
|
|
final parsedValue = int.tryParse(this) ?? 0;
|
|
|
|
|
return NumberFormat.currency(
|
|
|
|
|
locale: 'id',
|
|
|
|
|
symbol: 'Rp ',
|
|
|
|
|
decimalDigits: 0,
|
|
|
|
|
).format(parsedValue);
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-26 16:09:56 +07:00
|
|
|
TableStatusType toTableStatusType() {
|
|
|
|
|
switch (this) {
|
|
|
|
|
case 'available':
|
|
|
|
|
return TableStatusType.available;
|
|
|
|
|
case 'occupied':
|
|
|
|
|
return TableStatusType.occupied;
|
|
|
|
|
default:
|
|
|
|
|
return TableStatusType.unknown;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-10-31 14:33:02 +07:00
|
|
|
|
|
|
|
|
VoidType toVoidType() {
|
|
|
|
|
switch (this) {
|
2025-10-31 19:24:15 +07:00
|
|
|
case 'ALL':
|
2025-10-31 14:33:02 +07:00
|
|
|
return VoidType.all;
|
2025-10-31 19:24:15 +07:00
|
|
|
case 'ITEM':
|
2025-10-31 14:33:02 +07:00
|
|
|
return VoidType.item;
|
|
|
|
|
default:
|
|
|
|
|
return VoidType.unknown;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-10-31 19:24:15 +07:00
|
|
|
|
|
|
|
|
SplitType toSplitType() {
|
|
|
|
|
switch (this) {
|
|
|
|
|
case 'AMOUNT':
|
|
|
|
|
return SplitType.amount;
|
|
|
|
|
case 'ITEM':
|
|
|
|
|
return SplitType.item;
|
|
|
|
|
default:
|
|
|
|
|
return SplitType.unknown;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-10-26 16:09:56 +07:00
|
|
|
}
|