import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:get/get.dart'; import 'package:firebase_auth/firebase_auth.dart'; class PelangganController extends GetxController { final FirebaseFirestore _firestore = FirebaseFirestore.instance; final FirebaseAuth _auth = FirebaseAuth.instance; var isLoading = true.obs; var pelangganList = >[].obs; var totalPelanggan = 0.obs; @override void onInit() { super.onInit(); fetchAllPelanggan(); } /// Ambil data pelanggan berdasarkan user yang login Future fetchAllPelanggan() async { try { isLoading.value = true; final user = _auth.currentUser; if (user == null) { Get.snackbar("Error", "User belum login"); return; } final userId = user.uid; // Ambil semua resi yang dibuat oleh user yang login final snapshot = await _firestore .collection('resis') .where('store_id', isEqualTo: userId) .get(); // Mengelompokkan data berdasarkan nama penerima final Map> pelangganMap = {}; for (var doc in snapshot.docs) { final data = doc.data(); final nama = (data['penerima'] ?? '').toString(); if (nama.isEmpty) continue; if (!pelangganMap.containsKey(nama)) { pelangganMap[nama] = { 'penerima': nama, 'no_wa': data['no_wa'] ?? '-', 'alamat': data['alamat'] ?? '-', 'kota': data['kota'] ?? '-', 'provinsi': data['provinsi'] ?? '-', 'barang': data['barang'] ?? '-', // 🔹 Ganti totalTransaksi → barang 'totalNominal': double.tryParse(data['total']?.toString() ?? '0') ?? 0.0, 'created_at': (data['created_at'] is Timestamp) ? (data['created_at'] as Timestamp).toDate() : DateTime.now(), // 🔹 Tambahan untuk tanggal pembuatan }; } else { // Jika nama pelanggan sama, tambahkan nominal tapi barang tidak berubah pelangganMap[nama]!['totalNominal'] += double.tryParse(data['total']?.toString() ?? '0') ?? 0.0; } } pelangganList.assignAll(pelangganMap.values.toList()); totalPelanggan.value = pelangganList.length; } catch (e) { Get.snackbar("Error", "Gagal memuat data pelanggan: $e"); } finally { isLoading.value = false; } } }