import 'package:d_info/d_info.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:skripsi_pos_dg/config/app_color.dart'; import 'package:skripsi_pos_dg/data/models/fuzzy_model.dart'; import 'package:skripsi_pos_dg/data/remote/controller/c_fuzzy.dart'; import 'package:skripsi_pos_dg/data/remote/controller/c_pemeriksaan.dart'; import 'package:skripsi_pos_dg/view/widget/custom_dialog_for_fuzzy.dart'; class PeriksaPageBidan extends StatefulWidget { final int? idPemeriksaan; final double? usiaBalita; final String? namaBalita, jenisKelaminBalita; const PeriksaPageBidan( {super.key, this.idPemeriksaan, this.namaBalita, this.usiaBalita, this.jenisKelaminBalita}); @override State createState() => _PeriksaPageBidanState(); } class _PeriksaPageBidanState extends State { final cPemeriksaan = Get.put(PemeriksaanController()); final cFuzzy = Get.put(FuzzyController()); final formKey = GlobalKey(); final TextEditingController beratBadanController = TextEditingController(); final TextEditingController tinggiBadanController = TextEditingController(); @override void initState() { super.initState(); } double checkDeggreForAll(List degree) { double result = 0.0; for (int i = 0; i < degree.length; i++) { if (degree[i] != 0.0) { result = degree[i]; } } return result; } @override Widget build(BuildContext context) { postPemeriksaan(FuzzyModel data) async { List listDegreeBBU = [ data.hasil!.bbU!.bbUSangatKurangDegree!, data.hasil!.bbU!.bbUKurangDegree!, data.hasil!.bbU!.bbUNormalDegree!, data.hasil!.bbU!.bbUResikoBbLebihDegree!, ]; List listDegreeTBU = [ data.hasil!.tbU!.tbUSangatPendekDegree!, data.hasil!.tbU!.tbUPendekDegree!, data.hasil!.tbU!.tbUNormalDegree!, data.hasil!.tbU!.tbUPendekDegree!, ]; List listDegreeBBTB = [ data.hasil!.bbTb!.bbTbGiziBurukDegree!, data.hasil!.bbTb!.bbTbGiziKurangDegree!, data.hasil!.bbTb!.bbTbGiziNormalDegree!, data.hasil!.bbTb!.bbTbBrskGiziLebihDegree!, data.hasil!.bbTb!.bbTbGiziLebihDegree!, data.hasil!.bbTb!.bbTbGiziObesitasDegree!, ]; final degreeBBU = checkDeggreForAll(listDegreeBBU); final degreeTBU = checkDeggreForAll(listDegreeTBU); final degreeBBTB = checkDeggreForAll(listDegreeBBTB); await cPemeriksaan.postPemeriksaan( widget.idPemeriksaan!, data.beratBadan!, data.tinggiBadan!, data.hasil!.bbU!.statusGizi!, data.hasil!.bbU!.defuzzifiedValue!, degreeBBU, data.hasil!.tbU!.statusGizi!, data.hasil!.tbU!.defuzzifiedValue!, degreeTBU, data.hasil!.bbTb!.statusGizi!, data.hasil!.bbTb!.defuzzifiedValue!, degreeBBTB, ); if (cPemeriksaan.successPostPemeriksaan) { DInfo.dialogSuccess(context, 'Berhasil Menyimpan Data'); // DInfo.dialogNetral(context, degreeBBU.toString()); DInfo.closeDialog(context, actionAfterClose: () { Get.back(result: true); }); } else { DInfo.dialogError(context, 'Gagal Menyimpan Data'); DInfo.closeDialog(context); } } postPemeriksaanForGetFuzzy() async { await cFuzzy.postFuzzy( widget.usiaBalita!, double.parse(beratBadanController.value.text), double.parse(tinggiBadanController.value.text), widget.jenisKelaminBalita!, ); if (cFuzzy.successPostFuzzy) { showDialog( context: context, barrierDismissible: false, builder: (BuildContext context) { return CustomDialogForFuzzy( responseData: cFuzzy.responseData, onConfirm: () { postPemeriksaan(cFuzzy.responseData); }, onClose: () {}); }, ); } else { DInfo.dialogError(context, 'Gagal Menyimpan Data'); } } return Scaffold( appBar: AppBar( automaticallyImplyLeading: false, ), body: Stack( children: [ Padding( padding: const EdgeInsets.all(8.0), child: Column( children: [ Text('${widget.namaBalita}'), Text('Usia: ${widget.usiaBalita} Bulan'), Text('Jenis Kelamin: ${widget.jenisKelaminBalita}'), TextFormField( controller: beratBadanController, decoration: const InputDecoration( labelText: 'Berat Badan (Kg)', labelStyle: TextStyle( color: AppColor.darkGreyColor, ), ), keyboardType: TextInputType.number, ), TextFormField( controller: tinggiBadanController, decoration: const InputDecoration( labelText: 'Tinggi Badan (Cm)', labelStyle: TextStyle( color: AppColor.darkGreyColor, ), ), keyboardType: TextInputType.number, ), const SizedBox( height: 16.0, ), ElevatedButton( onPressed: () { if (beratBadanController.value.text.isEmpty) { DInfo.dialogError(context, 'Berat Badan can\'t be empty'); } else { if (tinggiBadanController.value.text.isEmpty) { DInfo.dialogError( context, 'Tinggi Badan can\'t be empty'); } else { // postPemeriksaan(); postPemeriksaanForGetFuzzy(); // DInfo.dialogSuccess(context, 'fungsi login'); } } }, child: const Text('Periksa'), ), ], ), ) ], ), ); } }