import 'dart:async'; import 'dart:io'; import 'package:fikoyt_merkez/apps/mesaici/servisler/mesaici.background.dart'; import 'package:fikoyt_merkez/apps/mesaici/widgets/aktif_kart/aktif_kart.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_background_service/flutter_background_service.dart'; import 'package:get/get.dart'; import 'package:isar/isar.dart'; import 'package:path_provider/path_provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../model/calisma_kayit.dart'; import '../model/model_ayarlar.dart'; import 'mesaici.ayarlar.dart'; class FikoYTMesaiciService extends GetxService { late Isar isar; /** */ Rx? aktifCalisma = CalismaKayit().obs; Rx? ayarlarModel = ModelAyarlar().obs; /** */ final arkaPlanServis = FlutterBackgroundService(); late SharedPreferences ayarlar; /** */ late MesaiciAyarlar mesaiciAyarlar; // = ayarlarModel!.value.calismaSuresiAyarlari.vardiyalar.isNotEmpty // ? ayarlarModel?.value.calismaSuresiAyarlari.vardiyalar[0] // : null; Future init() async { await isar_init(); await ayarlar_init(); await aktifCalisma_init(); return this; } isar_init() async { final dir = await getApplicationDocumentsDirectory(); isar = await Isar.open(schemas: [CalismaKayitSchema, ModelAyarlarSchema], directory: dir.path, name: "FikoYT.db"); } aktifCalisma_init() async { aktifCalisma?.value.id = "FikoYT.mesaici.aktifKart"; aktifCalisma?.refresh(); CalismaKayit _dbAktifKart = isar.calismaKayits.get("FikoYT.mesaici.aktifKart") ?? CalismaKayit(); isar.writeAsync((isar1) { isar1.calismaKayits.put(_dbAktifKart); }); aktifCalisma?.value = _dbAktifKart; aktifCalisma?.listen( (data) { isar.write((isar1) { isar1.calismaKayits.put(data); }); }, ); // isar.calismaKayits.watchObject(0).listen( // (data) { // aktifCalisma?.value = data ?? CalismaKayit(); // aktifCalisma?.refresh(); // }, // ); // print('$runtimeType delays 2 sec'); // await 2.delay(); // print('$runtimeType ready!'); } ayarlar_init() async { //fikoyt.mesaici.ayarlar // ayarlarModel?.value.id = "fikoyt.mesaici.ayarlar"; // ayarlarModel?.refresh(); ModelAyarlar _dbAktifAyarlar = await isar.modelAyarlars.getAsync("fikoyt.mesaici.ayarlar") ?? ModelAyarlar(); /** */ // if (_dbAktifAyarlar.calismaSuresiAyarlari.vardiyalar.isEmpty) { // _dbAktifAyarlar.calismaSuresiAyarlari.vardiyalar.add(Vardiya(ismi: "Sürekli Gündüz", aciklama: "Sadece Gündüz Çalışma.")); // _dbAktifAyarlar.calismaSuresiAyarlari.aktifVardiya = 0; // aktifVardiya = _dbAktifAyarlar.calismaSuresiAyarlari.vardiyalar[_dbAktifAyarlar.calismaSuresiAyarlari.aktifVardiya ?? 0]; // } /** */ isar.write((isar1) { isar1.modelAyarlars.put(_dbAktifAyarlar); }); ayarlarModel?.value = _dbAktifAyarlar; ayarlarModel?.listen( (data) { isar.write((isar1) { // print(data.calismaSuresiAyarlari.vardiyalar[0].gunAyarlari.pazartesi.molalar[0].toJson()); isar1.modelAyarlars.putAll([data]); }); }, ); /** */ ayarlar = await SharedPreferences.getInstance(); await ayarlar.reload(); mesaiciAyarlar = MesaiciAyarlar(ayarlar); await ayarlariOku(); if (Platform.isAndroid) await arkaPlanServisInit(); } ayarlariOku() async { mesaiciAyarlar.ayarlariOku(); } ayarlariKaydet() async { mesaiciAyarlar.ayarlariKaydet(); } arkaPlanServisInit() async { // ayarlarModel?.value.uygulamaAyarlari.baslangictaCalistir = // ayarlar.getBool("mesaici.servis.baslangicta-calistir") ?? false; // mesaiciAyarlar.uygulamaAyarlari.otomatikBaslat.value = // ayarlar.getBool("mesaici.servis.otomatik-baslat") ?? false; await arkaPlanServis.configure( iosConfiguration: IosConfiguration(), androidConfiguration: AndroidConfiguration( autoStart: ayarlarModel!.value.uygulamaAyarlari.otomatikBaslat, autoStartOnBoot: ayarlarModel!.value.uygulamaAyarlari.baslangictaCalistir, onStart: onServisStart, isForegroundMode: true, // notificationChannelId: "Genel", initialNotificationTitle: "FikoYT", initialNotificationContent: "FikoYT Arka Planda Sizin İçin Çalışıyor", ), ); ayarlarModel!.value.uygulamaAyarlari.servisCalisiyor = await arkaPlanServis.isRunning(); arkaPlanServis.on("mesaici.servis.olay.durduruldu").listen((event) { ayarlarModel!.value.uygulamaAyarlari.servisCalisiyor = false; ayarlarModel!.refresh(); }); arkaPlanServis.on("mesaici.servis.olay.baslatildi").listen((event) { ayarlarModel!.value.uygulamaAyarlari.servisCalisiyor = true; ayarlarModel!.refresh(); }); arkaPlanServis.on("mesaici.servis.olay.calisiyor").listen((event) { if (kDebugMode) { print("çalışıyor"); } }); if (ayarlarModel!.value.uygulamaAyarlari.otomatikBaslat) { arkaPlanServis.startService(); } } }