import 'dart:async'; import 'dart:convert'; import 'dart:io'; import 'package:fikoyt_mesaici/apps/mesaici/model/model_hareketler.dart'; import 'package:fikoyt_mesaici/apps/mesaici/servisler/page_ayar_satin_al_logic.dart'; import 'package:fikoyt_mesaici/core/Extensions/fiko_tarih.dart'; import 'package:fikoyt_mesaici/core/fikoyt.service.dart'; import 'package:file_picker/file_picker.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart' hide Intent; import 'package:flutter/services.dart'; import 'package:flutter_background_service/flutter_background_service.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:get/get.dart'; import 'package:isar/isar.dart'; import 'package:path_provider/path_provider.dart'; import 'package:receive_intent/receive_intent.dart'; import '../model/calisma_kayit/calisma_kayit.dart'; import '../model/ayarlar/model_ayarlar.dart'; import 'mesaici.background.dart'; class FikoYTMesaiciService extends GetxService { final servisSatinAl = Get.put(PageAyarSatinAlLogic()); //---> Isar? isar; Rx aktifIntent = Rx(null); /** */ Rx? aktifCalisma = CalismaKayit().obs; Rx? ayarlarModel = ModelAyarlar().obs; /** */ FlutterLocalNotificationsPlugin? bildirimPaketi; final arkaPlanServis = FlutterBackgroundService(); // late SharedPreferences ayarlar; /** */ // late MesaiciAyarlar mesaiciAyarlar; /** */ AylikOzet? aylikOzet; /** RS+: Profil Resmi */ Rx profilResmi = Rx(null); // = ayarlarModel!.value.calismaSuresiAyarlari.vardiyalar.isNotEmpty // ? ayarlarModel?.value.calismaSuresiAyarlari.vardiyalar[0] // : null; Rx vtHatasi = false.obs; FikoYTMesaiciService() { init(); } Future init() async { aylikOzet ??= AylikOzet(servis: this); // aktifIntent.listen( // (data) async {}, // ); ayarlarModel = (await standartAyarlariOku()).obs; ReceiveIntent.receivedIntentStream.listen((intent) async { aktifIntent.value = intent; // aktifIntent.refresh(); await intentMetodCalistir(intent); // Validate receivedIntent and warn the user, if it is not correct, }, onError: (err) { // Handle exception }); try { await isar_init(); await ayarlar_init(); await aktifCalisma_init(); } catch (e) { // if (kDebugMode) { print(e); // } vtHatasi.value = true; } // await isar_init(); // await ayarlar_init(); // await aktifCalisma_init(); if ((await profilResmiAl).existsSync()) { profilResmi.value = (await profilResmiAl).readAsBytesSync(); } return this; } intentMetodCalistir(Intent? data) async { if (data?.action == "com.fikoyt.mesaici.komut" || data?.action == "SELECT_FOREGROUND_NOTIFICATION") { if (data?.extra?["komut"] == "com.fikoyt.mesaici.komut.aktifKart.giris.yap.saatinde" || data?.extra?["actionId"] == "com.fikoyt.mesaici.komut.aktifKart.giris.yap.saatinde") { if (aktifCalisma?.value?.tarih == null) { aktifCalisma?.value?.kartEkle(gunAyarlariniAktar: true, kartTarih: aktifCalisma?.value?.tarih ?? DateTime.now()); } aktifCalisma?.value?.normalGirisiYap(); try { aktifCalisma?.refresh(); // FikoYTService.navigatorKey.currentContext?.vRouter.to("/mesaici"); } catch (e) {} } if (data?.extra?["komut"] == "com.fikoyt.mesaici.komut.aktifKart.giris.yap.simdi" || data?.extra?["actionId"] == "com.fikoyt.mesaici.komut.aktifKart.giris.yap.simdi") { if (aktifCalisma?.value?.tarih == null) { aktifCalisma?.value?.kartEkle(gunAyarlariniAktar: true, kartTarih: aktifCalisma?.value?.tarih ?? DateTime.now()); } aktifCalisma?.value?.girisYap(); try { aktifCalisma?.refresh(); // FikoYTService.navigatorKey.currentContext?.vRouter.to("/mesaici"); } catch (e) {} } if (data?.extra?["komut"] == "com.fikoyt.mesaici.komut.aktifKart.cikis.yap.saatinde" || data?.extra?["actionId"] == "com.fikoyt.mesaici.komut.aktifKart.cikis.yap.saatinde") { aktifCalisma?.value?.normalCikisiYap(); try { aktifCalisma?.refresh(); // FikoYTService.navigatorKey.currentContext?.vRouter.to("/mesaici"); } catch (e) {} } if (data?.extra?["komut"] == "com.fikoyt.mesaici.komut.aktifKart.cikis.yap.simdi" || data?.extra?["actionId"] == "com.fikoyt.mesaici.komut.aktifKart.cikis.yap.simdi") { aktifCalisma?.value?.cikisYap(); try { aktifCalisma?.refresh(); // FikoYTService.navigatorKey.currentContext?.vRouter.to("/mesaici"); } catch (e) {} } /** */ if (data?.extra?["komut"] == "com.fikoyt.mesaici.komut.yedekle.simdi" || data?.extra?["actionId"] == "com.fikoyt.mesaici.komut.yedekle.simdi") { // print("deneme"); SnackBar snck = const SnackBar( content: Text('FikoYT Mesaici Verileri Yedeklendi'), backgroundColor: Colors.red, duration: Duration(seconds: 3), // SnackBar'ın ekranda kalma süresi ); ScaffoldMessenger.of(FikoYTService.navigatorKey.currentState!.context).showSnackBar(snck); } if (data?.extra?["komut"] == "com.fikoyt.mesaici.komut.yedekle.liste.guncelle" || data?.extra?["actionId"] == "com.fikoyt.mesaici.komut.liste.guncelle") { // print("deneme"); aktifCalisma?.refresh(); } /** */ if (data?.extra?["komut"] == "com.fikoyt.mesaici.komut.aktifKart.sifirla" || data?.extra?["actionId"] == "com.fikoyt.mesaici.komut.aktifKart.sifirla") { // print("deneme"); aktifCalisma?.value?.sifirla(); await alHareketler(); aktifCalisma?.refresh(); aktifAy.refresh(); SnackBar snck = const SnackBar( content: Text('FikoYT Mesaici Aktif Kartı Otomatik Kaydetti'), backgroundColor: Colors.green, duration: Duration(seconds: 3), // SnackBar'ın ekranda kalma süresi ); ScaffoldMessenger.of(FikoYTService.navigatorKey.currentState!.context).showSnackBar(snck); } /** */ if (data?.extra?["komut"] == "com.fikoyt.mesaici.komut.hareketler.guncelle" || data?.extra?["actionId"] == "com.fikoyt.mesaici.komut.hareketler.guncelle") { // print("deneme"); aktifCalisma?.value?.sifirla(); await alHareketler(); aktifCalisma?.refresh(); aktifAy.refresh(); SnackBar snck = const SnackBar( content: Text('FikoYT Mesaici Hareketler Güncellendi'), backgroundColor: Colors.green, duration: Duration(seconds: 3), // SnackBar'ın ekranda kalma süresi ); ScaffoldMessenger.of(FikoYTService.navigatorKey.currentState!.context).showSnackBar(snck); } } /** */ if (data?.extra?["komut"] == "com.fikoyt.mesaici.komut.aktifKart.giris-cikis.yap.saatinde" || data?.extra?["actionId"] == "com.fikoyt.mesaici.komut.aktifKart.giris-cikis.yap.saatinde") { if (aktifCalisma?.value?.tarih == null) { aktifCalisma?.value?.kartEkle(gunAyarlariniAktar: true, kartTarih: aktifCalisma?.value?.tarih ?? DateTime.now()); } aktifCalisma?.value?.normalGirisiYap(); aktifCalisma?.value?.normalCikisiYap(); try { aktifCalisma?.refresh(); // FikoYTService.navigatorKey.currentContext?.vRouter.to("/mesaici"); } catch (e) {} } if (data?.extra?["komut"] == "com.fikoyt.mesaici.komut.aktifKart.giris-cikis.yap.simdi" || data?.extra?["actionId"] == "com.fikoyt.mesaici.komut.aktifKart.giris-cikis.yap.simdi") { if (aktifCalisma?.value?.tarih == null) { aktifCalisma?.value?.kartEkle(gunAyarlariniAktar: true, kartTarih: aktifCalisma?.value?.tarih ?? DateTime.now()); } aktifCalisma?.value?.normalGirisiYap(); aktifCalisma?.value?.cikisYap(); try { aktifCalisma?.refresh(); // FikoYTService.navigatorKey.currentContext?.vRouter.to("/mesaici"); } catch (e) {} } return; } Future getCustomDirectoryAndroid(String subDirectoryName) async { // Uygulamanın belgeler dizinini al final directory = await getApplicationDocumentsDirectory(); // Alt klasörün yolunu oluştur final customDirectory = Directory('${directory.path}${Platform.pathSeparator}$subDirectoryName'); // Eğer alt klasör mevcut değilse oluştur if (!await customDirectory.exists()) { await customDirectory.create(recursive: true); } return customDirectory; } Future getCustomDirectoryWindows(String subDirectoryName) async { String executablePath; int lastSeparatorIndex; String executableDir; executablePath = Platform.resolvedExecutable; lastSeparatorIndex = executablePath.lastIndexOf(Platform.pathSeparator); executableDir = executablePath.substring(0, lastSeparatorIndex); // Uygulamanın belgeler dizinini al final directory = executableDir; // Alt klasörün yolunu oluştur final customDirectory = Directory('$directory${Platform.pathSeparator}$subDirectoryName'); // Eğer alt klasör mevcut değilse oluştur if (!await customDirectory.exists()) { await customDirectory.create(recursive: true); } return customDirectory; } isar_init() async { String executableDir; executableDir = (await FikoYTService.programYolu(ekYol: "databases")); // if (Isar.getInstance("FikoYT.db")?.isOpen == true) { // if (isar != null) { // await isar?.close(); // } // } isar = Isar.getInstance("FikoYT.db") ?? await Isar.open([CalismaKayitSchema, ModelAyarlarSchema, ModelHareketlerSchema], directory: executableDir, name: "FikoYT.db", inspector: false); vtHatasi.value = false; vtHatasi.refresh(); } aktifCalisma_init() async { aktifCalisma?.value?.id = 0; aktifCalisma?.refresh(); CalismaKayit dbAktifKart = isar?.calismaKayits.getSync(0) ?? CalismaKayit(); isar?.writeTxn(() { return isar!.calismaKayits.put(dbAktifKart); }); aktifCalisma?.value = dbAktifKart; aktifCalisma?.listen( (data) async { await isar?.writeTxn(() async { await Future.delayed(const Duration(milliseconds: 100)); await isar!.calismaKayits.put(data ?? CalismaKayit(id: 0)); }); arkaPlanServis.invoke("mesaici.servis.olay.aktifKart.guncelle"); }, ); // 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 = 0; ayarlarModel?.refresh(); ModelAyarlar dbAktifAyarlar = await isar?.modelAyarlars.get(0) ?? await standartAyarlariOku(); dbAktifAyarlar.id = 0; /** */ if (dbAktifAyarlar.calismaSuresiAyarlari.vardiyalar.isEmpty) { dbAktifAyarlar.calismaSuresiAyarlari.vardiyalar = [Vardiya(ismi: "Sürekli Gündüz", aciklama: "Sadece Gündüz Çalışma.")]; dbAktifAyarlar.calismaSuresiAyarlari.aktifVardiya = 0; } else if (dbAktifAyarlar.calismaSuresiAyarlari.aktifVardiya! > dbAktifAyarlar.calismaSuresiAyarlari.vardiyalar.length - 1) { dbAktifAyarlar.calismaSuresiAyarlari.aktifVardiya = dbAktifAyarlar.calismaSuresiAyarlari.vardiyalar.length - 1; } /** */ isar?.writeTxn(() async { await Future.delayed(const Duration(milliseconds: 100)); return isar?.modelAyarlars.put(dbAktifAyarlar); }); ayarlarModel?.value = dbAktifAyarlar; ayarlarModel?.listen( (data) async { await isar?.writeTxn(() async { await Future.delayed(const Duration(milliseconds: 100)); // print(data.calismaSuresiAyarlari.vardiyalar[0].gunAyarlari.pazartesi.molalar[0].toJson()); await isar?.modelAyarlars.putAll([data]); }); arkaPlanServis.invoke("mesaici.servis.olay.ayarlar.guncelle"); }, ); /** */ // try { // await zamanlanmisGorevleriKur(); // } catch (e) { // print("$e Hataaaaaaaaaa"); // } /** */ // ayarlar = await SharedPreferences.getInstance(); // await ayarlar.reload(); // mesaiciAyarlar = MesaiciAyarlar(ayarlar); // await ayarlariOku(); if (Platform.isAndroid) await arkaPlanServisInit(); } Future standartAyarlariOku() async { String jsonAyar = await rootBundle.loadString("assets/core/ayarlar/2024-Ayarlar.FikoAyar"); // Dosyanın içeriğini oku // File file = File(filePath); // String fileContent = await file.readAsString(); // print(jsonAyar); // JSON verisini çözümle dynamic jsonList = json.decode(jsonAyar); // FikoYTService.servisMesaici.ayarlarModel?.value = ModelAyarlar.fromJson(jsonList); return ModelAyarlar.fromJson(jsonList); } // ayarlariKaydet() async { // // mesaiciAyarlar.ayarlariKaydet(); // } zamanlanmisGorevleriKur() async { // try { // await Workmanager().cancelAll(); // } catch (e) {} // Vardiya? vardiya = ayarlarModel?.value.calismaSuresiAyarlari.vardiyalar[ayarlarModel?.value.calismaSuresiAyarlari.aktifVardiya ?? 0]; // print("${DateTime.now().add(const Duration(seconds: 30)).difference(DateTime.now()).inMilliseconds} Aloooooooooooooooooooooooooooooooooo"); // Workmanager().registerOneOffTask( // "giris-takibi", // "giris-takibi", // initialDelay: vardiya!.gunAyarlari.bugununAyari().girisSaati!.difference(DateTime.now()), // backoffPolicy: BackoffPolicy.exponential, // existingWorkPolicy: ExistingWorkPolicy.append, // tag: "giris-takibi", // ); // Workmanager().registerOneOffTask( // "yedekleme", // "yedekleme", // // initialDelay: DateTime.now().add(const Duration(seconds: 30)).difference(DateTime.now()), // // constraints: Constraints(networkType: NetworkType.not_required), // backoffPolicy: BackoffPolicy.exponential, // // backoffPolicyDelay: const Duration(seconds: 1), // existingWorkPolicy: ExistingWorkPolicy.append, // tag: "yedekleme", // ); // return; } arkaPlanServisInit() async { await arkaPlanServis.configure( iosConfiguration: IosConfiguration(), androidConfiguration: AndroidConfiguration( autoStart: ayarlarModel!.value.uygulamaAyarlari.otomatikBaslat, autoStartOnBoot: ayarlarModel!.value.uygulamaAyarlari.baslangictaCalistir, onStart: onMesaiciServisStart, foregroundServiceType: AndroidForegroundType.specialUse, isForegroundMode: true, foregroundServiceNotificationId: 112233, notificationChannelId: "Arka Plan Bildirimi", 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"); // } }); arkaPlanServis.on("mesaici.servis.olay.sistem.mesaj").listen((event) { if (kDebugMode) { print(event?.entries); } }); if (ayarlarModel!.value.uygulamaAyarlari.otomatikBaslat) { arkaPlanServis.startService(); } } profilResmiSec() async { FilePickerResult? result = await FilePicker.platform.pickFiles( allowMultiple: false, type: FileType.image, lockParentWindow: true, ); if (result != null) { File storeImage = File(result.files.first.path!); // use getApplicationDocumentsDirectory() to get a directory inside the app String appDir; // final appDir = await getApplicationDocumentsDirectory(); if (Platform.isWindows) { appDir = (await getCustomDirectoryWindows("resimler")).path; } else if (Platform.isAndroid) { appDir = (await getCustomDirectoryAndroid("resimler")).path; } else { appDir = (await getCustomDirectoryAndroid("resimler")).path; } // get the image's directory // copy the image's whole directory to a new // profilResmiSil(); final File localImage = await storeImage.copy('$appDir${Platform.pathSeparator}profilResmi.jpg'); profilResmi.value = null; profilResmi.refresh(); await Future.delayed(const Duration(milliseconds: 1000)); profilResmi.value = localImage.readAsBytesSync(); profilResmi.refresh(); } else { // profilResmi.value = null; } } Future get profilResmiAl async { String appDir; // final appDir = await getApplicationDocumentsDirectory(); if (Platform.isWindows) { appDir = (await getCustomDirectoryWindows("resimler")).path; } else if (Platform.isAndroid) { appDir = (await getCustomDirectoryAndroid("resimler")).path; } else { appDir = (await getCustomDirectoryAndroid("resimler")).path; } return File('$appDir${Platform.pathSeparator}profilResmi.jpg'); } Future profilResmiSil({bool? clearCache = true}) async { final file = await profilResmiAl; try { if (await file.exists()) { await file.delete(); if (clearCache = true) { profilResmi.value = null; } // print('Dosya başarıyla silindi.'); } else { // print('Dosya bulunamadı.'); return false; } } catch (e) { // print('Dosya silinirken bir hata oluştu: $e'); return false; } return false; } /** * Hareketler Bölümü */ /** */ Rx aktifAy = DateTime.now().obs; simdikiAy() { aktifAy.value = DateTime.now(); aktifAy.refresh(); } sonrakiAy() { aktifAy.value = DateTime(aktifAy.value.year, aktifAy.value.month + 1); aktifAy.refresh(); } oncekiAy() { aktifAy.value = DateTime(aktifAy.value.year, aktifAy.value.month - 1); aktifAy.refresh(); } List alHareketlerSync() { return (isar!.modelHareketlers.where().filter().turuEqualTo(KartTuru.CALISMA_KARTI).calismaKarti((q) => q.tarihBetween(aktifAy.value.ayinIlkGunu(), aktifAy.value.ayinSonGunu())).sortByTarihDesc().findAllSync()); } Future> alHareketler() async { return (isar!.modelHareketlers.where().filter().turuEqualTo(KartTuru.CALISMA_KARTI).calismaKarti((q) => q.tarihBetween(aktifAy.value.ayinIlkGunu(), aktifAy.value.ayinSonGunu())).sortByTarihDesc().findAll()); } Stream> dinleHareketler() async* { yield* isar!.modelHareketlers.where().filter().turuEqualTo(KartTuru.CALISMA_KARTI).calismaKarti((q) => q.tarihBetween(aktifAy.value.ayinIlkGunu(), aktifAy.value.ayinSonGunu())).sortByTarihDesc().watch(); } } class AylikOzet { AylikOzet({required this.servis}); final FikoYTMesaiciService servis; late Duration normalCalismaSuresi; late Duration calismaGunuMesaiSuresi; late Duration dinlenmeGunuMesaiSuresi; late Duration haftaTatiliGunuMesaiSuresi; late Duration resmiTatilGunuMesaiSuresi; late Duration izinliGunSuresi; late Duration raporluSure; late Duration yillikIzinliGunSuresi; late Duration fazlaMesaiSuresi; late Duration toplamMesaiSuresi; late Duration toplamCalisilanSure; late double odenecekUcret; late double fazlaMesaiUcreti; late double ekUcretler; late double toplamKesinti; /** */ late double kumulatifMatrah; late double gelirVergisiMatrahi; late double kumulatifVergi; late double netOdenecekUcret; late double netFazlaMesaiUcreti; late double netEkUcretler; Future aktifAyhesapla() async { List liste = (await servis.isar?.modelHareketlers.where().filter().turuEqualTo(KartTuru.CALISMA_KARTI).calismaKarti((q) => q.tarihBetween(servis.aktifAy.value.ayinIlkGunu(), servis.aktifAy.value.ayinSonGunu())).calismaKartiProperty().findAll())!.toList(); // Maas? aktifMaas = servis.ayarlarModel?.value.maasParametreleri.buAy(); /** */ // kumulatifMatrah = 0.0; gelirVergisiMatrahi = 0.0; kumulatifVergi = 0.0; netOdenecekUcret = 0.0; netFazlaMesaiUcreti = 0.0; netEkUcretler = 0.0; /** */ normalCalismaSuresi = Duration.zero; calismaGunuMesaiSuresi = Duration.zero; dinlenmeGunuMesaiSuresi = Duration.zero; haftaTatiliGunuMesaiSuresi = Duration.zero; resmiTatilGunuMesaiSuresi = Duration.zero; izinliGunSuresi = Duration.zero; raporluSure = Duration.zero; yillikIzinliGunSuresi = Duration.zero; fazlaMesaiSuresi = Duration.zero; toplamMesaiSuresi = Duration.zero; toplamCalisilanSure = Duration.zero; odenecekUcret = 0.0; fazlaMesaiUcreti = 0.0; ekUcretler = 0.0; toplamKesinti = 0.0; // Set listeYil = (await servis.isar.modelHareketlers.where().filter().turuEqualTo(KartTuru.CALISMA_KARTI).calismaKarti((q) => q.tarihBetween(servis.aktifAy.value.yilinIlkGunu().ilkSaatler(), servis.aktifAy.value.ayinSonGunu().sonSaatler())).calismaKartiProperty().findAll()).toSet(); /** Günlük Olarak Hesaplmalar */ for (var i = 0; i < liste.length; i++) { CalismaKayitEmbedded item = liste[i]!; // await item.kumulatifMatrahGuncelle(); /** */ // item.kumulatifMatrah = 0; // for (var itm in listeYil) { // if (itm?.tarih?.formatla("dd.MM.yyyy EEEE") != item.tarih?.formatla("dd.MM.yyyy EEEE")) { // item.kumulatifMatrah += itm?.gelirVergisiMatrahi ?? 0.0; // } // } /** */ // await item.kumulatifMatrahGuncelle(); normalCalismaSuresi += item.normalMesai ?? Duration.zero; calismaGunuMesaiSuresi += item.gunTuru == GunTuru.CALISMA_GUNU ? item.fazlaMesai ?? Duration.zero : Duration.zero; dinlenmeGunuMesaiSuresi += item.gunTuru == GunTuru.DINLENME_GUNU ? item.fazlaMesai ?? Duration.zero : Duration.zero; haftaTatiliGunuMesaiSuresi += item.gunTuru == GunTuru.HAFTA_TATILI ? item.fazlaMesai ?? Duration.zero : Duration.zero; resmiTatilGunuMesaiSuresi += item.resmiTatil ? item.fazlaMesai ?? Duration.zero : Duration.zero; izinliGunSuresi += item.gunlukIzinli ? item.calismaSuresi ?? Duration.zero : Duration.zero; raporluSure += item.raporlu ? item.calismaSuresi ?? Duration.zero : Duration.zero; yillikIzinliGunSuresi += item.yillikIzinli ? item.calismaSuresi ?? Duration.zero : Duration.zero; fazlaMesaiSuresi += calismaGunuMesaiSuresi + dinlenmeGunuMesaiSuresi + haftaTatiliGunuMesaiSuresi + resmiTatilGunuMesaiSuresi; toplamCalisilanSure += (item.normalMesai ?? Duration.zero) + (calismaGunuMesaiSuresi + dinlenmeGunuMesaiSuresi + haftaTatiliGunuMesaiSuresi + resmiTatilGunuMesaiSuresi); odenecekUcret += item.brutToplam; fazlaMesaiUcreti += item.brutFazlaMesai; ekUcretler += item.kesintiToplam; toplamKesinti += 0; //item.toplamKesinti; } // ekUcretler += (aktifMaas?.ekOdemeler ?? []).fold(0, (sum, item) => (item.bruteEkle ?? true) == true ? (sum + (item.miktar ?? 0.0)) : sum); // odenecekUcret += ekUcretler; /** Aylık Olarak Hesaplamalar */ netOdenecekUcret = odenecekUcret; netFazlaMesaiUcreti = fazlaMesaiUcreti; netEkUcretler = ekUcretler; /** */ // AylikOzet snc = AylikOzet(normalMesaiSuresi: sncNormal, fazlaMesaiSuresi: sncFazla, toplamMesaiSuresi: sncToplam); return this; } }