// ignore_for_file: library_prefixes import 'dart:async'; import 'dart:convert'; import 'dart:io'; import 'package:animate_do/animate_do.dart'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:dio/dio.dart'; import 'package:fikoyt_merkez/core/Extensions/fiko_tarih.dart'; import 'package:fikoyt_merkez/core/fiko_app.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_animate/flutter_animate.dart'; import 'package:get/get.dart' hide FormData; import 'package:get_storage/get_storage.dart'; // import 'package:mongo_dart/mongo_dart.dart' as MONGO; import 'package:platform_device_id/platform_device_id.dart'; // import 'package:platform_device_id/platform_device_id.dart'; // import 'package:socket_io_client/socket_io_client.dart' as IO; import 'fiko_istek.dart'; import 'fikoyt.aktif_kullanici.dart'; import 'interface/fiko_dialog_ayarlari.dart'; import 'widgets/base_page/base_page_view.dart'; import 'widgets/dakika_secici/duration_picker.dart'; class FikoYTService { static final GetStorage ayarlar = GetStorage("ayarlar"); static AnimationController? animationController; // Rx? activeUser; static String? uuid; static dynamic sistemBilgiler; static AktifKullanici aktifKullanici = AktifKullanici(); // static IO.Socket socket = IO.io( // 'https://fikoyt.com:8000', // IO.OptionBuilder() // .setTransports(['websocket']) // .enableReconnection() // .enableAutoConnect() // for Flutter or Dart VM // // .disableAutoConnect() // disable auto-connection // // .setExtraHeaders({'foo': 'bar'}) // optional // .build()); static sayfayaGit(Widget sayfa, dynamic mounted) async { BasePageLogic bpLogic = Get.put(BasePageLogic()); bpLogic.animationController?.reverse().then((data) { if (!mounted) { return; } bpLogic.children = [ sayfa, ]; bpLogic.topBarOpacity.value = 0; bpLogic.update(); }); } // static MONGO.Db mongo = // MONGO.Db("mongodb://fikri007:FikoYT1299@fikoyt.com:8000/fikoyt"); Future init() async { await GetStorage.init(); // if (!kIsWeb) { // if (!kDebugMode) { // FikoYTService.uuid = await PlatformDeviceId.getDeviceId; // } else { // if (Platform.isAndroid) { // FikoYTService.uuid = await PlatformDeviceId.getDeviceId; //"Debug"; // } else if (Platform.isWindows) { // FikoYTService.uuid = "Debug"; // } // } // } // socket.connect(); // socket.onConnectError((data) => print(data)); /** */ DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); FikoYTService.sistemBilgiler = (await deviceInfo.deviceInfo).data; FikoYTService.sistemBilgiler.keys.forEach((e) { FikoYTService.sistemBilgiler[e] = FikoYTService.sistemBilgiler[e].toString(); }); dynamic cihaz = await FikoYTService.ayarlar.read("cihaz"); /** */ if (cihaz != null) { cihaz["uuid"] = FikoYTService.uuid; } else { cihaz = {"ismi": "Uygulama", "uuid": FikoYTService.uuid, "sistem_bilgiler": FikoYTService.sistemBilgiler}; } var formData = FormData(); formData.fields.add( MapEntry( "req_body", jsonEncode(cihaz).toString(), ), ); // Completer bekle = Completer.sync(); // istek_yap(komut: "FikoYT.nt.cihazlar.bul", parametreler: formData) // .listen((sonuc) async { // if (sonuc.turu == IstekOlayTuru.Cevaplandi) { // if (sonuc.sonuc != null) { // // print(sonuc.sonuc); // await FikoYTService.ayarlar.write("cihaz", sonuc.sonuc); // await FikoYTService.ayarlar.save(); // bekle.complete(); // } // } // }).onError((hata) async { // // print(hata.toString()); // bekle.complete(); // }); // await bekle.future; // db.createUser({ // user: "fikri007", // pwd: "FikoYT1299", // roles: [ { role: "userAdminAnyDatabase", db: "root" } ] // }) /** */ // DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); /** */ // await FikoYTService.mongo.open(); // if (kDebugMode) { // print(await FikoYTService.mongo.collection("hareketler").findOne()); // } // await FikoYTService.mongo.close(); /** */ return this; } static String dosyaBoyutu(dynamic boyut, [int yuvarla = 2]) { var divider = 1024; int size; try { size = int.parse(boyut.toString()); } catch (e) { throw ArgumentError('Değerde Hata Var: $e'); } if (size < divider) { return '$size B'; } if (size < divider * divider && size % divider == 0) { return '${(size / divider).toStringAsFixed(0)} KB'; } if (size < divider * divider) { return '${(size / divider).toStringAsFixed(yuvarla)} KB'; } if (size < divider * divider * divider && size % divider == 0) { return '${(size / (divider * divider)).toStringAsFixed(0)} MB'; } if (size < divider * divider * divider) { return '${(size / divider / divider).toStringAsFixed(yuvarla)} MB'; } if (size < divider * divider * divider * divider && size % divider == 0) { return '${(size / (divider * divider * divider)).toStringAsFixed(0)} GB'; } if (size < divider * divider * divider * divider) { return '${(size / divider / divider / divider).toStringAsFixed(yuvarla)} GB'; } if (size < divider * divider * divider * divider * divider && size % divider == 0) { num r = size / divider / divider / divider / divider; return '${r.toStringAsFixed(0)} TB'; } if (size < divider * divider * divider * divider * divider) { num r = size / divider / divider / divider / divider; return '${r.toStringAsFixed(yuvarla)} TB'; } if (size < divider * divider * divider * divider * divider * divider && size % divider == 0) { num r = size / divider / divider / divider / divider / divider; return '${r.toStringAsFixed(0)} PB'; } else { num r = size / divider / divider / divider / divider / divider; return '${r.toStringAsFixed(yuvarla)} PB'; } } static mongoBaglan() async { // if (FikoYTService.mongo.state != MONGO.State.open) { // return await FikoYTService.mongo.open(); // } } static girisYap() async { Completer bekle = Completer.sync(); // await FikoYTService.mongoBaglan(); // try { // if (kDebugMode) { // print(await FikoYTService.mongo.collection("uye").findOne()); // } // var kisi = await FikoYTService.mongo.collection("uye").findOne(); // bekle.complete(kisi); // } catch (e) { // bekle.completeError(e); // } dynamic cihaz = await FikoYTService.ayarlar.read("cihaz"); if (cihaz != null) { cihaz["uuid"] = FikoYTService.uuid; } else { cihaz = {"ismi": "Uygulama", "uuid": FikoYTService.uuid, "sistem_bilgiler": FikoYTService.sistemBilgiler}; } var formData = FormData(); formData.fields.add( MapEntry( "req_body", jsonEncode(cihaz).toString(), ), ); istek_yap(komut: "FikoYT.nt.cihazlar.bul", parametreler: formData).listen((sonuc) async { if (sonuc.turu == IstekOlayTuru.Cevaplandi) { if (sonuc.sonuc != null) { // print(sonuc.sonuc); await FikoYTService.ayarlar.write("cihaz", sonuc.sonuc); await FikoYTService.ayarlar.save(); bekle.complete(); } } }).onError((hata) async { // print(hata.toString()); bekle.complete(); }); return await bekle.future; } static Future dialogGoster(BuildContext context, Widget? icerik, FikoDialogAyarlari? ayarlar) { var ayar = ayarlar ?? FikoDialogAyarlari(); return showDialog( context: context, builder: (_) => ElasticIn( child: FadeInUpBig( duration: Durations.short4, child: AlertDialog( insetPadding: const EdgeInsets.only(top: 42, left: 10, right: 10), titlePadding: const EdgeInsets.symmetric(horizontal: 5), contentPadding: const EdgeInsets.all(5), actionsPadding: const EdgeInsets.only(bottom: 5), alignment: ayar.konumlandirma, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.all( Radius.circular(5), ), ), scrollable: true, actionsAlignment: MainAxisAlignment.center, title: Column( mainAxisSize: MainAxisSize.min, children: [ Row( // mainAxisAlignment: MainAxisAlignment.center, // crossAxisAlignment: CrossAxisAlignment.center, children: [ // if (ayar.baslik.runtimeType == IconData) // Icon( // ayar.baslikSimge, // size: 18, // ), if (ayar.baslik.runtimeType == String) Text( ayar.baslikSimge as String, style: const TextStyle( fontSize: 18, ), ), const SizedBox( width: 5, ), Expanded( child: Text( ayar.baslik, style: const TextStyle( color: Colors.black, fontSize: 16, decoration: TextDecoration.none, fontWeight: FontWeight.w500, ), ), ), if (ayar.baslikButonlar.isNotEmpty) ...List.from(ayar.baslikButonlar), MaterialButton( minWidth: 32, onPressed: () { Navigator.pop(context); }, color: Colors.red, textColor: Colors.white, padding: const EdgeInsets.all(3), shape: const CircleBorder(), child: const Icon(Icons.close, size: 20), ), ], ), const Divider(thickness: 1, height: 1), ], ), actions: [ Column( children: [ const Divider( height: 1, thickness: 1, ), SizedBox( height: 30, child: Row( crossAxisAlignment: CrossAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end, children: [ if (ayar.altButonlar.isNotEmpty) ...List.from(ayar.altButonlar), if (ayar.altButonlar.isEmpty) TextButton( onPressed: () { Navigator.pop(context); }, child: const Text( "Kapat", style: TextStyle(color: Colors.redAccent), ), ), ], ), ), ], ), ], content: SingleChildScrollView( child: Container( width: double.infinity, constraints: ayar.olculendirme, child: icerik ?? const SizedBox.shrink(), ), ), ).animate(effects: [ShimmerEffect(delay: 1000.ms)]), ), ), ); } static Future tarihSec( BuildContext context, { Widget? icerik, FikoDialogAyarlari? ayarlar, DateTime? varsayilanTarih, }) { var ayar = ayarlar ?? FikoDialogAyarlari( baslik: "Tarih Seçiniz", baslikSimge: "🕙", ); DateTime? rslt = varsayilanTarih; return showDialog( context: context, barrierDismissible: false, builder: (_) => ElasticIn( child: FadeInUpBig( duration: Durations.short4, child: AlertDialog( insetPadding: const EdgeInsets.only(top: 42), titlePadding: const EdgeInsets.symmetric(horizontal: 5), contentPadding: const EdgeInsets.all(5), actionsPadding: const EdgeInsets.only(bottom: 5), alignment: ayar.konumlandirma, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.all( Radius.circular(5), ), ), scrollable: true, actionsAlignment: MainAxisAlignment.center, title: Column( mainAxisSize: MainAxisSize.min, children: [ Row( // mainAxisAlignment: MainAxisAlignment.center, // crossAxisAlignment: CrossAxisAlignment.center, children: [ // if (ayar.baslik.runtimeType == IconData) // Icon( // ayar.baslikSimge, // size: 18, // ), if (ayar.baslik.runtimeType == String) Text( ayar.baslikSimge as String, style: const TextStyle( fontSize: 18, ), ), const SizedBox( width: 5, ), Expanded( child: Text( ayar.baslik, style: const TextStyle( color: Colors.black, fontSize: 16, decoration: TextDecoration.none, fontWeight: FontWeight.w500, ), ), ), if (ayar.baslikButonlar.isNotEmpty) ...List.from(ayar.baslikButonlar), MaterialButton( minWidth: 32, onPressed: () { Navigator.pop(context, rslt); }, color: Colors.red, textColor: Colors.white, padding: const EdgeInsets.all(3), shape: const CircleBorder(), child: const Icon(Icons.close, size: 20), ), ], ), const Divider(thickness: 1, height: 1), ], ), actions: [ Column( children: [ const Divider( height: 1, thickness: 1, ), SizedBox( height: 30, child: Row( crossAxisAlignment: CrossAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end, children: [ if (ayar.altButonlar.isNotEmpty) ...List.from(ayar.altButonlar), // if (ayar.altButonlar.isEmpty) TextButton( onPressed: () { rslt = null; Navigator.pop(context, null); }, child: const Text( "Tarihi Sil", style: TextStyle(color: Colors.redAccent), ), ), const Spacer(), TextButton( onPressed: () { Navigator.pop(context, rslt); }, child: const Text( "Kapat", style: TextStyle(color: Colors.redAccent), ), ), ], ), ), ], ), ], content: SingleChildScrollView( child: Container( width: double.infinity, constraints: ayar.olculendirme, child: SizedBox( width: 200, height: 200, child: CalendarDatePicker( initialDate: varsayilanTarih ?? DateTime.now(), firstDate: DateTime(-10000), lastDate: DateTime(10000), currentDate: rslt, onDateChanged: (value) { rslt = value; }, ), ), ), ), ), ), ), ); } static Future saatSec( BuildContext context, { Widget? icerik, FikoDialogAyarlari? ayarlar, DateTime? varsayilanTarih, }) async { DateTime? rslt = varsayilanTarih; TimeOfDay? rsltdlg = await showDialog( context: context, barrierDismissible: false, builder: (_) => ElasticIn( child: FadeInUpBig( duration: Durations.short4, child: TimePickerDialog( initialTime: varsayilanTarih != null ? varsayilanTarih.gununSaati() : DateTime.now().gununSaati(), ), ), ), ); if (rsltdlg == null) return null; rslt ??= DateTime.now(); rslt = rslt.ayarlaGununSaati(rsltdlg); return rslt; } static Future sureSec( BuildContext context, { Widget? icerik, FikoDialogAyarlari? ayarlar, Duration? varsayilanSure, }) async { Duration? rslt = varsayilanSure ?? Duration(microseconds: 0); Rx sureDlg = rslt.obs; Duration? rsltdlg = await dialogGoster( context, Column( children: [ SizedBox( width: 250, // height: 250, child: Obx( () => DurationPicker( duration: sureDlg.value ?? Duration(microseconds: 0), baseUnit: BaseUnit.minute, snapToMins: 0.1, onChange: (value) { sureDlg.value = value; rslt = value; }, ), ), ), ...List.from(ayarlar?.icerik ?? []), ], ), FikoDialogAyarlari(baslik: ayarlar?.baslik ?? "Süre Seç", baslikSimge: ayarlar?.baslikSimge, altButonlar: [ TextButton( onPressed: () { rslt = null; Navigator.pop(context, null); }, child: const Text( "Süre Sil", style: TextStyle(color: Colors.redAccent), ), ), const Spacer(), TextButton( onPressed: () { rslt = sureDlg.value; Navigator.pop(context, rslt); }, child: const Text( "Kapat", style: TextStyle(color: Colors.redAccent), ), ), ]), ); if (rsltdlg == null) return null; return rsltdlg; } }