import 'package:fikoyt_akcali_v1/apps/finans/core/models/finans.model.dart' as semalar; 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_akcali_v1/apps/finans/core/services/para_birimleri_service.dart'; import 'package:fikoyt_ui/fikoyt_ui.dart'; import 'package:isar/isar.dart'; class HesaplarService extends GetxService { Isar? isar; RxBool guncelle = RxBool(false); ParaBirimleriService? logicParaBirimi; Rx hesap = Rx(semalar.Hesap()); FinansServis? finansServis; Rx> hesaplar = Rx>([]); Stream get hesaplarStream => isar!.hesaps.where().watch(fireImmediately: true); RxInt sayfa = RxInt(0); RxInt limit = RxInt(3); RxInt sayi = RxInt(3); @override void onInit() async { super.onInit(); finansServis = FikoYTCoreService.servisler.getServis(); logicParaBirimi = Get.put(ParaBirimleriService()); isar = finansServis?.isar; // TODO: implement onInit await listeAl(page: 0, lim: 3); } Future> listeAl({int? page, int? lim}) async { sayfa.value = page ?? 0; limit.value = lim ?? 0; final hesaplarQuery = finansServis?.aktifKullanici.value?.hesaplar .filter() .offset(sayfa.value * limit.value) .limit(limit.value); final hesaplarList = await hesaplarQuery?.findAll() ?? []; print(finansServis?.aktifKullanici.value); hesaplar.value = hesaplarList; return hesaplarList; } List listeAlSync({int? page, int? lim}) { sayfa.value = page ?? 0; limit.value = lim ?? 0; hesaplar.value = finansServis?.aktifKullanici.value?.hesaplar .filter() .offset(sayfa.value * limit.value) .limit(limit.value) .findAllSync() ?? []; return hesaplar.value; } Future hesapById(int hesapId) async { return finansServis?.aktifKullanici.value?.hesaplar.filter().idEqualTo(hesapId).findFirst(); } semalar.Hesap? hesapByIdSync(int hesapId) { return finansServis?.aktifKullanici.value?.hesaplar.filter().idEqualTo(hesapId).findFirstSync(); } Future kaydet({semalar.Hesap? hsp, semalar.IHesapTipi hesapTipi = semalar.IHesapTipi.nakit}) async { hsp ??= hesap.value; return isar?.writeTxn(() async { hsp!.hesapTipi = hesapTipi; hsp.sahibi.add(finansServis!.aktifKullanici.value!); int? id = await isar?.hesaps.put(hsp); hsp.sahibi.save(); hsp.paraBirimi.save(); hesap.value = semalar.Hesap(); return id; }); } Future hesapSilById(int hesapId) async { return await isar?.hesaps .where() .filter() .sahibi((q) => q.idEqualTo(finansServis?.aktifKullanici.value?.id ?? -1)) .idEqualTo(hesapId) .deleteFirst(); } bool? hesapSilByIdSync(int hesapId) { return isar?.hesaps .where() .filter() .sahibi((q) => q.idEqualTo(finansServis?.aktifKullanici.value?.id ?? -1)) .idEqualTo(hesapId) .deleteFirstSync(); } } class HesapService extends IsarFullService { @override Isar getIsar() => FikoYTCoreService.servisler.getServis()!.isar!; @override IsarCollection get koleksiyon => isar.hesaps; @override QueryBuilder getQuery() { final aktif = FikoYTCoreService.servisler.getServis()?.aktifKullanici.value; return koleksiyon.where().filter().sahibi((q) => q.idEqualTo(aktif?.id ?? -1)); } @override Future iliskileriYukle(List liste) async { for (var h in liste) { await h.paraBirimi.load(); await h.sahibi.load(); } } }