import '../presentation/components/assets/assets.gen.dart'; // Models enum NewsCategory { menu('Menu Baru'), promo('Promo'), event('Event'), info('Info'), tips('Tips'); const NewsCategory(this.label); final String label; } class NewsArticle { final String id; final String title; final String summary; final NewsCategory category; /// Path aset sampul; `null` memakai sampul warna kategori. final String? coverImage; final DateTime publishedAt; final int readMinutes; final String author; final List paragraphs; final bool isHeadline; const NewsArticle({ required this.id, required this.title, required this.summary, required this.category, required this.publishedAt, required this.readMinutes, required this.paragraphs, this.coverImage, this.author = 'Tim Enaklo', this.isHeadline = false, }); } // Sample Data DateTime _hoursAgo(int hours) => DateTime.now().subtract(Duration(hours: hours)); DateTime _daysAgo(int days) => DateTime.now().subtract(Duration(days: days)); /// Getter, bukan `final`, supaya perubahan data langsung terbaca saat hot /// reload (variabel global yang sudah terisi tidak diisi ulang). List get newsSamples => [ NewsArticle( id: 'n1', title: 'Sup Ikan Woku Kemangi, Menu Baru Andalan Woku Pedas', summary: 'Kuah woku khas Manado dengan kemangi segar, hadir mulai minggu ini.', category: NewsCategory.menu, coverImage: Assets.images.woku.path, publishedAt: _hoursAgo(3), readMinutes: 3, isHeadline: true, paragraphs: [ 'Woku Pedas menambah menu andalan baru: Sup Ikan Woku Kemangi. Ikan ' 'segar dimasak dalam kuah bumbu woku, lalu ditaburi daun kemangi ' 'tepat sebelum disajikan.', 'Level pedasnya bisa dipilih dari 1 sampai 5. Untuk yang baru pertama ' 'mencoba, tim dapur menyarankan level 2 supaya aroma rempahnya tetap ' 'terasa.', 'Menu ini tersedia untuk dine-in dan take away. Jangan lupa sebutkan ' 'nomor HP akunmu ke kasir supaya EnakPoint dari pembelian ini masuk.', ], ), NewsArticle( id: 'n2', title: 'Double EnakPoint Tiap Akhir Pekan, Begini Cara Dapatnya', summary: 'Belanja Sabtu dan Minggu di outlet mana pun dapat EnakPoint 2x.', category: NewsCategory.promo, publishedAt: _hoursAgo(20), readMinutes: 2, paragraphs: [ 'Selama bulan ini, setiap belanja pada hari Sabtu dan Minggu mendapat ' 'EnakPoint dua kali lipat dari biasanya, di semua outlet.', 'Tidak perlu klaim. Cukup sebutkan nomor HP akunmu ke kasir sebelum ' 'membayar, dan EnakPoint 2x masuk otomatis setelah pesanan lunas.', 'Bonus maksimal 5.000 EnakPoint per transaksi. Detail lengkap dan promo ' 'lainnya bisa kamu cek di EnakPromo.', ], ), NewsArticle( id: 'n3', title: 'Tumulu Coffee Kini Buka Lebih Pagi, Mulai Pukul 07.00', summary: 'Ngopi sebelum berangkat kerja sekarang bisa langsung di Tumulu.', category: NewsCategory.info, coverImage: Assets.images.tumulu.path, publishedAt: _daysAgo(1), readMinutes: 2, paragraphs: [ 'Mulai minggu ini Tumulu Coffee buka pukul 07.00, satu jam lebih pagi ' 'dari sebelumnya. Jam tutup tetap pukul 22.00.', 'Selama jam 07.00 sampai 09.00, tersedia paket sarapan kopi susu dan ' 'roti bakar untuk kamu yang terburu-buru.', ], ), NewsArticle( id: 'n4', title: 'Ramen Night di Ramenmulu, Sabtu Ini', summary: 'Nonton bareng, live akustik, dan ramen edisi terbatas.', category: NewsCategory.event, coverImage: Assets.images.ramenmulu.path, publishedAt: _daysAgo(2), readMinutes: 3, paragraphs: [ 'Ramenmulu menggelar Ramen Night hari Sabtu mulai pukul 18.00. Ada ' 'nonton bareng, live musik akustik, dan ramen kuah miso edisi ' 'terbatas.', 'Tempat duduk terbatas dan tidak bisa dipesan lebih dulu, jadi datang ' 'lebih awal supaya kebagian meja.', 'Anggota komunitas Ramen Lovers di EnakCommunity sudah ramai membahas ' 'acara ini. Yuk ikut gabung obrolannya.', ], ), NewsArticle( id: 'n5', title: 'Cheesecake Karamel Jadi Dessert Baru di Tumulu Coffee', summary: 'Lembut, tidak terlalu manis, dan pas ditemani kopi hitam.', category: NewsCategory.menu, coverImage: Assets.images.onboarding2.path, publishedAt: _daysAgo(4), readMinutes: 2, paragraphs: [ 'Tumulu Coffee menghadirkan dessert baru: Cheesecake Karamel. Lapisan ' 'keju yang lembut dipadukan dengan saus karamel dan remahan biskuit ' 'cokelat.', 'Rasa manisnya dibuat ringan supaya cocok dinikmati bersama kopi hitam ' 'atau americano.', ], ), NewsArticle( id: 'n6', title: 'Cara Bayar Pakai EnakPoint di Kasir', summary: 'Cukup tunjukkan kode bayar. PIN tidak pernah diketik di kasir.', category: NewsCategory.tips, publishedAt: _daysAgo(5), readMinutes: 3, paragraphs: [ 'EnakPoint bisa langsung dipakai untuk membayar di kasir. Setiap 1 ' 'EnakPoint setara potongan Rp 1.', 'Tekan tombol Bayar di tengah menu bawah, lalu masukkan PIN kamu. ' 'Aplikasi akan menampilkan kode angka dan QR.', 'Tunjukkan kode itu ke kasir. Kasir yang memilih berapa EnakPoint yang ' 'dipakai. Kode berlaku 2 menit dan hanya bisa dipakai sekali.', 'PIN hanya dimasukkan di aplikasi, tidak pernah di mesin kasir. Jangan ' 'berikan PIN kamu kepada siapa pun, termasuk petugas outlet.', ], ), NewsArticle( id: 'n7', title: 'EnakPoint Bisa Kedaluwarsa, Begini Cara Mengeceknya', summary: 'Pakai saldo sebelum hangus. Cek tanggalnya di halaman EnakPoint.', category: NewsCategory.tips, publishedAt: _daysAgo(6), readMinutes: 2, paragraphs: [ 'Outlet bisa mengatur masa berlaku untuk EnakPoint dan EnakCoin. Saldo ' 'yang sudah lewat masa berlakunya akan hangus.', 'Buka halaman EnakPoint & EnakCoin untuk melihat saldo terdekat yang ' 'akan kedaluwarsa, lengkap dengan tanggalnya.', 'Tanggal kedaluwarsa berarti saldo masih bisa dipakai sampai pukul ' '23.59 WIB pada tanggal tersebut.', ], ), NewsArticle( id: 'n8', title: 'Bakso 343 Rayakan Ulang Tahun ke-5', summary: 'Lima tahun menemani makan siang, ada kejutan untuk pelanggan.', category: NewsCategory.event, coverImage: Assets.images.bakso343.path, publishedAt: _daysAgo(9), readMinutes: 2, paragraphs: [ 'Bakso 343 genap berusia lima tahun. Berawal dari satu gerobak, kini ' 'jadi salah satu tenant favorit di Enaklo.', 'Selama pekan ulang tahun, setiap pelanggan yang makan di tempat ' 'mendapat es teh gratis selama persediaan masih ada.', ], ), ];