part of 'finans.model.dart'; // Dövizler (Fiat ve Kripto döviz cinsleri) @Collection() class Kategori { Id id = Isar.autoIncrement; String? ismi; String? simge; String? kod; String? aciklama; int? renk; // Varsayılan beyaz @ignore Color get rengi => renk == null ? Colors.blue : Color(renk!); set rengi(Color yeniRenk) => renk = yeniRenk.toARGB32(); final ustKategori = IsarLink(); // Üst kategori referansı @Backlink(to: "ustKategori") final altKategoriler = IsarLinks(); // Alt kategoriler listesi @Backlink(to: "kategoriler") final sahibi = IsarLink(); @ignore bool get bosMu { return (ismi == null || ismi!.isEmpty) && (kod == null || kod!.isEmpty) && (simge == null || simge!.isEmpty); } } /// Default kategorilerin oluşturulduğu fonksiyondur. Future addDefaultCategories(Isar isar, Kullanici kullanici) async { final kategoriCollection = isar.kategoris; // Gelir kategorisi Kategori gelir = Kategori() ..sahibi.value = kullanici ..ismi = "Gelir" ..simge = "💰" ..kod = "income" ..rengi = Colors.green; // Gider kategorisi Kategori gider = Kategori() ..sahibi.value = kullanici ..ismi = "Gider" ..simge = "💸" ..kod = "expense" ..rengi = Colors.red; // Yatırım kategorisi Kategori yatirim = Kategori() ..sahibi.value = kullanici ..ismi = "Yatırım" ..simge = "📈" ..kod = "investment" ..rengi = Colors.blue; // Tasarruf kategorisi Kategori tasarruf = Kategori() ..sahibi.value = kullanici ..ismi = "Tasarruf" ..simge = "🏦" ..kod = "savings" ..rengi = Colors.yellow; // Borçlar kategorisi Kategori borclar = Kategori() ..sahibi.value = kullanici ..ismi = "Borçlar" ..simge = "💳" ..kod = "debts" ..rengi = Colors.orange; // Diğer kategorisi Kategori diger = Kategori() ..sahibi.value = kullanici ..ismi = "Diğer" ..simge = "🔧" ..kod = "other" ..rengi = Colors.purple; // Kategorileri kaydet await isar.writeTxn(() async { await kategoriCollection.putAll([gelir, gider, yatirim, tasarruf, borclar, diger]); [gelir, gider, yatirim, tasarruf, borclar, diger].forEach((element) async { element.sahibi.value = kullanici; await element.sahibi.save(); }); // Gelir alt kategorileri final maas = Kategori() ..sahibi.value = kullanici ..ismi = "Maaş" ..simge = "💼" ..kod = "salary" ..rengi = Colors.green.shade300 ..ustKategori.value = gelir; final ekGelir = Kategori() ..sahibi.value = kullanici ..ismi = "Ek Gelir" ..simge = "🎁" ..kod = "extra_income" ..rengi = Colors.green.shade400 ..ustKategori.value = gelir; final yatirimGeliri = Kategori() ..sahibi.value = kullanici ..ismi = "Yatırım Geliri" ..simge = "📊" ..kod = "investment_income" ..rengi = Colors.green.shade500 ..ustKategori.value = gelir; final bagislar = Kategori() ..sahibi.value = kullanici ..ismi = "Bağışlar" ..simge = "🤲" ..kod = "donations" ..rengi = Colors.green.shade200 ..ustKategori.value = gelir; final hediye = Kategori() ..sahibi.value = kullanici ..ismi = "Hediye" ..simge = "🎁" ..kod = "gift" ..rengi = Colors.green.shade100 ..ustKategori.value = gelir; // Gider alt kategorileri final faturalar = Kategori() ..sahibi.value = kullanici ..ismi = "Faturalar" ..simge = "📜" ..kod = "bills" ..rengi = Colors.red.shade300 ..ustKategori.value = gider; final elektrik = Kategori() ..sahibi.value = kullanici ..ismi = "Elektrik" ..simge = "💡" ..kod = "electricity" ..rengi = Colors.red.shade400 ..ustKategori.value = faturalar; final su = Kategori() ..sahibi.value = kullanici ..ismi = "Su" ..simge = "🚰" ..kod = "water" ..rengi = Colors.red.shade500 ..ustKategori.value = faturalar; final internet = Kategori() ..sahibi.value = kullanici ..ismi = "İnternet" ..simge = "🌐" ..kod = "internet" ..rengi = Colors.red.shade600 ..ustKategori.value = faturalar; final dogalgaz = Kategori() ..sahibi.value = kullanici ..ismi = "Doğalgaz" ..simge = "🔥" ..kod = "natural_gas" ..rengi = Colors.red.shade700 ..ustKategori.value = faturalar; final telefon = Kategori() ..sahibi.value = kullanici ..ismi = "Telefon" ..simge = "📞" ..kod = "phone" ..rengi = Colors.red.shade800 ..ustKategori.value = faturalar; final yiyecek = Kategori() ..sahibi.value = kullanici ..ismi = "Yiyecek" ..simge = "🍽️" ..kod = "food" ..rengi = Colors.red.shade200 ..ustKategori.value = gider; final market = Kategori() ..sahibi.value = kullanici ..ismi = "Market" ..simge = "🛒" ..kod = "grocery" ..rengi = Colors.red.shade100 ..ustKategori.value = yiyecek; final restoran = Kategori() ..sahibi.value = kullanici ..ismi = "Restoran" ..simge = "🍴" ..kod = "restaurant" ..rengi = Colors.red ..ustKategori.value = yiyecek; final ulasim = Kategori() ..sahibi.value = kullanici ..ismi = "Ulaşım" ..simge = "🚗" ..kod = "transportation" ..rengi = Colors.red.shade100 ..ustKategori.value = gider; final topluTasimacilik = Kategori() ..sahibi.value = kullanici ..ismi = "Toplu Taşıma" ..simge = "🚍" ..kod = "public_transport" ..rengi = Colors.red.shade200 ..ustKategori.value = ulasim; final benzin = Kategori() ..sahibi.value = kullanici ..ismi = "Benzin" ..simge = "⛽" ..kod = "gasoline" ..rengi = Colors.red.shade300 ..ustKategori.value = ulasim; final taksi = Kategori() ..sahibi.value = kullanici ..ismi = "Taksi" ..simge = "🚖" ..kod = "taxi" ..rengi = Colors.red.shade400 ..ustKategori.value = ulasim; final saglik = Kategori() ..sahibi.value = kullanici ..ismi = "Sağlık" ..simge = "🩺" ..kod = "health" ..rengi = Colors.red.shade700 ..ustKategori.value = gider; final ilac = Kategori() ..sahibi.value = kullanici ..ismi = "İlaç" ..simge = "💊" ..kod = "medicine" ..rengi = Colors.red.shade600 ..ustKategori.value = saglik; final doktor = Kategori() ..sahibi.value = kullanici ..ismi = "Doktor" ..simge = "👨‍⚕️" ..kod = "doctor" ..rengi = Colors.red.shade500 ..ustKategori.value = saglik; // Yatırım alt kategorileri final hisseSenedi = Kategori() ..sahibi.value = kullanici ..ismi = "Hisse Senedi" ..simge = "📈" ..kod = "stocks" ..rengi = Colors.blue.shade300 ..ustKategori.value = yatirim; final kriptoPara = Kategori() ..sahibi.value = kullanici ..ismi = "Kripto Para" ..simge = "💻" ..kod = "cryptocurrency" ..rengi = Colors.blue.shade400 ..ustKategori.value = yatirim; final altin = Kategori() ..sahibi.value = kullanici ..ismi = "Altın" ..simge = "🥇" ..kod = "gold" ..rengi = Colors.blue.shade500 ..ustKategori.value = yatirim; final gayrimenkul = Kategori() ..sahibi.value = kullanici ..ismi = "Gayrimenkul" ..simge = "🏡" ..kod = "real_estate" ..rengi = Colors.blue.shade600 ..ustKategori.value = yatirim; final yatirimFonlari = Kategori() ..sahibi.value = kullanici ..ismi = "Yatırım Fonları" ..simge = "💼" ..kod = "investment_funds" ..rengi = Colors.blue.shade700 ..ustKategori.value = yatirim; final tahviller = Kategori() ..sahibi.value = kullanici ..ismi = "Tahviller" ..simge = "🪙" ..kod = "bonds" ..rengi = Colors.blue.shade800 ..ustKategori.value = yatirim; // Tasarruf alt kategorileri final acilDurumFonu = Kategori() ..sahibi.value = kullanici ..ismi = "Acil Durum Fonu" ..simge = "🚑" ..kod = "emergency_fund" ..rengi = Colors.yellow.shade300 ..ustKategori.value = tasarruf; final egitimFonu = Kategori() ..sahibi.value = kullanici ..ismi = "Eğitim Fonu" ..simge = "🎓" ..kod = "education_fund" ..rengi = Colors.yellow.shade400 ..ustKategori.value = tasarruf; final emeklilikFonu = Kategori() ..sahibi.value = kullanici ..ismi = "Emeklilik Fonu" ..simge = "🧓" ..kod = "retirement_fund" ..rengi = Colors.yellow.shade500 ..ustKategori.value = tasarruf; final tatilFonu = Kategori() ..sahibi.value = kullanici ..ismi = "Tatil Fonu" ..simge = "🌴" ..kod = "vacation_fund" ..rengi = Colors.yellow.shade600 ..ustKategori.value = tasarruf; // Borçlar alt kategorileri final krediKarti = Kategori() ..sahibi.value = kullanici ..ismi = "Kredi Kartı" ..simge = "💳" ..kod = "credit_card" ..rengi = Colors.orange.shade300 ..ustKategori.value = borclar; final kredi = Kategori() ..sahibi.value = kullanici ..ismi = "Kredi" ..simge = "🏦" ..kod = "loan" ..rengi = Colors.orange.shade400 ..ustKategori.value = borclar; final taksitliAlimlar = Kategori() ..sahibi.value = kullanici ..ismi = "Taksitli Alımlar" ..simge = "🛍️" ..kod = "installment_purchases" ..rengi = Colors.orange.shade500 ..ustKategori.value = borclar; final ogrenimKredisi = Kategori() ..sahibi.value = kullanici ..ismi = "Öğrenim Kredisi" ..simge = "📚" ..kod = "student_loan" ..rengi = Colors.orange.shade600 ..ustKategori.value = borclar; final evKredisi = Kategori() ..sahibi.value = kullanici ..ismi = "Ev Kredisi" ..simge = "🏠" ..kod = "mortgage" ..rengi = Colors.orange.shade700 ..ustKategori.value = borclar; // Diğer alt kategorileri final sigorta = Kategori() ..sahibi.value = kullanici ..ismi = "Sigorta" ..simge = "🛡️" ..kod = "insurance" ..rengi = Colors.purple.shade300 ..ustKategori.value = diger; final bagis = Kategori() ..sahibi.value = kullanici ..ismi = "Bağış" ..simge = "🤲" ..kod = "charity" ..rengi = Colors.purple.shade400 ..ustKategori.value = diger; final digerGelir = Kategori() ..sahibi.value = kullanici ..ismi = "Diğer Gelir" ..simge = "💵" ..kod = "other_income" ..rengi = Colors.purple.shade500 ..ustKategori.value = diger; final digerGider = Kategori() ..sahibi.value = kullanici ..ismi = "Diğer Gider" ..simge = "⚙️" ..kod = "other_expense" ..rengi = Colors.purple.shade600 ..ustKategori.value = diger; [ maas, ekGelir, yatirimGeliri, bagislar, hediye, faturalar, elektrik, su, internet, dogalgaz, telefon, yiyecek, market, restoran, ulasim, topluTasimacilik, benzin, taksi, saglik, ilac, doktor, hisseSenedi, kriptoPara, altin, gayrimenkul, yatirimFonlari, tahviller, acilDurumFonu, egitimFonu, emeklilikFonu, tatilFonu, krediKarti, kredi, taksitliAlimlar, ogrenimKredisi, evKredisi, sigorta, bagis, digerGelir, digerGider, ].forEach((element) async { element.sahibi.value = kullanici; await element.sahibi.save(); await element.ustKategori.save(); }); // Kategorileri kaydet await kategoriCollection.putAll([ maas, ekGelir, yatirimGeliri, bagislar, hediye, faturalar, elektrik, su, internet, dogalgaz, telefon, yiyecek, market, restoran, ulasim, topluTasimacilik, benzin, taksi, saglik, ilac, doktor, hisseSenedi, kriptoPara, altin, gayrimenkul, yatirimFonlari, tahviller, acilDurumFonu, egitimFonu, emeklilikFonu, tatilFonu, krediKarti, kredi, taksitliAlimlar, ogrenimKredisi, evKredisi, sigorta, bagis, digerGelir, digerGider, ]); }); }