import 'package:fikoyt_merkez/core/Extensions/fiko_tarih.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:isar/isar.dart'; import 'package:json_annotation/json_annotation.dart'; part 'model_ayarlar.g.dart'; @collection @JsonSerializable() class ModelAyarlar { ModelAyarlar(); Id id = Isar.autoIncrement; String? ismi; UygulamaAyarlari uygulamaAyarlari = UygulamaAyarlari(); BildirimAyarlari bildirimAyarlari = BildirimAyarlari(); HesapAyarlari hesapAyarlari = HesapAyarlari(); CalismaSuresiAyarlari calismaSuresiAyarlari = CalismaSuresiAyarlari(); ResmiTatilFazlaMesaiOranlari resmiTatilFazlaMesaiOranlari = ResmiTatilFazlaMesaiOranlari(); MaasParametreleri maasParametreleri = MaasParametreleri(); VergiAyarlari vergiAyarlari = VergiAyarlari(); PrimAyarlari primAyarlari = PrimAyarlari(); factory ModelAyarlar.fromJson(Map json) => _$ModelAyarlarFromJson(json); Map toJson() => _$ModelAyarlarToJson(this); } @embedded @JsonSerializable() class UygulamaAyarlari { UygulamaAyarlari(); bool otomatikBaslat = false; bool baslangictaCalistir = false; bool servisCalisiyor = false; bool ilkEkranAcilistaGoster = true; bool ilkEkraniHerZamanGoster = false; factory UygulamaAyarlari.fromJson(Map json) => _$UygulamaAyarlariFromJson(json); Map toJson() => _$UygulamaAyarlariToJson(this); } @embedded @JsonSerializable() class HesapAyarlari { HesapAyarlari(); String adSoyad = ""; String sirket = ""; String? slogan = "FikoYT İle Gelecek Bugünde"; String? goreviniz = ""; DateTime? iseGirisTarihi = null; factory HesapAyarlari.fromJson(Map json) => _$HesapAyarlariFromJson(json); Map toJson() => _$HesapAyarlariToJson(this); } @embedded @JsonSerializable() class BildirimAyarlari { BildirimAyarlari(); bool genelBildirimler = true; bool iseBaslamaBildirimleri = true; bool isiBitirmeBildirimleri = true; bool molaBaslangicBildirimleri = true; bool molaBitisBildirimleri = true; /** */ tumunuAc() { genelBildirimler = true; iseBaslamaBildirimleri = true; isiBitirmeBildirimleri = true; molaBaslangicBildirimleri = true; molaBitisBildirimleri = true; } tumunuKapat() { genelBildirimler = false; iseBaslamaBildirimleri = false; isiBitirmeBildirimleri = false; molaBaslangicBildirimleri = false; molaBitisBildirimleri = false; } /** */ factory BildirimAyarlari.fromJson(Map json) => _$BildirimAyarlariFromJson(json); Map toJson() => _$BildirimAyarlariToJson(this); } @embedded @JsonSerializable() class CalismaSuresiAyarlari { CalismaSuresiAyarlari(); int? aylikMaasGunu = 30; int? aylikCalismaSaatiInMilliseconds = Duration(hours: 270).inMilliseconds; @ignore Duration? get aylikCalismaSaati => aylikCalismaSaatiInMilliseconds != null ? Duration(milliseconds: aylikCalismaSaatiInMilliseconds!) : null; set aylikCalismaSaati(Duration? value) => aylikCalismaSaatiInMilliseconds = value?.inMilliseconds; int? aktifVardiya = 0; List vardiyalar = [Vardiya(ismi: "Sürekli Gündüz", aciklama: "Sadece Gündüz Çalışma.")]; factory CalismaSuresiAyarlari.fromJson(Map json) => _$CalismaSuresiAyarlariFromJson(json); Map toJson() => _$CalismaSuresiAyarlariToJson(this); } @embedded @JsonSerializable() class Vardiya { Vardiya({this.ismi, this.aciklama}); String? ismi = null; String? aciklama = null; Gunler gunAyarlari = Gunler(); factory Vardiya.fromJson(Map json) => _$VardiyaFromJson(json); Map toJson() => _$VardiyaToJson(this); } @embedded @JsonSerializable() class Gunler { Gunler(); GunAyari pazartesi = GunAyari(ismi: "Pazartesi", turu: GunTuru.CALISMA_GUNU); GunAyari sali = GunAyari(ismi: "Salı", turu: GunTuru.CALISMA_GUNU); GunAyari carsamba = GunAyari(ismi: "Çarşamba", turu: GunTuru.CALISMA_GUNU); GunAyari persembe = GunAyari(ismi: "Perşembe", turu: GunTuru.CALISMA_GUNU); GunAyari cuma = GunAyari(ismi: "Cuma", turu: GunTuru.CALISMA_GUNU); GunAyari cumartesi = GunAyari(ismi: "Cumartesi", turu: GunTuru.DINLENME_GUNU); GunAyari pazar = GunAyari(ismi: "Pazar", turu: GunTuru.HAFTA_TATILI); List toListe() { return [pazartesi, sali, carsamba, persembe, cuma, cumartesi, pazar]; } factory Gunler.fromJson(Map json) => _$GunlerFromJson(json); Map toJson() => _$GunlerToJson(this); } enum GunTuru { CALISMA_GUNU, DINLENME_GUNU, HAFTA_TATILI } @embedded @JsonSerializable() class GunAyari { GunAyari({this.ismi = "", this.turu = GunTuru.CALISMA_GUNU}); String ismi = ""; @enumerated GunTuru turu = GunTuru.CALISMA_GUNU; DateTime? girisSaati = null; // @ignore // TimeOfDay? get girisSaati => _stringToTimeOfDay(_girisSaati); // set girisSaati(TimeOfDay? value) => _girisSaati = _timeOfDayToString(value); DateTime? cikisSaati = null; // @ignore // TimeOfDay? get cikisSaati => _stringToTimeOfDay(_cikisSaati); // set cikisSaati(TimeOfDay? value) => _cikisSaati = _timeOfDayToString(value); int? girisToleransiInMicroSeconds = null; @ignore Duration? get girisToleransi => girisToleransiInMicroSeconds != null ? Duration(microseconds: girisToleransiInMicroSeconds!) : null; set girisToleransi(Duration? value) => girisToleransiInMicroSeconds = value?.inMicroseconds; int? cikisToleransiInMicroSeconds = null; @ignore Duration? get cikisToleransi => cikisToleransiInMicroSeconds != null ? Duration(microseconds: cikisToleransiInMicroSeconds!) : null; set cikisToleransi(Duration? value) => cikisToleransiInMicroSeconds = value?.inMicroseconds; int? calismaSuresiInMicroSeconds = null; @ignore Duration? get calismaSuresi => calismaSuresiInMicroSeconds != null ? Duration(microseconds: calismaSuresiInMicroSeconds!) : null; set calismaSuresi(Duration? value) => calismaSuresiInMicroSeconds = value?.inMicroseconds; List? molalar = List.empty(growable: true); double mesaiOrani = 50.0; factory GunAyari.fromJson(Map json) => _$GunAyariFromJson(json); Map toJson() => _$GunAyariToJson(this); } extension Molalar on List { @ignore Duration get toplamMola { int sonuc = 0; forEach((element) { sonuc += element.farkHesapla().inMicroseconds; }); return Duration(microseconds: sonuc); } } @embedded @JsonSerializable() class Mola { Mola({this.ismi, this.aciklama, this.bildirimGoster, this.otomatikGir, this.saattenDus}); String? ismi = null; String? aciklama = null; DateTime? girisSaati = DateTime(0, 0, 0, 0, 0, 0); DateTime? cikisSaati = DateTime(0, 0, 0, 0, 0, 0); bool? bildirimGoster; bool? otomatikGir; bool? saattenDus; Duration farkHesapla() { return cikisSaati?.difference(girisSaati!) ?? Duration.zero; } factory Mola.fromJson(Map json) => _$MolaFromJson(json); Map toJson() => _$MolaToJson(this); } @embedded @JsonSerializable() class ResmiTatil { ResmiTatil({this.ismi, this.aciklama}); String? ismi = null; String? aciklama = null; double mesaiOrani = 100.0; double dinlenmeGunuMesaiOrani = 100.0; double HaftaTatiliMesaiOrani = 150.0; bool herSeneTekrarlar = false; bool telafiSayilabilir = false; factory ResmiTatil.fromJson(Map json) => _$ResmiTatilFromJson(json); Map toJson() => _$ResmiTatilToJson(this); } @embedded @JsonSerializable() class ResmiTatilFazlaMesaiOranlari { ResmiTatilFazlaMesaiOranlari(); double? calismaGunuFazlaMesaiOrani = 50.0; double? dinlenmeGunuFazlaMesaiOrani = 50.0; double? haftaTatiliFazlaMesaiOrani = 100.0; factory ResmiTatilFazlaMesaiOranlari.fromJson(Map json) => _$ResmiTatilFazlaMesaiOranlariFromJson(json); Map toJson() => _$ResmiTatilFazlaMesaiOranlariToJson(this); } @embedded @JsonSerializable() class MaasParametreleri { MaasParametreleri(); double? brutMaas = 0.0; double? netMaas = 0.0; int? ikramiyeSayisi = 0; factory MaasParametreleri.fromJson(Map json) => _$MaasParametreleriFromJson(json); Map toJson() => _$MaasParametreleriToJson(this); } @embedded @JsonSerializable() class VergiAyarlari { VergiAyarlari(); double? damgaVergisiIstisnasi = 0.0; double? damgaVergisiOrani = 0.759; GelirVergisiAylikIstisnalar gelirVergisiAylikIstisnalar = GelirVergisiAylikIstisnalar(); List vergiDilimleri = [ GelirVergisiDilimi(ismi: "%15'lik Dilim", oran: 15.0, sinir: 110000.00), GelirVergisiDilimi(ismi: "%20'lik Dilim", oran: 20.0, sinir: 230000.00), GelirVergisiDilimi(ismi: "%27'lik Dilim", oran: 27.0, sinir: 580000.00), GelirVergisiDilimi(ismi: "%35'lik Dilim", oran: 35.0, sinir: 3000000.00), GelirVergisiDilimi(ismi: "%40'lik Dilim", oran: 40.0, sinir: double.infinity), ]; factory VergiAyarlari.fromJson(Map json) => _$VergiAyarlariFromJson(json); Map toJson() => _$VergiAyarlariToJson(this); } @embedded @JsonSerializable() class GelirVergisiAylikIstisnalar { GelirVergisiAylikIstisnalar(); GelirVergisiAylikIstisnasi ocak = GelirVergisiAylikIstisnasi(ismi: "Ocak"); GelirVergisiAylikIstisnasi subat = GelirVergisiAylikIstisnasi(ismi: "Şubat"); GelirVergisiAylikIstisnasi mart = GelirVergisiAylikIstisnasi(ismi: "Mart"); GelirVergisiAylikIstisnasi nisan = GelirVergisiAylikIstisnasi(ismi: "Nisan"); GelirVergisiAylikIstisnasi mayis = GelirVergisiAylikIstisnasi(ismi: "Mayıs"); GelirVergisiAylikIstisnasi haziran = GelirVergisiAylikIstisnasi(ismi: "Haziran"); GelirVergisiAylikIstisnasi temmuz = GelirVergisiAylikIstisnasi(ismi: "Temmuz"); GelirVergisiAylikIstisnasi agustos = GelirVergisiAylikIstisnasi(ismi: "Ağustos"); GelirVergisiAylikIstisnasi eylul = GelirVergisiAylikIstisnasi(ismi: "Eylül"); GelirVergisiAylikIstisnasi ekim = GelirVergisiAylikIstisnasi(ismi: "Ekim"); GelirVergisiAylikIstisnasi kasim = GelirVergisiAylikIstisnasi(ismi: "Kasım"); GelirVergisiAylikIstisnasi aralik = GelirVergisiAylikIstisnasi(ismi: "Aralık"); List toListe() { return [ocak, subat, mart, nisan, mayis, haziran, temmuz, agustos, eylul, ekim, kasim, aralik]; } factory GelirVergisiAylikIstisnalar.fromJson(Map json) => _$GelirVergisiAylikIstisnalarFromJson(json); Map toJson() => _$GelirVergisiAylikIstisnalarToJson(this); } @embedded @JsonSerializable() class GelirVergisiAylikIstisnasi { String? ismi = null; double istisna = 0.0; GelirVergisiAylikIstisnasi({this.ismi = ""}); factory GelirVergisiAylikIstisnasi.fromJson(Map json) => _$GelirVergisiAylikIstisnasiFromJson(json); Map toJson() => _$GelirVergisiAylikIstisnasiToJson(this); } @embedded @JsonSerializable() class GelirVergisiDilimi { String? ismi = null; double? oran = 0.0; double? sinir = 0.0; GelirVergisiDilimi({this.ismi = "", this.oran = 0, this.sinir = 0}); factory GelirVergisiDilimi.fromJson(Map json) => _$GelirVergisiDilimiFromJson(json); Map toJson() => _$GelirVergisiDilimiToJson(this); } @embedded @JsonSerializable() class PrimAyarlari { PrimAyarlari(); double? sgkPrimiIstisna = 0.0; double? sgkPrimiOrani = 14.0; double? issizlikPrimiIstisna = 0.0; double? issizlikPrimiOrani = 1.0; factory PrimAyarlari.fromJson(Map json) => _$PrimAyarlariFromJson(json); Map toJson() => _$PrimAyarlariToJson(this); } /** AYRAÇ: */ String? _timeOfDayToString(TimeOfDay? time) { if (time == null) return null; return '${time.hour.toString().padLeft(2, '0')}:${time.minute.toString().padLeft(2, '0')}'; } TimeOfDay? _stringToTimeOfDay(String? timeString) { if (timeString == null) return null; final parts = timeString.split(':'); if (parts.length != 2) return null; final hour = int.tryParse(parts[0]); final minute = int.tryParse(parts[1]); if (hour == null || minute == null) return null; return TimeOfDay(hour: hour, minute: minute); }