import 'package:fikoyt_akcali_v1/apps/finans/core/models/finans.model.dart'; import 'package:fikoyt_akcali_v1/apps/finans/core/services/finans.servis.dart'; import 'package:fikoyt_akcali_v1/apps/finans/core/services/kok.servis.dart'; import 'package:fikoyt_ui/fikoyt_ui.dart'; import 'package:isar/isar.dart'; class KategorilerService111 extends GetxService { Rx kayit = Rx(Kategori()); Rx kayitEkleGoster = Rx(false); Rx guncelle = Rx(false); FinansServis? finansServis = FikoYTCoreService.servisler.getServis(); Isar? isar = FikoYTCoreService.servisler.getServis()?.isar; kayitKontrol() { kayit.value?.ismi != ""; } kaydet({required Kategori kyt, Kategori? ustKyt}) { isar?.writeTxn(() async { if (kyt.aciklama == "") { kyt.aciklama = null; } kyt.sahibi.value = finansServis?.aktifKullanici.value; kyt.ustKategori.value = ustKyt; await isar?.kategoris.put(kyt); await kyt.sahibi.save(); await kyt.ustKategori.save(); kayit.value = Kategori(); kayitEkleGoster.value = false; kayitEkleGoster.refresh(); kayit.refresh(); guncelle.refresh(); }); } sil({required Kategori kyt}) { isar?.writeTxn(() async { await isar?.kategoris.delete(kyt.id); kayit.value = Kategori(); kayitEkleGoster.value = false; kayitEkleGoster.refresh(); kayit.refresh(); guncelle.refresh(); }); } Future> listeAl(int page, int limit, {Kategori? ustKyt}) async { if (ustKyt != null) { return await isar?.kategoris .where() .filter() .sahibi((q) => q.idEqualTo(finansServis?.aktifKullanici.value?.id ?? -1)) .ustKategori((q) => q.idEqualTo(ustKyt.id)) .sortByIsmi() .offset(page * limit) .limit(limit) .findAll() ?? []; } else { return await isar?.kategoris .where() .filter() .sahibi((q) => q.idEqualTo(finansServis?.aktifKullanici.value?.id ?? -1)) .ustKategoriIsNull() .sortByIsmi() .offset(page * limit) .limit(limit) .findAll() ?? []; } } List listeAlSync(int page, int limit, {Kategori? ustKyt}) { if (ustKyt != null) { return isar?.kategoris .where() .filter() .sahibi((q) => q.idEqualTo(finansServis?.aktifKullanici.value?.id ?? -1)) .ustKategori((q) => q.idEqualTo(ustKyt.id)) .sortByIsmi() .offset(page * limit) .limit(limit) .findAllSync() ?? []; } else { return isar?.kategoris .where() .filter() .sahibi((q) => q.idEqualTo(finansServis?.aktifKullanici.value?.id ?? -1)) .ustKategoriIsNull() .sortByIsmi() .offset(page * limit) .limit(limit) .findAllSync() ?? []; } } Future byId(int id) async { return await isar?.kategoris .where() .filter() .sahibi((q) => q.idEqualTo(finansServis?.aktifKullanici.value?.id ?? -1)) .idEqualTo(id) .findFirst(); } Kategori? byIdSync(int id) { return isar?.kategoris .where() .filter() .sahibi((q) => q.idEqualTo(finansServis?.aktifKullanici.value?.id ?? -1)) .idEqualTo(id) .findFirstSync(); } } class KategorilerService extends IsarFullService { Rx ustKategori = Rx(null); @override Isar getIsar() => FikoYTCoreService.servisler.getServis()!.isar!; @override IsarCollection get koleksiyon => isar.kategoris; @override QueryBuilder getQuery() { final aktif = FikoYTCoreService.servisler.getServis()?.aktifKullanici.value; ustKategori.value?.ustKategori.loadSync(); return koleksiyon.where().filter().sahibi((q) => q.idEqualTo(aktif?.id ?? -1)).and().ustKategori((q) { return q.ustKategoriIsNull(); }); } // @override // QueryBuilder applyAramaFiltre( // QueryBuilder q, // String arama, // ) { // // TODO: implement applyAramaFiltre // if (arama.isEmpty) { // return q; // } // return q.ismiStartsWith(arama, caseSensitive: false); // } @override Future iliskileriYukle(List liste) async { for (var h in liste) { await h.ustKategori.load(); await h.sahibi.load(); } } @override Future beforeEkle(Kategori item) async { item.sahibi.value = FikoYTCoreService.servisler.getServis()!.aktifKullanici.value; return item; } @override Future afterEkle(Kategori item) async { await item.sahibi.save(); await item.ustKategori.save(); } }