// ignore: annotate_overrides import 'dart:async'; import 'dart:io'; import 'package:android_intent_plus/android_intent.dart'; import 'package:fikoyt_akcali/apps/finans/model/ayarlar/model_ayarlar.dart'; import 'package:fikoyt_akcali/apps/finans/model/calisma_kayit/calisma_kayit.dart'; import 'package:fikoyt_akcali/apps/finans/model/model_hareketler.dart'; import 'package:fikoyt_akcali/apps/finans/servisler/mesaici.background.bildirimler.dart'; import 'package:fikoyt_akcali/core/fikoyt.service.dart'; import 'package:flutter_background_service/flutter_background_service.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:isar/isar.dart'; import 'package:fikoyt_akcali/core/Extensions/fiko_tarih.dart'; enum CalismaDurum { BILINMIYOR, CALISILIYOR, MOLADA, DINLENME; } extension AktifDurumEx on List { int toInt() { int snc = 0; for (var itm in this) { snc += itm.index; } return snc; } } enum AktifDurum { BILINMIYOR, KART_TANIMLI_DEGIL, KART_TANIMLI, GIRIS_YAPILMAMIS, KART_BUGUNE_AIT, KART_BUGUNE_AIT_DEGIL, GIRIS_YAPILMIS, KART_GUNUNDE_BASKA_KAYITLAR_VAR, KART_GUNUNDE_BASKA_KAYITLAR_YOK, CIKIS_YAPILMAMIS, CIKIS_YAPILMIS, CALISMA_GUNU, DINLENME_GUNU, HAFTA_TATILI, FAZLA_MESAI_YOK, FAZLA_MESAI_VAR, EKSIK_CALISMA_YOK, EKSIK_CALISMA_VAR, RESMI_TATIL_DEGIL, RESMI_TATIL, SERVIS_GECIKMESI_VAR, SERVIS_GECIKMESI_YOK, RAPORLU, RAPORLU_DEGIL, GUNLUK_IZINLI_DEGIL, GUNLUK_IZINLI, YILLIK_IZINLI_DEGIL, YILLIK_IZINLI, GIRIS_TOLERANSINDA, CIKIS_TOLERANSINDA, CIKIS_TOLERANSINDA_DEGIL, GIRIS_TOLERANSINDA_DEGIL, BUGUNE_AIT_KAYITLAR_YOK, BUGUNE_AIT_KAYITLAR_VAR, CALISMA_DURUM_DINLENME, CALISMA_DURUM_CALISILIYOR, CALISMA_DURUM_MOLADA, CALISMA_DURUM_BILINMIYOR, GIRIS_SAATI_GECMIS, GIRIS_SAATI_GECMEMIS, CIKIS_SAATI_GECMEMIS, CIKIS_SAATI_GECMIS, ISE_BASLAMA_BILDIRIMLERI_GOSTERILECEK, ISE_GIRIS_BILDIRIMLERI_GOSTERILMEYECEK, ISE_BITIRME_BILDIRIMLERI_GOSTERILMEYECEK, ISI_BITIRME_BILDIRIMLERI_GOSTERILECEK, OTOMATIK_GIRIS_YAPILMAYACAK, OTOMATIK_GIRIS_YAPILACAK, OTOMATIK_CIKIS_YAPILMAYACAK, OTOMATIK_CIKIS_YAPILACAK; int operator +(covariant AktifDurum aD) { // int snc = 0; // for (var i = 0; i < aD.length; i++) { // snc += aD[i].index; // } return index + aD.index; } } @pragma('vm:entry-point') Future onMesaiciServisStart(ServiceInstance service) async { // final prefs = await SharedPreferences.getInstance(); bool stopService = false; // prefs.reload(); // The magic line /** */ FlutterLocalNotificationsPlugin bildirimlerPlugin = await LocalNotification_init(); // ignore: unused_local_variable Isar isar = await isar_init(); /** */ ModelAyarlar? ayarlar = await isar.modelAyarlars.get(0); service.on("mesaici.servis.olay.ayarlar.guncelle").listen( (event) async { // ignore: unused_local_variable ayarlar = await isar.modelAyarlars.get(0); // service.invoke("mesaici.servis.olay.sistem.mesaj", {"aktifAyarlar": ayarlar?.calismaSuresiAyarlari.vardiyalar[ayarlar?.calismaSuresiAyarlari.aktifVardiya ?? 0].gunAyarlari.bugununAyari().turu.toString()}); }, ); /** */ service.on("mesaici.servis.durdur").listen((event) async { // print(event); stopService = true; service.stopSelf(); service.invoke("mesaici.servis.olay.durduruldu"); }); /** * Yedekleme İçin Timer */ Timer.periodic(const Duration(minutes: 15), (timer) async { if (stopService) { service.stopSelf(); timer.cancel(); service.invoke("mesaici.servis.olay.durduruldu"); } service.invoke("mesaici.servis.olay.calisiyor"); /** */ if (ayarlar?.yedeklemePeriyot == YedeklemePeriyot.YOK || ayarlar?.yedeklemePeriyot == null) return; List dosyalar = Directory(await FikoYTService.programYolu(ekYol: 'yedekler')).listSync().toList()..sort((l, r) => r.statSync().modified.compareTo(l.statSync().modified)); /** */ if (dosyalar.isEmpty) { await isar.copyToFile('${await FikoYTService.programYolu(ekYol: 'yedekler')}${DateTime.now().formatla('dd_MM_yyyy HH_mm_ss')}.FikoYedek'); AndroidIntent intent = const AndroidIntent( action: 'com.fikoyt.akcali.komut', package: 'com.fikoyt.akcali', arguments: {'komut': "com.fikoyt.akcali.komut.yedekle.liste.guncelle"}, category: "android.intent.category.DEFAULT", ); await intent.launch(); return; } FileSystemEntity sonDosya = dosyalar.last; if (ayarlar?.yedeklemePeriyot == YedeklemePeriyot.GUNLUK) { if (sonDosya.statSync().modified.add(const Duration(days: 1)).isBefore(sonDosya.statSync().modified)) { await isar.copyToFile('${await FikoYTService.programYolu(ekYol: 'yedekler')}${DateTime.now().formatla('dd_MM_yyyy HH_mm_ss')}.FikoYedek'); AndroidIntent intent = const AndroidIntent( action: 'com.fikoyt.akcali.komut', package: 'com.fikoyt.akcali', arguments: {'komut': "com.fikoyt.akcali.komut.yedekle.liste.guncelle"}, category: "android.intent.category.DEFAULT", ); await intent.launch(); return; } return; } if (ayarlar?.yedeklemePeriyot == YedeklemePeriyot.HAFTALIK) { if (sonDosya.statSync().modified.add(const Duration(days: 7)).isBefore(sonDosya.statSync().modified)) { await isar.copyToFile('${await FikoYTService.programYolu(ekYol: 'yedekler')}${DateTime.now().formatla('dd_MM_yyyy HH_mm_ss')}.FikoYedek'); AndroidIntent intent = const AndroidIntent( action: 'com.fikoyt.akcali.komut', package: 'com.fikoyt.akcali', arguments: {'komut': "com.fikoyt.akcali.komut.yedekle.liste.guncelle"}, category: "android.intent.category.DEFAULT", ); await intent.launch(); return; } return; } if (ayarlar?.yedeklemePeriyot == YedeklemePeriyot.AYLIK) { if (sonDosya.statSync().modified.add(const Duration(days: 30)).isBefore(sonDosya.statSync().modified)) { await isar.copyToFile('${await FikoYTService.programYolu(ekYol: 'yedekler')}${DateTime.now().formatla('dd_MM_yyyy HH_mm_ss')}.FikoYedek'); AndroidIntent intent = const AndroidIntent( action: 'com.fikoyt.akcali.komut', package: 'com.fikoyt.akcali', arguments: {'komut': "com.fikoyt.akcali.komut.yedekle.liste.guncelle"}, category: "android.intent.category.DEFAULT", ); await intent.launch(); return; } return; } }); /** * Kritik Zamanlamalar İçin Timer */ /** */ CalismaKayit? aktifKart = await isar.calismaKayits.get(0); service.on("mesaici.servis.olay.aktifKart.guncelle").listen( (event) async { // ignore: unused_local_variable aktifKart = await isar.calismaKayits.get(0); // service.invoke("mesaici.servis.olay.sistem.mesaj", {"aktifKart": aktifKart}); }, ); List aktifKartDurumlar = []; service.invoke("mesaici.servis.olay.baslatildi"); int prgrs = 0; Timer.periodic(const Duration(seconds: 5), (timer) async { if (stopService) { service.stopSelf(); timer.cancel(); service.invoke("mesaici.servis.olay.durduruldu"); } service.invoke("mesaici.servis.olay.calisiyor"); /** * Giriş Kontrol */ late GunAyari? aktifKartBugununAyari; if (aktifKart?.tarih == null) { aktifKartBugununAyari = ayarlar?.calismaSuresiAyarlari.vardiyalar[ayarlar?.calismaSuresiAyarlari.aktifVardiya ?? 0].gunAyarlari.bugununAyari(); // service.invoke("mesaici.servis.olay.sistem.mesaj", {"durum": "Genel Ayarlar"}); } else { aktifKartBugununAyari = aktifKart?.bugununAyari; // service.invoke("mesaici.servis.olay.sistem.mesaj", {"durum": "Kart Ayarlar"}); } await aktifKartDurumlarGuncelle(aktifKartDurumlar, ayarlar, aktifKartBugununAyari, bildirimlerPlugin, aktifKart, isar, service); /** */ // service.invoke("mesaici.servis.olay.sistem.mesaj", {"durum": aktifKartDurumlar.toString()}); // List bildirimler = await bildirimlerPlugin.getActiveNotifications(); //---> if (await sartKontrol( aktifKartDurumlar: aktifKartDurumlar, gecerliSartlar: [ AktifDurum.KART_TANIMLI, AktifDurum.GIRIS_YAPILMIS, AktifDurum.CIKIS_YAPILMAMIS, AktifDurum.CIKIS_SAATI_GECMIS, // AktifDurum.ISI_BITIRME_BILDIRIMLERI_GOSTERILECEK, AktifDurum.OTOMATIK_CIKIS_YAPILACAK, ], gecersizSartlar: [ AktifDurum.RAPORLU, AktifDurum.GUNLUK_IZINLI, AktifDurum.YILLIK_IZINLI, AktifDurum.RESMI_TATIL, ], )) { // AndroidIntent intent = const AndroidIntent( // action: 'com.fikoyt.akcali.komut', // package: 'com.fikoyt.akcali', // arguments: {'komut': "com.fikoyt.akcali.komut.aktifKart.cikis.yap.saatinde"}, // category: "android.intent.category.DEFAULT", // ); // await intent.launch(); await bildirim(bildirimlerPlugin: bildirimlerPlugin, id: 5555, kanalIsmi: "İş Bitirme Bildirimleri", aciklama: "FikoYT Finans Kartınız Otomatik Kaydedildi."); if (aktifKart?.tarih == null) { aktifKart?.tarih = DateTime.now(); aktifKart?.maas = ayarlar?.maasParametreleri.toListe()[DateTime.now().month - 1]; aktifKart?.aktifVardiya = ayarlar?.calismaSuresiAyarlari.vardiyalar[ayarlar?.calismaSuresiAyarlari.aktifVardiya ?? 0]; aktifKart?.calismaSuresi = aktifKartBugununAyari?.calismaSuresi; aktifKart?.ekOdemeler = aktifKartBugununAyari?.ekOdemeler?.copy(); aktifKart?.kesintiler = aktifKartBugununAyari?.kesintiler?.copy(); aktifKart?.vergiler = aktifKartBugununAyari?.vergiler?.copy(); aktifKart?.gunTuru = aktifKartBugununAyari!.turu; aktifKart?.gecerliMesaiOraniAl(); aktifKart?.gecerliMolalariAl(); } aktifKart?.normalGirisiYap(); aktifKart?.normalCikisiYap(); ModelHareketler yeniHareket = aktifKart!.toModelHareket(); await isar.writeTxn( () async { await Future.delayed(const Duration(milliseconds: 500)); await isar.modelHareketlers.put(yeniHareket); aktifKart?.sifirla(); await isar.calismaKayits.put(aktifKart!); AndroidIntent intent1 = const AndroidIntent( action: 'com.fikoyt.akcali.komut', package: 'com.fikoyt.akcali', arguments: {'komut': "com.fikoyt.akcali.komut.aktifKart.sifirla"}, category: "android.intent.category.DEFAULT", ); await intent1.launch(); }, ); } /** * Durum Bildirimleri */ //---> await sartliBildirim( bildirimlerPlugin: bildirimlerPlugin, aktifKartDurumlar: aktifKartDurumlar, gecerliSartlar: [ AktifDurum.KART_TANIMLI_DEGIL, AktifDurum.GIRIS_YAPILMAMIS, AktifDurum.GIRIS_TOLERANSINDA, AktifDurum.CALISMA_GUNU, AktifDurum.ISE_BASLAMA_BILDIRIMLERI_GOSTERILECEK, ], gecersizSartlar: [ AktifDurum.OTOMATIK_GIRIS_YAPILACAK, ], kanalIsmi: "İşe Başlama Bildirimleri", aciklama: "Şu An İşe Giriş Toleransının İçindesiniz.Giriş Yapmak İstermisiniz?", butonlar: [ const AndroidNotificationAction( "com.fikoyt.akcali.komut.aktifKart.giris.yap.saatinde", "Giris Yap", showsUserInterface: true, ), ], ); //---> await sartliBildirim( bildirimlerPlugin: bildirimlerPlugin, aktifKartDurumlar: aktifKartDurumlar, gecerliSartlar: [ AktifDurum.KART_TANIMLI, AktifDurum.GIRIS_YAPILMAMIS, AktifDurum.GIRIS_TOLERANSINDA, AktifDurum.KART_BUGUNE_AIT, AktifDurum.CALISMA_GUNU, AktifDurum.ISE_BASLAMA_BILDIRIMLERI_GOSTERILECEK, ], gecersizSartlar: [ AktifDurum.GIRIS_YAPILMIS, AktifDurum.GIRIS_TOLERANSINDA_DEGIL, AktifDurum.OTOMATIK_GIRIS_YAPILACAK, ], kanalIsmi: "İşe Başlama Bildirimleri", aciklama: "Bu Güne Ait Kart Tanımlamışsınız Ancak Giriş Yapmamışsınız.Şu An Giriş Toleransının İçindesiniz. Giriş Yapmak İstermisiniz?", butonlar: [ const AndroidNotificationAction( "com.fikoyt.akcali.komut.aktifKart.giris.yap.saatinde", "Giris Yap", showsUserInterface: true, ), ], ); //---> /** Kart Tanımlı, Toleransta, Giriş Yapılmamış, Toleransta */ // service.invoke("mesaici.servis.olay.sistem.mesaj", {"durum": aktifKartDurumlar.toString()}); await sartliBildirim( bildirimlerPlugin: bildirimlerPlugin, aktifKartDurumlar: aktifKartDurumlar, gecerliSartlar: [ AktifDurum.GIRIS_YAPILMAMIS, AktifDurum.GIRIS_SAATI_GECMIS, AktifDurum.CALISMA_GUNU, AktifDurum.BUGUNE_AIT_KAYITLAR_YOK, AktifDurum.ISE_BASLAMA_BILDIRIMLERI_GOSTERILECEK, ], gecersizSartlar: [ AktifDurum.RAPORLU, AktifDurum.GUNLUK_IZINLI, AktifDurum.YILLIK_IZINLI, AktifDurum.RESMI_TATIL, AktifDurum.GIRIS_YAPILMIS, AktifDurum.BUGUNE_AIT_KAYITLAR_VAR, AktifDurum.DINLENME_GUNU, AktifDurum.HAFTA_TATILI, AktifDurum.OTOMATIK_GIRIS_YAPILACAK, ], kanalIsmi: "İşe Başlama Bildirimleri", aciklama: "Mesai Başlama Zamanı Geçmiş. Giriş Toleransında Değilsiniz. Giriş Yapmak İstermisiniz?", butonlar: [ const AndroidNotificationAction( "com.fikoyt.akcali.komut.aktifKart.giris.yap.simdi", "Simdi", showsUserInterface: true, ), const AndroidNotificationAction( "com.fikoyt.akcali.komut.aktifKart.giris.yap.saatinde", "Saatinde", showsUserInterface: true, ), ], ); if (await sartKontrol(aktifKartDurumlar: aktifKartDurumlar, gecerliSartlar: [ AktifDurum.GIRIS_YAPILMAMIS, AktifDurum.GIRIS_SAATI_GECMIS, AktifDurum.CALISMA_GUNU, AktifDurum.BUGUNE_AIT_KAYITLAR_YOK, AktifDurum.ISE_BASLAMA_BILDIRIMLERI_GOSTERILECEK, AktifDurum.OTOMATIK_GIRIS_YAPILACAK, ], gecersizSartlar: [ AktifDurum.RAPORLU, AktifDurum.GUNLUK_IZINLI, AktifDurum.YILLIK_IZINLI, AktifDurum.RESMI_TATIL, AktifDurum.GIRIS_YAPILMIS, AktifDurum.BUGUNE_AIT_KAYITLAR_VAR, // AktifDurum.DINLENME_GUNU, // AktifDurum.HAFTA_TATILI, ])) { AndroidIntent intent = const AndroidIntent( action: 'com.fikoyt.akcali.komut', package: 'com.fikoyt.akcali', arguments: {'komut': "com.fikoyt.akcali.komut.aktifKart.giris.yap.saatinde"}, category: "android.intent.category.DEFAULT", ); await intent.launch(); await bildirim(bildirimlerPlugin: bildirimlerPlugin, id: 5555, kanalIsmi: "İşe Başlama Bildirimleri", aciklama: "Girişiniz Otomatik Yapıldı"); if (aktifKart?.tarih == null) { aktifKart?.tarih = DateTime.now(); aktifKart?.maas = ayarlar?.maasParametreleri.toListe()[DateTime.now().month - 1]; aktifKart?.aktifVardiya = ayarlar?.calismaSuresiAyarlari.vardiyalar[ayarlar?.calismaSuresiAyarlari.aktifVardiya ?? 0]; aktifKart?.calismaSuresi = aktifKartBugununAyari?.calismaSuresi; aktifKart?.ekOdemeler = aktifKartBugununAyari?.ekOdemeler?.copy(); aktifKart?.kesintiler = aktifKartBugununAyari?.kesintiler?.copy(); aktifKart?.vergiler = aktifKartBugununAyari?.vergiler?.copy(); aktifKart?.gunTuru = aktifKartBugununAyari!.turu; aktifKart?.gecerliMesaiOraniAl(); aktifKart?.gecerliMolalariAl(); } aktifKart?.normalGirisiYap(); await isar.writeTxn(() async { await isar.calismaKayits.put(aktifKart!); }); } /** * */ // await sartliBildirim( // bildirimlerPlugin: bildirimlerPlugin, // aktifKartDurumlar: aktifKartDurumlar, // gecerliSartlar: [AktifDurum.KART_TANIMLI_DEGIL, AktifDurum.CIKIS_YAPILMAMIS, AktifDurum.CIKIS_TOLERANSINDA, AktifDurum.CALISMA_GUNU], // kanalIsmi: "İşi Bitirme Bildirimleri", // aciklama: "Şu An İşten Çıkıs Toleransının İçindesiniz.Çıkış Yapmak İstermisiniz?", // butonlar: [ // const AndroidNotificationAction("com.fikoyt.akcali.komut.aktifKart.cikis.yap.saatinde", "Cikis Yap"), // ], // ); //---> await sartliBildirim( bildirimlerPlugin: bildirimlerPlugin, aktifKartDurumlar: aktifKartDurumlar, gecerliSartlar: [ AktifDurum.KART_TANIMLI, AktifDurum.CIKIS_YAPILMAMIS, AktifDurum.CIKIS_TOLERANSINDA, AktifDurum.KART_BUGUNE_AIT, ], gecersizSartlar: [ AktifDurum.CIKIS_YAPILMIS, AktifDurum.GIRIS_YAPILMAMIS, AktifDurum.CIKIS_TOLERANSINDA_DEGIL, AktifDurum.RAPORLU, AktifDurum.GUNLUK_IZINLI, AktifDurum.YILLIK_IZINLI, AktifDurum.RESMI_TATIL, AktifDurum.ISI_BITIRME_BILDIRIMLERI_GOSTERILECEK, AktifDurum.OTOMATIK_CIKIS_YAPILACAK, ], kanalIsmi: "İş Bitirme Bildirimleri", aciklama: "Şu An Çıkış Toleransındasınız.Çalışmaya Devam Etmicekseniz, Şu An Çıkış Yapmak İstermisiniz?", butonlar: [ const AndroidNotificationAction( "com.fikoyt.akcali.komut.aktifKart.cikis.yap.saatinde", "Cikis Yap", showsUserInterface: true, ), ], ); //---> await sartliBildirim( bildirimlerPlugin: bildirimlerPlugin, aktifKartDurumlar: aktifKartDurumlar, gecerliSartlar: [ AktifDurum.CIKIS_YAPILMAMIS, AktifDurum.CIKIS_SAATI_GECMIS, AktifDurum.ISI_BITIRME_BILDIRIMLERI_GOSTERILECEK, ], gecersizSartlar: [ AktifDurum.RAPORLU, AktifDurum.GUNLUK_IZINLI, AktifDurum.YILLIK_IZINLI, AktifDurum.RESMI_TATIL, AktifDurum.GIRIS_YAPILMAMIS, AktifDurum.OTOMATIK_CIKIS_YAPILACAK, AktifDurum.KART_TANIMLI, ], kanalIsmi: "İş Bitirme Bildirimleri", aciklama: "Mesai Bitirme Zamanı Geçmiş.Çıkış Toleransında Değilsiniz. Çıkış Yapmak İstermisiniz?", butonlar: [ const AndroidNotificationAction( "com.fikoyt.akcali.komut.aktifKart.cikis.yap.simdi", "Simdi", showsUserInterface: true, ), const AndroidNotificationAction( "com.fikoyt.akcali.komut.aktifKart.cikis.yap.saatinde", "Saatinde", showsUserInterface: true, ), ], ); await sartliBildirim( bildirimlerPlugin: bildirimlerPlugin, aktifKartDurumlar: aktifKartDurumlar, gecerliSartlar: [ AktifDurum.CIKIS_YAPILMAMIS, AktifDurum.CIKIS_SAATI_GECMIS, AktifDurum.ISI_BITIRME_BILDIRIMLERI_GOSTERILECEK, ], gecersizSartlar: [ AktifDurum.RAPORLU, AktifDurum.GUNLUK_IZINLI, AktifDurum.YILLIK_IZINLI, AktifDurum.RESMI_TATIL, // AktifDurum.GIRIS_YAPILMAMIS, AktifDurum.OTOMATIK_CIKIS_YAPILACAK, AktifDurum.KART_TANIMLI, ], kanalIsmi: "İş Bitirme Bildirimleri", aciklama: "Mesai Bitirme Zamanı Geçmiş.Çıkış Toleransında Değilsiniz ve Giriş'te Yapılmamış.Giriş Saatinde Yapılacak Ama Çıkış Yapmak İstermisiniz?(Kart Kaydedilmeyecektir Elle Kaydediniz.)", butonlar: [ const AndroidNotificationAction( "com.fikoyt.akcali.komut.aktifKart.giris-cikis.yap.simdi", "Simdi", showsUserInterface: true, ), const AndroidNotificationAction( "com.fikoyt.akcali.komut.aktifKart.giris-cikis.yap.saatinde", "Saatinde", showsUserInterface: true, ), ], ); if (await sartKontrol(aktifKartDurumlar: aktifKartDurumlar, gecerliSartlar: [ AktifDurum.CIKIS_YAPILMAMIS, AktifDurum.GIRIS_YAPILMAMIS, AktifDurum.CIKIS_SAATI_GECMIS, AktifDurum.CALISMA_GUNU, AktifDurum.BUGUNE_AIT_KAYITLAR_YOK, AktifDurum.OTOMATIK_CIKIS_YAPILACAK, ], gecersizSartlar: [ AktifDurum.RAPORLU, AktifDurum.GUNLUK_IZINLI, AktifDurum.YILLIK_IZINLI, AktifDurum.RESMI_TATIL, AktifDurum.CIKIS_YAPILMIS, AktifDurum.BUGUNE_AIT_KAYITLAR_VAR, AktifDurum.KART_TANIMLI, // AktifDurum.DINLENME_GUNU, // AktifDurum.HAFTA_TATILI, ])) { // AndroidIntent intent = const AndroidIntent( // action: 'com.fikoyt.akcali.komut', // package: 'com.fikoyt.akcali', // arguments: {'komut': "com.fikoyt.akcali.komut.aktifKart.cikis.yap.saatinde"}, // category: "android.intent.category.DEFAULT", // ); // await intent.launch(); await bildirim(bildirimlerPlugin: bildirimlerPlugin, id: 5555, kanalIsmi: "İş Bitirme Bildirimleri", aciklama: "FikoYT Finans Kartınız Otomatik Kaydedildi."); if (aktifKart?.tarih == null) { aktifKart?.tarih = DateTime.now(); aktifKart?.maas = ayarlar?.maasParametreleri.toListe()[DateTime.now().month - 1]; aktifKart?.aktifVardiya = ayarlar?.calismaSuresiAyarlari.vardiyalar[ayarlar?.calismaSuresiAyarlari.aktifVardiya ?? 0]; aktifKart?.calismaSuresi = aktifKartBugununAyari?.calismaSuresi; aktifKart?.ekOdemeler = aktifKartBugununAyari?.ekOdemeler?.copy(); aktifKart?.kesintiler = aktifKartBugununAyari?.kesintiler?.copy(); aktifKart?.vergiler = aktifKartBugununAyari?.vergiler?.copy(); aktifKart?.gunTuru = aktifKartBugununAyari!.turu; aktifKart?.gecerliMesaiOraniAl(); aktifKart?.gecerliMolalariAl(); } aktifKart?.normalGirisiYap(); aktifKart?.normalCikisiYap(); ModelHareketler yeniHareket = aktifKart!.toModelHareket(); await isar.writeTxn( () async { await Future.delayed(const Duration(milliseconds: 500)); await isar.modelHareketlers.put(yeniHareket); aktifKart?.sifirla(); await isar.calismaKayits.put(aktifKart!); AndroidIntent intent1 = const AndroidIntent( action: 'com.fikoyt.akcali.komut', package: 'com.fikoyt.akcali', arguments: {'komut': "com.fikoyt.akcali.komut.aktifKart.sifirla"}, category: "android.intent.category.DEFAULT", ); await intent1.launch(); }, ); } if (await sartKontrol(aktifKartDurumlar: aktifKartDurumlar, gecerliSartlar: [ AktifDurum.CIKIS_YAPILMAMIS, AktifDurum.GIRIS_YAPILMAMIS, AktifDurum.BUGUNE_AIT_KAYITLAR_YOK, AktifDurum.OTOMATIK_GIRIS_YAPILACAK, AktifDurum.OTOMATIK_CIKIS_YAPILACAK, ], gecersizSartlar: [ AktifDurum.KART_TANIMLI, AktifDurum.RAPORLU, AktifDurum.GUNLUK_IZINLI, AktifDurum.YILLIK_IZINLI, AktifDurum.BUGUNE_AIT_KAYITLAR_VAR, AktifDurum.CALISMA_GUNU, // AktifDurum.HAFTA_TATILI, ])) { // AndroidIntent intent = const AndroidIntent( // action: 'com.fikoyt.akcali.komut', // package: 'com.fikoyt.akcali', // arguments: {'komut': "com.fikoyt.akcali.komut.aktifKart.cikis.yap.saatinde"}, // category: "android.intent.category.DEFAULT", // ); // await intent.launch(); await bildirim(bildirimlerPlugin: bildirimlerPlugin, id: 5555, kanalIsmi: "İş Bitirme Bildirimleri", aciklama: "FikoYT Finans Tatil Yada Dinlenme Günü Olduğundan Kartınız Otomatik Kaydedildi."); if (aktifKart?.tarih == null) { aktifKart?.tarih = DateTime.now(); aktifKart?.maas = ayarlar?.maasParametreleri.toListe()[DateTime.now().month - 1]; aktifKart?.aktifVardiya = ayarlar?.calismaSuresiAyarlari.vardiyalar[ayarlar?.calismaSuresiAyarlari.aktifVardiya ?? 0]; aktifKart?.calismaSuresi = aktifKartBugununAyari?.calismaSuresi; aktifKart?.ekOdemeler = aktifKartBugununAyari?.ekOdemeler?.copy(); aktifKart?.kesintiler = aktifKartBugununAyari?.kesintiler?.copy(); aktifKart?.vergiler = aktifKartBugununAyari?.vergiler?.copy(); aktifKart?.gunTuru = aktifKartBugununAyari!.turu; aktifKart?.gecerliMesaiOraniAl(); aktifKart?.gecerliMolalariAl(); } // aktifKart?.normalGirisiYap(); // aktifKart?.normalCikisiYap(); ModelHareketler yeniHareket = aktifKart!.toModelHareket(); await isar.writeTxn( () async { await Future.delayed(const Duration(milliseconds: 500)); await isar.modelHareketlers.put(yeniHareket); // aktifKart?.sifirla(); // await isar.calismaKayits.put(aktifKart!); AndroidIntent intent1 = const AndroidIntent( action: 'com.fikoyt.akcali.komut', package: 'com.fikoyt.akcali', arguments: {'komut': "com.fikoyt.akcali.komut.hareketler.guncelle"}, category: "android.intent.category.DEFAULT", ); await intent1.launch(); }, ); } // service.invoke("mesaici.servis.olay.sistem.mesaj", {"aktifCalisma": await isar.calismaKayits.get(0)}); /** */ // Vardiya? aktifVardiya = ayarlar?.calismaSuresiAyarlari.vardiyalar[ayarlar.calismaSuresiAyarlari.aktifVardiya ?? 0]; // if (DateTime.now().yilinIlkGunu()) // flutterLocalNotificationsPlugin.show( // 1, // 'FikoYT', // 'Çalışma Süresi ${DateTime.now()}Çalışma Süresi ${DateTime.now()}Çalışma Süresi ${DateTime.now()}Çalışma Süresi ${DateTime.now()}Çalışma Süresi ${DateTime.now()}Çalışma Süresi ${DateTime.now()}', // NotificationDetails( // android: AndroidNotificationDetails( // "Genel", // 'FikoYT Servis', // subText: "Tabiikide Alt Açıklama", // icon: '@mipmap/launcher_icon', // ongoing: true, // enableVibration: false, // channelShowBadge: true, // silent: false, // fullScreenIntent: true, // colorized: true, // color: Color(Colors.blue.value), // progress: prgrs, // maxProgress: 100, // showProgress: true, // largeIcon: const DrawableResourceAndroidBitmap('@mipmap/ic_launcher'), // styleInformation: BigTextStyleInformation("Çalışma Süresi ${DateTime.now()}Çalışma Süresi ${DateTime.now()}Çalışma Süresi ${DateTime.now()}Çalışma Süresi ${DateTime.now()}Çalışma Süresi ${DateTime.now()}Çalışma Süresi ${DateTime.now()}'", contentTitle: "FikoYT", summaryText: "Özet Yazı"), // ), // ), // ); // if (prgrs > 99) { // prgrs = 0; // } else { // prgrs += 1; // } // await flutterLocalNotificationsPlugin.cancel(112233); }); } Future aktifKartDurumlarGuncelle(List aktifKartDurumlar, ModelAyarlar? ayarlar, GunAyari? bugununAyari, FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin, CalismaKayit? aktifKart, Isar isar, ServiceInstance service) async { DateTime bugun = DateTime.now(); aktifKartDurumlar.clear(); ayarlar; bugununAyari; flutterLocalNotificationsPlugin; /** */ if (aktifKart?.tarih == null) { aktifKartDurumlar.add(AktifDurum.KART_TANIMLI_DEGIL); } else { aktifKartDurumlar.add(AktifDurum.KART_TANIMLI); } if (aktifKart?.tarih?.formatla("dd.MM.yyyy") == bugun.formatla("dd.MM.yyyy")) { aktifKartDurumlar.add(AktifDurum.KART_BUGUNE_AIT); } else { aktifKartDurumlar.add(AktifDurum.KART_BUGUNE_AIT_DEGIL); } if (aktifKart?.giris == null) { aktifKartDurumlar.add(AktifDurum.GIRIS_YAPILMAMIS); } else { aktifKartDurumlar.add(AktifDurum.GIRIS_YAPILMIS); } int? kartGunununKayitSayisi = await isar.modelHareketlers .filter() .calismaKartiIsNotNull() .calismaKarti( (kart) => kart.tarihIsNotNull().tarihBetween(aktifKart?.tarih?.ilkSaatler(), aktifKart?.tarih?.sonSaatler()), ) .count(); if (kartGunununKayitSayisi > 0) { aktifKartDurumlar.add(AktifDurum.KART_GUNUNDE_BASKA_KAYITLAR_VAR); } else { aktifKartDurumlar.add(AktifDurum.KART_GUNUNDE_BASKA_KAYITLAR_YOK); } int? bugununKayitSayisi = await isar.modelHareketlers .filter() .calismaKartiIsNotNull() .calismaKarti( (kart) => kart.tarihIsNotNull().tarihBetween(DateTime.now().ilkSaatler(), DateTime.now().sonSaatler()), ) .count(); if (bugununKayitSayisi > 0) { aktifKartDurumlar.add(AktifDurum.BUGUNE_AIT_KAYITLAR_VAR); } else { aktifKartDurumlar.add(AktifDurum.BUGUNE_AIT_KAYITLAR_YOK); } if (aktifKart?.cikis == null) { aktifKartDurumlar.add(AktifDurum.CIKIS_YAPILMAMIS); } else { aktifKartDurumlar.add(AktifDurum.CIKIS_YAPILMIS); } if (aktifKart?.tarih != null) { switch (aktifKart?.gunTuru) { case GunTuru.CALISMA_GUNU: aktifKartDurumlar.add(AktifDurum.CALISMA_GUNU); break; case GunTuru.DINLENME_GUNU: aktifKartDurumlar.add(AktifDurum.DINLENME_GUNU); break; case GunTuru.HAFTA_TATILI: aktifKartDurumlar.add(AktifDurum.HAFTA_TATILI); break; default: null; } } else { switch (bugununAyari?.turu) { case GunTuru.CALISMA_GUNU: aktifKartDurumlar.add(AktifDurum.CALISMA_GUNU); break; case GunTuru.DINLENME_GUNU: aktifKartDurumlar.add(AktifDurum.DINLENME_GUNU); break; case GunTuru.HAFTA_TATILI: aktifKartDurumlar.add(AktifDurum.HAFTA_TATILI); break; default: null; } } if ((aktifKart?.fazlaMesai ?? Duration.zero) > Duration.zero) { aktifKartDurumlar.add(AktifDurum.FAZLA_MESAI_VAR); } else { aktifKartDurumlar.add(AktifDurum.FAZLA_MESAI_YOK); } if ((aktifKart?.calisilanSure ?? Duration.zero) < (aktifKart?.calismaSuresi ?? Duration.zero)) { aktifKartDurumlar.add(AktifDurum.EKSIK_CALISMA_VAR); } else { aktifKartDurumlar.add(AktifDurum.EKSIK_CALISMA_YOK); } if (aktifKart?.servisGecikmesi == true) { aktifKartDurumlar.add(AktifDurum.SERVIS_GECIKMESI_VAR); } else { aktifKartDurumlar.add(AktifDurum.SERVIS_GECIKMESI_YOK); } if (aktifKart?.resmiTatil == true) { aktifKartDurumlar.add(AktifDurum.RESMI_TATIL); } else { aktifKartDurumlar.add(AktifDurum.RESMI_TATIL_DEGIL); } if (aktifKart?.raporlu == true) { aktifKartDurumlar.add(AktifDurum.RAPORLU); } else { aktifKartDurumlar.add(AktifDurum.RAPORLU_DEGIL); } if (aktifKart?.gunlukIzinli == true) { aktifKartDurumlar.add(AktifDurum.GUNLUK_IZINLI); } else { aktifKartDurumlar.add(AktifDurum.GUNLUK_IZINLI_DEGIL); } if (aktifKart?.yillikIzinli == true) { aktifKartDurumlar.add(AktifDurum.YILLIK_IZINLI); } else { aktifKartDurumlar.add(AktifDurum.YILLIK_IZINLI_DEGIL); } // if (aktifKart?.aktifVardiya != null) { DateTime? minGirisTime = DateTime.now().ayarlaGununSaati(bugununAyari?.girisSaati?.gununSaati()).subtract(bugununAyari?.girisToleransi ?? Duration.zero); DateTime? maxGirisTime = DateTime.now().ayarlaGununSaati(bugununAyari?.girisSaati?.gununSaati()).add(bugununAyari?.girisToleransi ?? Duration.zero); // service.invoke("mesaici.servis.olay.sistem.mesaj", {"durum": "$minGirisTime $maxGirisTime"}); if (DateTime.now().miArasinda(minGirisTime, maxGirisTime) ?? false) { aktifKartDurumlar.add(AktifDurum.GIRIS_TOLERANSINDA); } else { aktifKartDurumlar.add(AktifDurum.GIRIS_TOLERANSINDA_DEGIL); } // } else { // aktifKartDurumlar.add(AktifDurum.GIRIS_TOLERANSINDA_DEGIL); // } // if (aktifKart?.aktifVardiya != null) { DateTime? minCikisTime = DateTime.now().ayarlaGununSaati(bugununAyari?.cikisSaati?.gununSaati()).subtract(bugununAyari?.cikisToleransi ?? Duration.zero); DateTime? maxCikisTime = DateTime.now().ayarlaGununSaati(bugununAyari?.cikisSaati?.gununSaati()).add(bugununAyari?.cikisToleransi ?? Duration.zero); if (DateTime.now().miArasinda(minCikisTime, maxCikisTime) ?? false) { aktifKartDurumlar.add(AktifDurum.CIKIS_TOLERANSINDA); } else { aktifKartDurumlar.add(AktifDurum.CIKIS_TOLERANSINDA_DEGIL); } // } else { // aktifKartDurumlar.add(AktifDurum.CIKIS_TOLERANSINDA_DEGIL); // } /** */ CalismaDurum calismaDurum = CalismaDurum.BILINMIYOR; for (var i = 0; i < (aktifKart?.molalar ?? []).length; i++) { Mola aktifMola = aktifKart!.molalar![i]; if (aktifMola.molaDurumu == MolaDurumu.YASANIYOR) { calismaDurum = CalismaDurum.MOLADA; break; } else { if (aktifKart.giris != null && aktifKart.cikis == null) { calismaDurum = CalismaDurum.CALISILIYOR; break; } } if ([AktifDurum.CIKIS_YAPILMIS, AktifDurum.GIRIS_YAPILMIS].every((item) => aktifKartDurumlar.contains(item))) { calismaDurum = CalismaDurum.DINLENME; } } switch (calismaDurum) { case CalismaDurum.DINLENME: aktifKartDurumlar.add(AktifDurum.CALISMA_DURUM_DINLENME); break; case CalismaDurum.CALISILIYOR: aktifKartDurumlar.add(AktifDurum.CALISMA_DURUM_CALISILIYOR); break; case CalismaDurum.MOLADA: aktifKartDurumlar.add(AktifDurum.CALISMA_DURUM_MOLADA); break; case CalismaDurum.BILINMIYOR: aktifKartDurumlar.add(AktifDurum.CALISMA_DURUM_BILINMIYOR); break; default: null; } if (DateTime.now().isAfter(maxGirisTime)) { aktifKartDurumlar.add(AktifDurum.GIRIS_SAATI_GECMIS); } else { aktifKartDurumlar.add(AktifDurum.GIRIS_SAATI_GECMEMIS); } if (DateTime.now().isAfter(maxCikisTime)) { aktifKartDurumlar.add(AktifDurum.CIKIS_SAATI_GECMIS); } else { aktifKartDurumlar.add(AktifDurum.CIKIS_SAATI_GECMEMIS); } if (ayarlar!.bildirimAyarlari.iseBaslamaBildirimleri) { aktifKartDurumlar.add(AktifDurum.ISE_BASLAMA_BILDIRIMLERI_GOSTERILECEK); } else { aktifKartDurumlar.add(AktifDurum.ISE_GIRIS_BILDIRIMLERI_GOSTERILMEYECEK); } if (ayarlar.bildirimAyarlari.isiBitirmeBildirimleri) { aktifKartDurumlar.add(AktifDurum.ISI_BITIRME_BILDIRIMLERI_GOSTERILECEK); } else { aktifKartDurumlar.add(AktifDurum.ISE_BITIRME_BILDIRIMLERI_GOSTERILMEYECEK); } if (ayarlar.uygulamaAyarlari.saatGeldigindeOtomatikGirisYap) { aktifKartDurumlar.add(AktifDurum.OTOMATIK_GIRIS_YAPILACAK); } else { aktifKartDurumlar.add(AktifDurum.OTOMATIK_GIRIS_YAPILMAYACAK); } if (ayarlar.uygulamaAyarlari.saatGeldigindeOtomatikCikisYap) { aktifKartDurumlar.add(AktifDurum.OTOMATIK_CIKIS_YAPILACAK); } else { aktifKartDurumlar.add(AktifDurum.OTOMATIK_CIKIS_YAPILMAYACAK); } } /** * */ Future isar_init() async { Isar isar = Isar.getInstance("FikoYT.db") ?? Isar.openSync( [CalismaKayitSchema, ModelAyarlarSchema, ModelHareketlerSchema], directory: await FikoYTService.programYolu(ekYol: "databases"), name: "FikoYT.db", inspector: false, ); return isar; } /** * */ Future LocalNotification_init() async { /** */ final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); const AndroidInitializationSettings initializationSettingsAndroid = AndroidInitializationSettings('@mipmap/ic_launcher'); const InitializationSettings initializationSettings = InitializationSettings(android: initializationSettingsAndroid); /** */ await flutterLocalNotificationsPlugin.initialize(initializationSettings, onDidReceiveBackgroundNotificationResponse: notificationTapBackground, onDidReceiveNotificationResponse: notificationTapBackground); return flutterLocalNotificationsPlugin; } /** * */ @pragma('vm:entry-point') void notificationTapBackground(NotificationResponse notificationResponse) async { if (notificationResponse.actionId == "com.fikoyt.akcali.komut.aktifKart.giris.yap.saatinde") { AndroidIntent intent = const AndroidIntent( action: 'com.fikoyt.akcali.komut', package: 'com.fikoyt.akcali', arguments: {'komut': "com.fikoyt.akcali.komut.aktifKart.giris.yap.saatinde"}, category: "android.intent.category.DEFAULT", ); await intent.launch(); } if (notificationResponse.actionId == "com.fikoyt.akcali.komut.aktifKart.giris.yap.simdi") { AndroidIntent intent = const AndroidIntent( action: 'com.fikoyt.akcali.komut', package: 'com.fikoyt.akcali', arguments: {'komut': "com.fikoyt.akcali.komut.aktifKart.giris.yap.simdi"}, category: "android.intent.category.DEFAULT", ); await intent.launch(); } if (notificationResponse.actionId == "com.fikoyt.akcali.komut.aktifKart.cikis.yap.saatinde") { AndroidIntent intent = const AndroidIntent( action: 'com.fikoyt.akcali.komut', package: 'com.fikoyt.akcali', arguments: {'komut': "com.fikoyt.akcali.komut.aktifKart.cikis.yap.saatinde"}, category: "android.intent.category.DEFAULT", ); await intent.launch(); } if (notificationResponse.actionId == "com.fikoyt.akcali.komut.aktifKart.cikis.yap.simdi") { AndroidIntent intent = const AndroidIntent( action: 'com.fikoyt.akcali.komut', package: 'com.fikoyt.akcali', arguments: {'komut': "com.fikoyt.akcali.komut.aktifKart.cikis.yap.simdi"}, category: "android.intent.category.DEFAULT", ); await intent.launch(); } /** */ if (notificationResponse.actionId == "com.fikoyt.akcali.komut.ozetAylik.hesapla") { AndroidIntent intent = const AndroidIntent( action: 'com.fikoyt.akcali.komut', package: 'com.fikoyt.akcali', arguments: {'komut': "com.fikoyt.akcali.komut.ozetAylik.hesapla"}, category: "android.intent.category.DEFAULT", ); await intent.launch(); } }