import 'package:fikoyt_mesaici/apps/mesaici/model/calisma_kayit.dart'; import 'package:fikoyt_mesaici/core/Extensions/fiko_tarih.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:get/state_manager.dart'; import 'package:shared_preferences/shared_preferences.dart'; class MesaiciAyarlar { SharedPreferences ayarlar; MesaiciAyarlar(this.ayarlar); late UygulamaAyarlari uygulamaAyarlari = UygulamaAyarlari(ayarlar); /** Bildirim Ayarları */ late BildirimAyarlari bildirimAyarlari = BildirimAyarlari(ayarlar); /** */ late HesapAyarlari hesapAyarlari = HesapAyarlari(ayarlar); /** */ late CalismaSuresiAyarlari calismaSuresiAyarlari = CalismaSuresiAyarlari(ayarlar); /** */ late ResmiTatilFazlaMesaiOranlari resmiTatilFazlaMesaiOranlari = ResmiTatilFazlaMesaiOranlari(ayarlar); /** */ late MaasParametreleri maasParametreleri = MaasParametreleri(ayarlar); /** */ late VergiAyarlari vergiAyarlari = VergiAyarlari(ayarlar); /** */ late PrimAyarlari primAyarlari = PrimAyarlari(ayarlar); ayarlariOku() async { // mesaiciAyarlar.hesapAyarlari.adSoyad.value = // ayarlar.getString("mesaici.ayarlar.adSoyad") ?? ""; // mesaiciAyarlar.hesapAyarlari.sirket.value = // ayarlar.getString("mesaici.ayarlar.sirket") ?? ""; // mesaiciAyarlar.hesapAyarlari.goreviniz.value = // ayarlar.getString("mesaici.ayarlar.goreviniz") ?? ""; // mesaiciAyarlar.hesapAyarlari.iseGirisTarihi.value = // ayarlar.getString("mesaici.ayarlar.iseGirisTarihi") ?? ""; /** */ hesapAyarlari.ayarlariOku(); uygulamaAyarlari.ayarlariOku(); bildirimAyarlari.ayarlariOku(); /** */ // genelBildirimler.value = // ayarlar.getBool("mesaici.ayarlar.genelBildirimler") ?? true; // iseBaslamaBildirimleri.value = // ayarlar.getBool("mesaici.ayarlar.iseBaslamaBildirimleri") ?? true; // isiBitirmeBildirimleri.value = // ayarlar.getBool("mesaici.ayarlar.isiBitirmeBildirimleri") ?? true; // molaBaslangicBildirimleri.value = // ayarlar.getBool("mesaici.ayarlar.molaBaslangicBildirimleri") ?? true; // molaBitisBildirimleri.value = // ayarlar.getBool("mesaici.ayarlar.molaBitisBildirimleri") ?? true; // /** */ // mesaiciAyarlar.calismaSuresiAyarlari.aylikMaasGunu.value = // ayarlar.getInt("mesaici.ayarlar.aylikMaasGunu") ?? 30; // mesaiciAyarlar.calismaSuresiAyarlari.aylikCalismaSaati.value = // ayarlar.getDouble("mesaici.ayarlar.aylikCalismaSaati") ?? 270.0; } ayarlariKaydet() async { // ayarlar.setString( // "mesaici.ayarlar.adSoyad", mesaiciAyarlar.hesapAyarlari.adSoyad.value); // ayarlar.setString( // "mesaici.ayarlar.sirket", mesaiciAyarlar.hesapAyarlari.sirket.value); // ayarlar.setString("mesaici.ayarlar.goreviniz", // mesaiciAyarlar.hesapAyarlari.goreviniz.value); // ayarlar.setString("mesaici.ayarlar.iseGirisTarihi", // mesaiciAyarlar.hesapAyarlari.iseGirisTarihi.value); /** */ hesapAyarlari.ayarlariKaydet(); uygulamaAyarlari.ayarlariKaydet(); bildirimAyarlari.ayarlariKaydet(); /** */ // ayarlar.setBool("mesaici.ayarlar.genelBildirimler", // genelBildirimler.value); // ayarlar.setBool("mesaici.ayarlar.iseBaslamaBildirimleri", // iseBaslamaBildirimleri.value); // ayarlar.setBool("mesaici.ayarlar.isiBitirmeBildirimleri", // isiBitirmeBildirimleri.value); // ayarlar.setBool("mesaici.ayarlar.molaBaslangicBildirimleri", // molaBaslangicBildirimleri.value); // ayarlar.setBool("mesaici.ayarlar.molaBitisBildirimleri", // molaBitisBildirimleri.value); // /** */ // ayarlar.setInt("mesaici.ayarlar.aylikMaasGunu", // mesaiciAyarlar.calismaSuresiAyarlari.aylikMaasGunu.value); // ayarlar.setDouble("mesaici.ayarlar.aylikCalismaSaati", // mesaiciAyarlar.calismaSuresiAyarlari.aylikCalismaSaati.value); } } class UygulamaAyarlari { SharedPreferences ayarlar; UygulamaAyarlari(this.ayarlar); final RxBool otomatikBaslat = false.obs; final RxBool baslangictaCalistir = false.obs; final RxBool servisCalisiyor = false.obs; final RxBool ilkEkranAcilistaGoster = true.obs; final RxBool ilkEkraniHerZamanGoster = false.obs; ayarlariOku() async { ilkEkranAcilistaGoster.value = ayarlar.getBool("mesaici.ayarlar.ilkEkranAcilistaGoster") ?? true; ilkEkraniHerZamanGoster.value = ayarlar.getBool("mesaici.ayarlar.ilkEkraniHerZamanGoster") ?? false; } ayarlariKaydet() async { ayarlar.setBool("mesaici.ayarlar.ilkEkranAcilistaGoster", ilkEkranAcilistaGoster.value); ayarlar.setBool("mesaici.ayarlar.ilkEkraniHerZamanGoster", ilkEkraniHerZamanGoster.value); } } class HesapAyarlari { SharedPreferences ayarlar; HesapAyarlari(this.ayarlar); final RxString adSoyad = "👩🏻‍🤝‍👨🏽 İsim Tanımlayın".obs; final RxString sirket = "🏭 Şirket Tanımlayın".obs; final RxString slogan = "FikoYT İle Gelecek Bugünde".obs; final RxString goreviniz = "".obs; final Rx iseGirisTarihi = DateTime(0).formatla("dd MMMM yyyy EEEE").obs; ayarlariOku() async { adSoyad.value = ayarlar.getString("mesaici.ayarlar.adSoyad") ?? ""; sirket.value = ayarlar.getString("mesaici.ayarlar.sirket") ?? ""; goreviniz.value = ayarlar.getString("mesaici.ayarlar.goreviniz") ?? ""; iseGirisTarihi.value = ayarlar.getString("mesaici.ayarlar.iseGirisTarihi") ?? ""; } ayarlariKaydet() async { ayarlar.setString("mesaici.ayarlar.adSoyad", adSoyad.value); ayarlar.setString("mesaici.ayarlar.sirket", sirket.value); ayarlar.setString("mesaici.ayarlar.goreviniz", goreviniz.value); ayarlar.setString("mesaici.ayarlar.iseGirisTarihi", iseGirisTarihi.value); } } class BildirimAyarlari { SharedPreferences ayarlar; BildirimAyarlari(this.ayarlar); final RxBool genelBildirimler = true.obs; final RxBool iseBaslamaBildirimleri = true.obs; final RxBool isiBitirmeBildirimleri = true.obs; final RxBool molaBaslangicBildirimleri = true.obs; final RxBool molaBitisBildirimleri = true.obs; ayarlariOku() async { genelBildirimler.value = ayarlar.getBool("mesaici.ayarlar.genelBildirimler") ?? true; iseBaslamaBildirimleri.value = ayarlar.getBool("mesaici.ayarlar.iseBaslamaBildirimleri") ?? true; isiBitirmeBildirimleri.value = ayarlar.getBool("mesaici.ayarlar.isiBitirmeBildirimleri") ?? true; molaBaslangicBildirimleri.value = ayarlar.getBool("mesaici.ayarlar.molaBaslangicBildirimleri") ?? true; molaBitisBildirimleri.value = ayarlar.getBool("mesaici.ayarlar.molaBitisBildirimleri") ?? true; } ayarlariKaydet() async { ayarlar.setBool("mesaici.ayarlar.genelBildirimler", genelBildirimler.value); ayarlar.setBool("mesaici.ayarlar.iseBaslamaBildirimleri", iseBaslamaBildirimleri.value); ayarlar.setBool("mesaici.ayarlar.isiBitirmeBildirimleri", isiBitirmeBildirimleri.value); ayarlar.setBool("mesaici.ayarlar.molaBaslangicBildirimleri", molaBaslangicBildirimleri.value); ayarlar.setBool("mesaici.ayarlar.molaBitisBildirimleri", molaBitisBildirimleri.value); } } class CalismaSuresiAyarlari { SharedPreferences ayarlar; CalismaSuresiAyarlari(this.ayarlar); final RxInt aylikMaasGunu = 30.obs; final RxDouble aylikCalismaSaati = 270.0.obs; /** */ late GunAyarlari gunAyarlari = GunAyarlari(ayarlar); } class GunAyarlari { SharedPreferences ayarlar; GunAyarlari(this.ayarlar); GunAyari1 pazartesi = GunAyari1("Pazartesi"); GunAyari1 sali = GunAyari1("Salı"); GunAyari1 carsamba = GunAyari1("Çarşamba"); GunAyari1 persembe = GunAyari1("Perşembe"); GunAyari1 cuma = GunAyari1("Cuma"); GunAyari1 cumartesi = GunAyari1("Cumartesi"); GunAyari1 pazar = GunAyari1("Pazar"); List toListe() { return [pazartesi, sali, carsamba, persembe, cuma, cumartesi, pazar]; } } class GunAyari1 { String ismi = ""; Rx turu = GunTuru.CALISMA_GUNU.obs; Rx girisSaati = const TimeOfDay(hour: 7, minute: 30).obs; // DateTime(0).formatla("dd.MM.yyyy HH:mm:ss").obs; Rx cikisSaati = const TimeOfDay(hour: 17, minute: 30).obs; RxInt girisToleransi = 0.obs; RxInt cikisToleransi = 0.obs; RxDouble calismaSuresi = 0.0.obs; RxList molalar = [].obs; RxDouble mesaiOrani = 50.0.obs; GunAyari1(this.ismi); } extension Molalar on List { Duration get toplamMola { int sonuc = 0; forEach((element) { sonuc += element.farkHesapla().inMicroseconds; }); return Duration(microseconds: sonuc); } } class Vardiya2 { RxString ismi = "1. Çay Molası".obs; RxString aciklama = "İlk Çay Molası".obs; Rx girisSaati = DateTime(0, 0, 0, 11, 30, 0).obs; Rx cikisSaati = DateTime(0, 0, 0, 11, 40, 0).obs; RxBool saattenDuser = true.obs; RxBool bildirimGoster = false.obs; RxBool otomatikGir = true.obs; Duration farkHesapla() { return cikisSaati.value.difference(girisSaati.value); } } extension Vardiyalar on List { bool get toplamMola { return false; } } class Vardiya1 { SharedPreferences ayarlar; Vardiya1(this.ayarlar); RxString ismi = "1. Çay Molası".obs; RxString aciklama = "İlk Çay Molası".obs; late GunAyarlari gunler = GunAyarlari(ayarlar); } class ResmiTatilFazlaMesaiOranlari { SharedPreferences ayarlar; ResmiTatilFazlaMesaiOranlari(this.ayarlar); final RxDouble calismaGunuFazlaMesaiOrani = 50.0.obs; final RxDouble dinlenmeGunuFazlaMesaiOrani = 50.0.obs; final RxDouble haftaTatiliFazlaMesaiOrani = 100.0.obs; } class MaasParametreleri { SharedPreferences ayarlar; MaasParametreleri(this.ayarlar); RxDouble brutMaas = 0.0.obs; RxDouble netMaas = 0.0.obs; RxInt ikramiyeSayisi = 0.obs; } class VergiAyarlari { SharedPreferences ayarlar; VergiAyarlari(this.ayarlar); RxDouble damgaVergisiIstisnasi = 0.0.obs; RxDouble damgaVergisiOrani = 0.759.obs; late GelirVergisiAylikIstisnalar gelirVergisiAylikIstisnalar = GelirVergisiAylikIstisnalar(ayarlar); RxList vergiDilimleri = [ GelirVergisiDilimi("%15'lik Dilim", 15.0.obs, 110000.00.obs), GelirVergisiDilimi("%20'lik Dilim", 20.0.obs, 230000.00.obs), GelirVergisiDilimi("%27'lik Dilim", 27.0.obs, 580000.00.obs), GelirVergisiDilimi("%35'lik Dilim", 35.0.obs, 3000000.00.obs), GelirVergisiDilimi("%40'lik Dilim", 40.0.obs, double.infinity.obs), ].obs; } class GelirVergisiAylikIstisnalar { SharedPreferences ayarlar; GelirVergisiAylikIstisnalar(this.ayarlar); GelirVergisiAylikIstisnasi ocak = GelirVergisiAylikIstisnasi("Ocak"); GelirVergisiAylikIstisnasi subat = GelirVergisiAylikIstisnasi("Şubat"); GelirVergisiAylikIstisnasi mart = GelirVergisiAylikIstisnasi("Mart"); GelirVergisiAylikIstisnasi nisan = GelirVergisiAylikIstisnasi("Nisan"); GelirVergisiAylikIstisnasi mayis = GelirVergisiAylikIstisnasi("Mayıs"); GelirVergisiAylikIstisnasi haziran = GelirVergisiAylikIstisnasi("Haziran"); GelirVergisiAylikIstisnasi temmuz = GelirVergisiAylikIstisnasi("Temmuz"); GelirVergisiAylikIstisnasi agustos = GelirVergisiAylikIstisnasi("Ağustos"); GelirVergisiAylikIstisnasi eylul = GelirVergisiAylikIstisnasi("Eylül"); GelirVergisiAylikIstisnasi ekim = GelirVergisiAylikIstisnasi("Ekim"); GelirVergisiAylikIstisnasi kasim = GelirVergisiAylikIstisnasi("Kasım"); GelirVergisiAylikIstisnasi aralik = GelirVergisiAylikIstisnasi("Aralık"); List toListe() { return [ocak, subat, mart, nisan, mayis, haziran, temmuz, agustos, eylul, ekim, kasim, aralik]; } } class GelirVergisiAylikIstisnasi { String ismi = ""; RxDouble istisna = 0.0.obs; GelirVergisiAylikIstisnasi(this.ismi); } class GelirVergisiDilimi { String ismi = ""; RxDouble oran = 0.0.obs; RxDouble sinir = 0.0.obs; GelirVergisiDilimi(this.ismi, this.oran, this.sinir); } class PrimAyarlari { SharedPreferences ayarlar; PrimAyarlari(this.ayarlar); RxDouble sgkPrimiIstisna = 0.0.obs; RxDouble sgkPrimiOrani = 14.0.obs; RxDouble issizlikPrimiIstisna = 0.0.obs; RxDouble issizlikPrimiOrani = 1.0.obs; }