Files
enaklo-flutter/lib/sample/reward_sample_data.dart
T
efrilmandClaude Opus 5.5 f5e3075205 EnakPoint & EnakCoin wallet, PIN, outlet, order, community, reward
- Wallet EnakPoint & EnakCoin: beranda, riwayat, saldo kedaluwarsa, kode
  bayar, tukar EnakCoin, transfer
- PIN (buat, ganti, lupa), outlet, riwayat order, game spin
- Halaman community, webview, coming soon, dan ikon menu beranda baru
- Redesign Reward Saya: kartu tiket, filter chip, detail kode + QR
- Hapus customer point loader, menu, dan checkout lama
- Base URL ke enaklo-pos-api.altru.id

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 01:43:22 +07:00

140 lines
4.2 KiB
Dart

// Models
enum RewardStatus { active, used, expired }
class Reward {
final String id;
final String name;
final String emoji;
final String description;
final String categoryName;
final int pointsUsed;
final DateTime redeemedAt;
final DateTime validUntil;
final RewardStatus status;
final String? couponCode;
final DateTime? usedAt;
final String? termsAndConditions;
const Reward({
required this.id,
required this.name,
required this.emoji,
required this.description,
required this.categoryName,
required this.pointsUsed,
required this.redeemedAt,
required this.validUntil,
required this.status,
this.couponCode,
this.usedAt,
this.termsAndConditions,
});
}
// Sample Data
//
// 1 EnakPoint = potongan Rp 1, jadi harga reward dibuat sedikit di bawah harga
// menunya supaya menukar lebih untung daripada bayar langsung pakai poin.
// Menu gratis berlaku 14 hari dan voucher potongan 30 hari sejak ditukar.
DateTime _daysAgo(int days) => DateTime.now().subtract(Duration(days: days));
DateTime _daysFromNow(int days) => DateTime.now().add(Duration(days: days));
/// Getter, bukan `final`, supaya perubahan data langsung terbaca saat hot
/// reload (variabel global yang sudah terisi tidak diisi ulang).
List<Reward> get rewardSamples => [
Reward(
id: 'r1',
name: 'Kopi Susu',
emoji: '☕',
description: '1 Kopi Susu regular di Tumulu Coffee',
categoryName: 'Minuman',
pointsUsed: 20000,
redeemedAt: _daysAgo(11),
validUntil: _daysFromNow(3),
status: RewardStatus.active,
couponCode: 'ENK-7QM2PX',
termsAndConditions:
'Berlaku untuk 1 Kopi Susu ukuran regular di Tumulu Coffee, dine-in '
'atau take away. Upsize dan tambahan topping dibayar terpisah. '
'Tunjukkan kode ke kasir sebelum membayar.',
),
Reward(
id: 'r2',
name: 'Bakso Urat',
emoji: '🍲',
description: '1 porsi Bakso Urat di Bakso 343',
categoryName: 'Makanan',
pointsUsed: 18000,
redeemedAt: DateTime.now().subtract(const Duration(hours: 5)),
validUntil: _daysFromNow(14),
status: RewardStatus.active,
couponCode: 'ENK-B3HW8N',
termsAndConditions:
'Berlaku untuk 1 porsi Bakso Urat di Bakso 343, dine-in atau take '
'away. Tunjukkan kode ke kasir sebelum membayar.',
),
Reward(
id: 'r3',
name: 'Potongan Rp 10.000',
emoji: '🎟️',
description: 'Min. belanja Rp 50.000 di semua outlet',
categoryName: 'Voucher',
pointsUsed: 8000,
redeemedAt: _daysAgo(2),
validUntil: _daysFromNow(28),
status: RewardStatus.active,
couponCode: 'ENK-K9D4TR',
termsAndConditions:
'Berlaku untuk 1 transaksi dengan minimum belanja Rp 50.000 di semua '
'outlet. Tidak dapat digabung dengan voucher lain dan tidak dapat '
'diuangkan.',
),
Reward(
id: 'r4',
name: 'Es Teh Manis',
emoji: '🥤',
description: '1 gelas Es Teh Manis di semua outlet',
categoryName: 'Minuman',
pointsUsed: 4000,
redeemedAt: _daysAgo(9),
validUntil: _daysFromNow(5),
usedAt: _daysAgo(8),
status: RewardStatus.used,
couponCode: 'ENK-5TRJ6C',
termsAndConditions:
'Berlaku untuk 1 gelas Es Teh Manis ukuran regular di semua outlet.',
),
Reward(
id: 'r5',
name: 'Gyoza Goreng',
emoji: '🥟',
description: '5 pcs Gyoza goreng di Ramenmulu',
categoryName: 'Cemilan',
pointsUsed: 16000,
redeemedAt: _daysAgo(20),
validUntil: _daysAgo(6),
usedAt: _daysAgo(16),
status: RewardStatus.used,
couponCode: 'ENK-G8VL2F',
termsAndConditions:
'Berlaku untuk 1 porsi Gyoza goreng isi 5 di Ramenmulu. Tidak berlaku '
'untuk menu paket.',
),
Reward(
id: 'r6',
name: 'Potongan Rp 5.000',
emoji: '🎟️',
description: 'Min. belanja Rp 30.000 di semua outlet',
categoryName: 'Voucher',
pointsUsed: 4000,
redeemedAt: _daysAgo(50),
validUntil: _daysAgo(20),
status: RewardStatus.expired,
couponCode: 'ENK-P2XN7D',
termsAndConditions:
'Berlaku untuk 1 transaksi dengan minimum belanja Rp 30.000 di semua '
'outlet. Tidak dapat digabung dengan voucher lain dan tidak dapat '
'diuangkan.',
),
];