// ignore_for_file: library_private_types_in_public_api import 'package:fikoyt_mesaici/apps/mesaici/base_page_mesaici_view.dart'; import 'package:fikoyt_mesaici/apps/mesaici/model/alt_kart/alt_kart.dart'; import 'package:fikoyt_mesaici/apps/mesaici/model/model_hareketler.dart'; import 'package:fikoyt_mesaici/apps/mesaici/pages/hareketler/hareket_kart/hareket_kart.dart'; import 'package:fikoyt_mesaici/apps/mesaici/widgets/kullanici_bilgi_navigasyon/kullanici_bilgi_navigasyon.dart'; import 'package:fikoyt_mesaici/apps/mesaici/widgets/uygulama_baslik/uygulama_baslik.dart'; import 'package:fikoyt_mesaici/core/fikoyt.service.dart'; import 'package:fikoyt_mesaici/core/interface/fiko_dialog_ayarlari.dart'; import 'package:fikoyt_mesaici/core/widgets/base_page/base_page_view.dart'; import 'package:fikoyt_mesaici/core/widgets/draggable_home.dart'; import 'package:fikoyt_mesaici/core/widgets/fiko_ui/fiko_button/fiko_button.dart'; import 'package:fikoyt_mesaici/core/widgets/fikoyt_elastic/fikoyt_elastic.dart'; import 'package:fikoyt_mesaici/core/widgets/yazi_kutulari/yazi_kutulari.dart'; import 'package:fikoyt_mesaici/theme.dart'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; import 'package:get/get.dart'; import 'package:isar/isar.dart'; import 'package:vrouter/vrouter.dart'; class PageMesaiciAltHareketlerLogic extends GetxController { BasePageLogic basePageLogic = Get.put(BasePageLogic()); BasePageMesaiciLogic basePageMesaiciLogic = Get.put(BasePageMesaiciLogic()); //---> // final FikoYTMesaiciService FikoYTService.servisMesaici = Get.put(FikoYTMesaiciService()); final FikoYTService servisFikoYT = FikoYTService(); //---> Rx aktifKartId = Rx(null); Rx aktifHareket = Rx(null); Future alAktifHareket() async { if (aktifKartId.value == null) return null; aktifHareket.value = await FikoYTService.servisMesaici.isar?.modelHareketlers.where().filter().idEqualTo(int.tryParse(aktifKartId.value) ?? -1).findFirst(); await aktifHareket.value?.altKartlar.load(); aktifHareket.refresh(); return aktifHareket.value; } Future aciklamaEkle(BuildContext context, AltKart altKart) async { return FikoYTService.dialogGoster( context, SizedBox( width: 250, child: FikoAciklamaKutusu( baslik: "Açıklama Metni", radius: 5.0, degeri: altKart.aciklama, yaziBoyutu: 12.0, degisti: (value) { altKart.aciklama = value; }, ), ), FikoDialogAyarlari(baslik: "Açıklama Ekle", baslikSimge: "➕", altButonlar: [ FikoButton1( textColor: Colors.green, textStrokeColor: Colors.transparent, text: "Ekle", edgePadding: const EdgeInsets.symmetric(horizontal: 5, vertical: 0), onPressed: (() { Navigator.pop(context, altKart); }), ), const Spacer(), FikoButton1( textColor: Colors.red, textStrokeColor: Colors.transparent, text: "Kapat", edgePadding: const EdgeInsets.symmetric(horizontal: 5, vertical: 0), onPressed: (() { Navigator.pop( context, ); }), ), ]), ); } } class PageMesaiciAltHareketler extends StatefulWidget { PageMesaiciAltHareketler({super.key, required this.kartId}); dynamic kartId; @override _PageMesaiciAltHareketlerState createState() => _PageMesaiciAltHareketlerState(); } class _PageMesaiciAltHareketlerState extends State { PageMesaiciAltHareketlerLogic logic = Get.put(PageMesaiciAltHareketlerLogic()); @override void initState() { SchedulerBinding.instance.addPostFrameCallback((_) { logic.aktifKartId.value = widget.kartId; logic.aktifKartId.refresh(); logic.basePageLogic.subTitle.value = "📝 Kart Hareketleri"; }); // widget.kartId = DateTime.now().formatla("dd.MM.yyyy EEEE"); super.initState(); } @override void dispose() { Get.delete(); super.dispose(); } @override Widget build(BuildContext context) { ScreenSizeTypes screenType = FikoYTElastic.getScreenSizeType(context); [ // ScreenSizeTypes.small, ScreenSizeTypes.mini, ScreenSizeTypes.extraMini ].contains(screenType); return DraggableHome( leading: const UygulamaBaslikSol(), title: UygulamaBaslikOrta(), actions: const [ UygulamaBaslikSag(), ], headerWidget: PageView( children: [ Container( color: Colors.transparent, //Colors.orange, height: 300 - kToolbarHeight - 10, margin: const EdgeInsets.only(top: kToolbarHeight, bottom: 10, right: 10, left: 10), child: KullaniciBilgiNavigasyon( simge: const Text( "📝", style: TextStyle( fontSize: 54, ), ), ), ), ], ), body: [ Obx( () => FutureBuilder( future: logic.alAktifHareket(), builder: (context, snapshot) => KartHareket(kayit: logic.aktifHareket), ), ), /** Ek Ödemeler */ Padding( padding: const EdgeInsets.symmetric(horizontal: 10), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ const Expanded( child: Divider( indent: 0.0, endIndent: 10.0, thickness: 1, ), ), FikoButton1( text: '➕ Hareketler', textStrokeColor: Colors.transparent, textColor: Colors.black, ), const Expanded( child: Divider( indent: 10.0, endIndent: 0.0, thickness: 1, ), ), FikoButton1( text: "➕", onPressed: () async { AltKart altKart1 = AltKart(); logic.aciklamaEkle(context, altKart1).then( (value) async { if (value == null) return; /** */ await FikoYTService.servisMesaici.isar?.writeTxn( () async { ModelHareketler altHrkt = ModelHareketler()..turu = KartTuru.ALT_KART; altHrkt.tarih = DateTime.now(); AltKart altKart = AltKart(); altKart.aciklama = altKart1.aciklama ?? ""; altHrkt.altKart = altKart; altKart.ustKartid = logic.aktifHareket.value?.id; // logic.aktifHareket.value?.altKartlar.clear(); logic.aktifHareket.value?.altKartlar.add(altHrkt); // await isar.writeTxn(() async { await FikoYTService.servisMesaici.isar?.modelHareketlers.put(altHrkt); altHrkt.ustKart.value = logic.aktifHareket.value; await altHrkt.ustKart.save(); await logic.aktifHareket.value?.altKartlar.save(); await logic.alAktifHareket(); logic.aktifHareket.refresh(); }, ); // }); }, ); }, ), ], ), ), /** */ Obx( () => Column( children: [ AnimatedSwitcher( duration: const Duration(milliseconds: 1000), layoutBuilder: (Widget? currentChild, List previousChildren) { return Stack( alignment: Alignment.topCenter, children: [ ...previousChildren, if (currentChild != null) currentChild, ], ); }, // visible: logic.aktifHareket.value != null ? logic.aktifHareket.value!.altKartlar.isEmpty : false, child: (logic.aktifHareket.value != null && logic.aktifHareket.value!.altKartlar.isEmpty) ? Column( key: const ValueKey("Kayıt Yok Listesi"), children: [ Padding( padding: const EdgeInsets.only(left: 24, right: 24, top: 15, bottom: 24), child: Stack( clipBehavior: Clip.none, children: [ Padding( padding: const EdgeInsets.only(top: 20), child: Container( decoration: BoxDecoration( color: Colors.blueAccent.shade100.withOpacity(0.2), borderRadius: const BorderRadius.only(topLeft: Radius.circular(8.0), bottomLeft: Radius.circular(8.0), bottomRight: Radius.circular(8.0), topRight: Radius.circular(8.0)), border: Border.all(color: Colors.blueAccent), boxShadow: [ BoxShadow( color: Colors.grey.withOpacity(0.2), // offset: const Offset(0.9, 0.9), offset: const Offset(3, 3), spreadRadius: 5, blurRadius: 10.0, ), ], ), child: Padding( padding: const EdgeInsets.only(left: 46, bottom: 12, right: 16, top: 12), child: Column( children: [ Text( 'Bu Güne Ait Herhangi Bir Not / Hareket Bulunamadı.İsterseniz Ekleyebilirsiniz.', textAlign: TextAlign.left, style: TextStyle( fontWeight: FontWeight.w500, fontSize: 12, letterSpacing: 0.0, color: Colors.blueAccent.shade700, ), ), Align( alignment: Alignment.centerRight, child: TextButton( // icon: const Text("💡"), child: const Text( "📜 Hemen Ekle", style: TextStyle( color: Colors.blue, fontWeight: FontWeight.bold, fontSize: 12, ), ), onPressed: () async { AltKart altKart1 = AltKart(); logic.aciklamaEkle(context, altKart1).then( (value) async { if (value == null) return; /** */ await FikoYTService.servisMesaici.isar?.writeTxn( () async { ModelHareketler altHrkt = ModelHareketler()..turu = KartTuru.ALT_KART; altHrkt.tarih = DateTime.now(); AltKart altKart = AltKart(); altKart.aciklama = altKart1.aciklama ?? ""; altHrkt.altKart = altKart; altKart.ustKartid = logic.aktifHareket.value?.id; // logic.aktifHareket.value?.altKartlar.clear(); logic.aktifHareket.value?.altKartlar.add(altHrkt); // await isar.writeTxn(() async { await FikoYTService.servisMesaici.isar?.modelHareketlers.put(altHrkt); altHrkt.ustKart.value = logic.aktifHareket.value; await altHrkt.ustKart.save(); await logic.aktifHareket.value?.altKartlar.save(); await logic.alAktifHareket(); logic.aktifHareket.refresh(); }, ); // }); }, ); }, ), ) ], ), ), ), ), const Positioned( top: -10, left: 0, child: SizedBox( width: 80, height: 80, child: Text( "📝", style: TextStyle(fontSize: 40), ), ), ) ], ), ), ], ) : Column( key: const ValueKey("Alt Kart Listesi"), children: [ const SizedBox( height: 5, ), /** */ ListView.builder( itemCount: logic.aktifHareket.value?.altKartlar.length ?? 0, physics: const NeverScrollableScrollPhysics(), shrinkWrap: true, reverse: true, itemBuilder: (context, index) => logic.aktifHareket.value?.altKartlar != null ? KartHareket(kayit: logic.aktifHareket.value?.altKartlar.elementAtOrNull(index).obs) : const SizedBox.shrink(), ), ], ), ), /** */ ], ), ), // Container( // margin: const EdgeInsets.only(top: 10, bottom: 10, right: 10, left: 10), // child: AktifKart( // kayit: CalismaKayit.fromEmbedded(aktifKart: logic.FikoYTService.servisMesaici.isar?.modelHareketlers.where().filter().calismaKarti((q) => q.tarihBetween(widget.kartId.ilkSaatler(), widget.kartId.sonSaatler())).calismaKartiProperty().findFirstSync()!).obs, // ), // ), ], headerExpandedHeight: 315, // stretchMaxHeight: 100, fullyStretchable: false, backgroundColor: FikoTheme.of(context).uygulamaArkaPlanRenk, //Colors.grey.shade200, centerTitle: true, alwaysShowLeadingAndAction: true, appBarColor: Colors.blue.shade500, alwaysShowTitle: true, curvedBodyRadius: 0, onStretchTrigger: () async { context.vRouter.to("/"); }, ); } }