diff --git a/lib/app/constant.dart b/lib/app/constant.dart index 87a1a81..fc50c03 100644 --- a/lib/app/constant.dart +++ b/lib/app/constant.dart @@ -14,7 +14,9 @@ class Constant { static String tokenName = "oneMitraPramita"; static double designHeight = 1024; static double designWidth = 1440; - static String version = "Versi 1.01"; + static String version = "Versi 1.02"; + static String build = "Build 13-12-2024"; + // flutter build web --base-href "/mitra/" static String ipAddress = ""; diff --git a/lib/main.dart b/lib/main.dart index 8e9bc26..790a06e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -8,8 +8,8 @@ import 'package:mitra_corporate/screen/splash_screen.dart/splash_screen.dart'; import 'app/constant.dart'; import 'app/route.dart'; -import 'app/register_webview_rtub.dart' - if (dart.library.html) 'app/register_webview.dart'; +// import 'app/register_webview_rtub.dart' +// if (dart.library.html) 'app/register_webview.dart'; void main() { // runApp(const MyApp()); diff --git a/lib/model/order_model.dart b/lib/model/order_model.dart index 81530cd..c8f2e91 100644 --- a/lib/model/order_model.dart +++ b/lib/model/order_model.dart @@ -1,3 +1,5 @@ +import 'package:mitra_corporate/model/user_mou_model.dart'; + class OrderModel { String? orderId; String? orderNumber; @@ -30,6 +32,7 @@ class OrderModel { List? tests; List? paket; List? paketDetail; + UserMouModel? mou; OrderModel( {this.orderId, @@ -62,6 +65,7 @@ class OrderModel { this.lokasi, this.pekerjaan, this.isQr, + this.mou, this.bahan}); OrderModel.fromJson(Map json) { @@ -89,6 +93,7 @@ class OrderModel { lokasi = json['lokasi']; pekerjaan = json['pekerjaan']; isQr = json['is_qr']; + mou = UserMouModel.fromJson(json['mou']); // sample = json['sample'].cast(); // bahan = json['bahan'].cast(); // tests = json['tests'].cast(); @@ -185,6 +190,7 @@ class OrderModel { data['pekerjaan'] = pekerjaan; data['noRM'] = noRM; data['is_qr'] = isQr; + data['mou'] = mou; return data; } } diff --git a/lib/model/registration_model.dart b/lib/model/registration_model.dart index e5fbf1f..ac99d6b 100644 --- a/lib/model/registration_model.dart +++ b/lib/model/registration_model.dart @@ -8,6 +8,7 @@ class RegistrationModel { List? tests; List? specimens; List? bahan; + String? userMouID; String? total; String? token; @@ -17,6 +18,7 @@ class RegistrationModel { this.specimens, this.total, this.bahan, + this.userMouID, this.patientId, this.paket, this.orderID, @@ -54,6 +56,7 @@ class RegistrationModel { patientId = json['patient_id']; token = json['token']; + userMouID = json['userMouID']; orderID = json['orderID']; } @@ -77,7 +80,7 @@ class RegistrationModel { data['total'] = total; data['patient_id'] = patientId; data['token'] = token; - + data['userMouID'] = userMouID; data['orderID'] = orderID; return data; } diff --git a/lib/model/user_mou_model.dart b/lib/model/user_mou_model.dart new file mode 100644 index 0000000..adeb248 --- /dev/null +++ b/lib/model/user_mou_model.dart @@ -0,0 +1,28 @@ +class UserMouModel { + String? userMouID; + String? userMouMouID; + String? userMouName; + String? userMouIsDefault; + + UserMouModel( + {this.userMouID, + this.userMouName, + this.userMouIsDefault, + this.userMouMouID}); + + UserMouModel.fromJson(Map json) { + userMouID = json['userMouID']; + userMouName = json['userMouName']; + userMouIsDefault = json['userMouIsDefault']; + userMouMouID = json['userMouMouID']; + } + + Map toJson() { + final Map data = new Map(); + data['userMouID'] = this.userMouID; + data['userMouName'] = this.userMouName; + data['userMouIsDefault'] = this.userMouIsDefault; + data['userMouMouID'] = this.userMouMouID; + return data; + } +} diff --git a/lib/provider/registrasi_provider.dart b/lib/provider/registrasi_provider.dart index 834f49f..4b62664 100644 --- a/lib/provider/registrasi_provider.dart +++ b/lib/provider/registrasi_provider.dart @@ -1,6 +1,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:mitra_corporate/model/registration_model.dart'; import 'package:mitra_corporate/model/test_model.dart'; +import 'package:mitra_corporate/model/user_mou_model.dart'; // menerima perubahan value dari onTap simpan perubahan final registrasiProvider = StateProvider((ref) => 0); @@ -17,6 +18,9 @@ final registrationDataProvider = final tempTestListProvider = StateProvider>( (ref) => List.empty(), ); +final selectedMouProvider = StateProvider( + (ref) => UserMouModel(), +); final orderNumberProvider = StateProvider((ref) => ""); final dialogOrderActionProvider = StateProvider((ref) => "new"); diff --git a/lib/repository/registration_repository.dart b/lib/repository/registration_repository.dart index a823ae8..e5f4c6b 100644 --- a/lib/repository/registration_repository.dart +++ b/lib/repository/registration_repository.dart @@ -1,6 +1,7 @@ import 'package:mitra_corporate/model/registration_filter_model.dart'; import 'package:mitra_corporate/model/registration_model.dart'; import 'package:mitra_corporate/model/test_model.dart'; +import 'package:mitra_corporate/model/user_mou_model.dart'; import '../app/constant.dart'; import 'base_repository.dart'; @@ -31,6 +32,29 @@ class RegistrationRepository extends BaseRepository { return data; } + Future> getUserMou({ + required String userID, + required String token, + }) async { + var param = {"userID": userID, "token": token}; + // print(param); + final url = "${Constant.baseUrl}fpp/getMou"; + final resp = await post(param: param, service: url); + List data; + // print(resp['data']); + if (resp['status'] == 'OK') { + data = []; + resp['data'].forEach((e) { + final model = UserMouModel.fromJson(e); + data.add(model); + }); + } else { + data = []; + } + + return data; + } + Future getFilter({ required String token, }) async { diff --git a/lib/screen/order/edit_pemeriksaan.dart b/lib/screen/order/edit_pemeriksaan.dart index 9681c47..5998852 100644 --- a/lib/screen/order/edit_pemeriksaan.dart +++ b/lib/screen/order/edit_pemeriksaan.dart @@ -4,14 +4,17 @@ import 'dart:ui'; import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; +import 'package:flutter_typeahead/flutter_typeahead.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:mitra_corporate/model/auth_model.dart'; import 'package:mitra_corporate/model/registration_model.dart'; import 'package:mitra_corporate/model/test_model.dart'; +import 'package:mitra_corporate/model/user_mou_model.dart'; import 'package:mitra_corporate/provider/auth_provider.dart'; import 'package:mitra_corporate/provider/order_provider.dart'; import 'package:mitra_corporate/screen/registrasi/registrasi_prvider.dart'; import 'package:loading_animation_widget/loading_animation_widget.dart'; +import 'package:mitra_corporate/screen/registrasi/user_mou_provider.dart'; import 'package:scroll_to_index/scroll_to_index.dart'; import '../../app/constant.dart'; @@ -29,6 +32,7 @@ class FormEditPemeriksaan extends HookConsumerWidget { final selectedtest = ref.watch(selectedTestEditProvider); final selectedPacket = ref.watch(selectedPacketEditProvider); final selectedPacketOld = ref.watch(currentPacketProvider); + final selectedMou = ref.watch(selectedMouProvider); // inisialisasi baca provider idTipePeriksaStateProvider final selectedTab = ref.watch(idTipePeriksaStateProvider); final AuthModel auth = ref.watch(authProvider) ?? AuthModel(); @@ -37,17 +41,31 @@ class FormEditPemeriksaan extends HookConsumerWidget { final searchCtr = useTextEditingController(text: ""); final scrollCtr = useScrollController(); final ctr = useState(AutoScrollController()); + final listUserMou = useState>(List.empty()); + final userMouCtr = useTextEditingController(text: ""); //get pemeriksaan from api - getPemeriksaan() { + getPemeriksaan(String mouID) { ref .read(GetFPPProvider.notifier) - .getData(mouID: auth.mUserMMouID ?? "0", token: auth.token ?? "0"); + .getData(mouID: mouID, token: auth.token ?? "0"); + } + + //get pemeriksaan from api + getUserMou() { + ref + .read(GetUserMouProvider.notifier) + .getData(userID: auth.mUserID ?? "0", token: auth.token ?? "0"); } useEffect(() { WidgetsBinding.instance.addPostFrameCallback((timeStamp) async { - getPemeriksaan(); + // getPemeriksaan(); + getUserMou(); + if (selectedMou.userMouID != "0" && selectedMou.userMouID != null) { + getPemeriksaan(selectedMou.userMouMouID ?? "0"); + userMouCtr.text = selectedMou.userMouName ?? ""; + } }); return () {}; }, []); @@ -87,6 +105,29 @@ class FormEditPemeriksaan extends HookConsumerWidget { }, ); + ref.listen( + GetUserMouProvider, + (pref, next) { + if (next is GetUserMouStateInit) { + testLoading.value = true; + } else if (next is GetUserMouStateLoading) { + testLoading.value = true; + } else if (next is GetUserMouStateError) { + testLoading.value = false; + print(next.message); + SanckbarWidget(context, next.message, snackbarType.error); + Constant.autoLogout(context: context, msg: next.message); + } else if (next is GetUserMouStateDone) { + listUserMou.value = next.model; + // ref.read(tempTestListProvider.notifier).state = next.model; + print(listUserMou.value); + + // tabController.length + + testLoading.value = false; + } + }, + ); // searchCtr.addListener(() { // listTest.value.firstWhere((element) => element.items) // },); @@ -96,6 +137,63 @@ class FormEditPemeriksaan extends HookConsumerWidget { mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ + SizedBox( + width: Constant.getActualX(context: context, x: 500), + child: TypeAheadField( + builder: (context, controller, focusNode) { + return TextField( + controller: controller, + focusNode: focusNode, + enabled: !testLoading.value, + // autofocus: true, + decoration: InputDecoration( + hintStyle: Constant.body2_400(context: context), + labelStyle: Constant.body2_400(context: context), + fillColor: Constant.primaryBlue, + labelText: 'Pilih Agreement', + // isCollapsed: true, + hintText: 'Pilih Agreement', + border: OutlineInputBorder( + borderSide: BorderSide(color: Constant.primaryBlue), + borderRadius: BorderRadius.circular(8), + ))); + }, + controller: userMouCtr, + suggestionsCallback: (pattern) async { + return listUserMou.value + .where( + (element) => element.userMouName! + .toLowerCase() + .contains(pattern.toLowerCase()), + ) + .toList(); + }, + itemBuilder: (BuildContext context, UserMouModel value) { + return ListTile( + title: Text(value.userMouName ?? ""), + ); + }, + onSelected: (UserMouModel value) { + print(selectedtest); + print(selectedPacket); + + // if (selectedtest.isNotEmpty || selectedPacket.isNotEmpty) { + // SanckbarWidget( + // context, + // "test dan paket yang sudah dipilih telah di reset", + // snackbarType.warning); + // } + ref.read(selectedTestEditProvider.notifier).state = List.empty(); + ref.read(selectedPacketEditProvider.notifier).state = + List.empty(); + ref.read(selectedMouProvider.notifier).state = value; + + userMouCtr.text = value.userMouName ?? ""; + getPemeriksaan(value.userMouMouID ?? "0"); + }, + ), + ), + SizedBox(height: Constant.getActualY(context: context, y: 12)), SizedBox( width: Constant.getActualX(context: context, x: 500), // height: Constant.getActualY(context: context, y: 56), diff --git a/lib/screen/order/form_detail_edit.dart b/lib/screen/order/form_detail_edit.dart index 1d73a50..ed8beb3 100644 --- a/lib/screen/order/form_detail_edit.dart +++ b/lib/screen/order/form_detail_edit.dart @@ -8,6 +8,7 @@ import 'package:intl/intl.dart'; import 'package:mitra_corporate/model/registration_model.dart'; import 'package:mitra_corporate/model/test_model.dart'; +import 'package:mitra_corporate/model/user_mou_model.dart'; import 'package:mitra_corporate/provider/auth_provider.dart'; import 'package:mitra_corporate/provider/order_provider.dart'; import 'package:mitra_corporate/provider/registrasi_provider.dart'; @@ -31,6 +32,7 @@ class DetailEdit extends HookConsumerWidget { final testListAll = ref.read(tempTestListProvider); final selectedTest = ref.read(selectedTestEditProvider); final dialogAction = ref.watch(dialogOrderActionProvider); + final selectedMou = ref.watch(selectedMouProvider); final testList = useState>(List.empty()); final testScrollCtr = useScrollController(); @@ -446,6 +448,7 @@ class DetailEdit extends HookConsumerWidget { } editOrder() { + tempRegistrationData.userMouID = selectedMou.userMouMouID; print(jsonEncode(tempRegistrationData)); // tempRegistrationData.tests!.forEach((element) { // if (element.date == null || element.date!.isEmpty) { @@ -497,6 +500,7 @@ class DetailEdit extends HookConsumerWidget { ref.read(currentPacketProvider.notifier).state = List.empty(growable: true); ref.read(selectedPacketEditProvider.notifier).state = List.empty(); + ref.read(selectedMouProvider.notifier).state = UserMouModel(); } }, ); @@ -507,7 +511,13 @@ class DetailEdit extends HookConsumerWidget { // height: MediaQuery.of(context).size.height, color: Colors.white, child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ + Text( + "Agreement : ${selectedMou.userMouName}", + style: Constant.h4_600(context: context), + ), + SizedBox(height: Constant.getActualY(context: context, y: 24)), Row( children: [ SizedBox( diff --git a/lib/screen/order/order_screen.dart b/lib/screen/order/order_screen.dart index 9f39566..7353bc4 100644 --- a/lib/screen/order/order_screen.dart +++ b/lib/screen/order/order_screen.dart @@ -6,6 +6,7 @@ import 'package:intl/intl.dart'; import 'package:mitra_corporate/model/registration_model.dart'; import 'package:mitra_corporate/model/search_order_model.dart'; import 'package:mitra_corporate/model/test_model.dart'; +import 'package:mitra_corporate/model/user_mou_model.dart'; import 'package:mitra_corporate/provider/order_provider.dart'; import 'package:mitra_corporate/screen/order/cancel_order_provider.dart'; import 'package:mitra_corporate/screen/order/dialog_cancel_order.dart'; @@ -872,6 +873,7 @@ class OrderScreen extends HookConsumerWidget { pekerjaan: e.value.pekerjaan, )); ref.read(EditDataProvider.notifier).state = a; + ref.read(selectedMouProvider.notifier).state = e.value.mou ?? UserMouModel(); showDialog(context: context, barrierDismissible: false, builder: ((context) => DialogEdit())).then((value) => refresh()); }, icon: Icon( diff --git a/lib/screen/registrasi/form_detail_order.dart b/lib/screen/registrasi/form_detail_order.dart index 5dacfde..66ddf6c 100644 --- a/lib/screen/registrasi/form_detail_order.dart +++ b/lib/screen/registrasi/form_detail_order.dart @@ -8,6 +8,7 @@ import 'package:jiffy/jiffy.dart'; import 'package:mitra_corporate/model/registration_model.dart'; import 'package:mitra_corporate/model/test_model.dart'; +import 'package:mitra_corporate/model/user_mou_model.dart'; import 'package:mitra_corporate/provider/auth_provider.dart'; import 'package:mitra_corporate/provider/registrasi_provider.dart'; import 'package:mitra_corporate/screen/registrasi/get_specimen_provider.dart'; @@ -27,6 +28,7 @@ class DetailOrder extends HookConsumerWidget { final tempRegistrationData = ref.watch(registrationDataProvider); final testListAll = ref.read(tempTestListProvider); final selectedTest = ref.read(selectedTestProvider); + final selectedMou = ref.read(selectedMouProvider); final dialogAction = ref.watch(dialogOrderActionProvider); final testList = useState>(List.empty()); @@ -423,6 +425,7 @@ class DetailOrder extends HookConsumerWidget { } addOrder() { + tempRegistrationData.userMouID = selectedMou.userMouMouID; print(jsonEncode(tempRegistrationData)); for (var element in tempRegistrationData.tests!) { if (element.date == null || element.date!.isEmpty) { @@ -471,6 +474,7 @@ class DetailOrder extends HookConsumerWidget { ref.read(registrasiProvider.state).update((state) => 3); print(jsonEncode(tempRegistrationData)); + ref.read(selectedMouProvider.notifier).state = UserMouModel(); } }, ); @@ -481,7 +485,13 @@ class DetailOrder extends HookConsumerWidget { // height: MediaQuery.of(context).size.height, color: Colors.white, child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ + Text( + "Agreement : ${selectedMou.userMouName}", + style: Constant.h4_600(context: context), + ), + SizedBox(height: Constant.getActualY(context: context, y: 24)), Row( children: [ SizedBox( diff --git a/lib/screen/registrasi/form_pemeriksaan.dart b/lib/screen/registrasi/form_pemeriksaan.dart index 6bc5022..22d6694 100644 --- a/lib/screen/registrasi/form_pemeriksaan.dart +++ b/lib/screen/registrasi/form_pemeriksaan.dart @@ -1,16 +1,20 @@ import 'dart:ui'; +import 'package:dio/dio.dart'; import 'package:eva_icons_flutter/eva_icons_flutter.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; +import 'package:flutter_typeahead/flutter_typeahead.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:intl/intl.dart'; import 'package:mitra_corporate/model/auth_model.dart'; import 'package:mitra_corporate/model/registration_model.dart'; import 'package:mitra_corporate/model/test_model.dart'; +import 'package:mitra_corporate/model/user_mou_model.dart'; import 'package:mitra_corporate/provider/auth_provider.dart'; import 'package:mitra_corporate/screen/registrasi/registrasi_prvider.dart'; import 'package:loading_animation_widget/loading_animation_widget.dart'; +import 'package:mitra_corporate/screen/registrasi/user_mou_provider.dart'; import 'package:scroll_to_index/scroll_to_index.dart'; import '../../app/constant.dart'; @@ -48,25 +52,40 @@ class FormPemeriksaan extends HookConsumerWidget { final tempRegistrationData = ref.watch(registrationDataProvider); final selectedtest = ref.watch(selectedTestProvider); final selectedPacket = ref.watch(selectedPacketProvider); + final selectedMou = ref.watch(selectedMouProvider); // inisialisasi baca provider idTipePeriksaStateProvider final selectedTab = ref.watch(idTipePeriksaStateProvider); final AuthModel auth = ref.watch(authProvider) ?? AuthModel(); final listTest = useState>(List.empty()); + final listUserMou = useState>(List.empty()); + + final userMouCtr = useTextEditingController(text: ""); final testLoading = useState(false); final searchCtr = useTextEditingController(text: ""); final scrollCtr = useScrollController(); final ctr = useState(AutoScrollController()); //get pemeriksaan from api - getPemeriksaan() { + getPemeriksaan(String mouID) { ref .read(GetFPPProvider.notifier) - .getData(mouID: auth.mUserMMouID ?? "0", token: auth.token ?? "0"); + .getData(mouID: mouID, token: auth.token ?? "0"); + } + + //get pemeriksaan from api + getUserMou() { + ref + .read(GetUserMouProvider.notifier) + .getData(userID: auth.mUserID ?? "0", token: auth.token ?? "0"); } useEffect(() { WidgetsBinding.instance.addPostFrameCallback((timeStamp) async { - getPemeriksaan(); + getUserMou(); + if (selectedMou.userMouID != "0" && selectedMou.userMouID != null) { + getPemeriksaan(selectedMou.userMouMouID ?? "0"); + userMouCtr.text = selectedMou.userMouName ?? ""; + } }); return () {}; }, []); @@ -117,6 +136,29 @@ class FormPemeriksaan extends HookConsumerWidget { } }, ); + ref.listen( + GetUserMouProvider, + (pref, next) { + if (next is GetUserMouStateInit) { + testLoading.value = true; + } else if (next is GetUserMouStateLoading) { + testLoading.value = true; + } else if (next is GetUserMouStateError) { + testLoading.value = false; + print(next.message); + SanckbarWidget(context, next.message, snackbarType.error); + Constant.autoLogout(context: context, msg: next.message); + } else if (next is GetUserMouStateDone) { + listUserMou.value = next.model; + // ref.read(tempTestListProvider.notifier).state = next.model; + print(listUserMou.value); + + // tabController.length + + testLoading.value = false; + } + }, + ); // searchCtr.addListener(() { // listTest.value.firstWhere((element) => element.items) @@ -127,6 +169,88 @@ class FormPemeriksaan extends HookConsumerWidget { mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ + SizedBox( + width: Constant.getActualX(context: context, x: 500), + // height: Constant.getActualY(context: context, y: 56), + + // child: Autocomplete( + // optionsViewBuilder: (context, onSelected, options) { + // return ListView.builder( + // itemCount: options.length, + // itemBuilder: (context, index) { + // return Text(options.elementAt(index).userMouName ?? ""); + // }, + // ); + // }, + // optionsBuilder: (TextEditingValue textEditingValue) { + // if (textEditingValue.text == '') { + // return const Iterable.empty(); + // } + // return listUserMou.value.where((UserMouModel option) { + // return option.userMouName! + // .toLowerCase() + // .contains(textEditingValue.text.toLowerCase()); + // }); + // }, + // displayStringForOption: (option) => option.userMouName ?? "", + // onSelected: (UserMouModel option) { + // selectedUserMou.value = option; + // }, + // ), + child: TypeAheadField( + builder: (context, controller, focusNode) { + return TextField( + controller: controller, + focusNode: focusNode, + enabled: !testLoading.value, + // autofocus: true, + decoration: InputDecoration( + hintStyle: Constant.body2_400(context: context), + labelStyle: Constant.body2_400(context: context), + fillColor: Constant.primaryBlue, + labelText: 'Pilih Agreement', + // isCollapsed: true, + hintText: 'Pilih Agreement', + border: OutlineInputBorder( + borderSide: BorderSide(color: Constant.primaryBlue), + borderRadius: BorderRadius.circular(8), + ))); + }, + controller: userMouCtr, + suggestionsCallback: (pattern) async { + return listUserMou.value + .where( + (element) => element.userMouName! + .toLowerCase() + .contains(pattern.toLowerCase()), + ) + .toList(); + }, + itemBuilder: (BuildContext context, UserMouModel value) { + return ListTile( + title: Text(value.userMouName ?? ""), + ); + }, + onSelected: (UserMouModel value) { + print(selectedtest); + print(selectedPacket); + + // if (selectedtest.isNotEmpty || selectedPacket.isNotEmpty) { + // SanckbarWidget( + // context, + // "test dan paket yang sudah dipilih telah di reset", + // snackbarType.warning); + // } + ref.read(selectedTestProvider.notifier).state = List.empty(); + ref.read(selectedPacketProvider.notifier).state = List.empty(); + ref.read(selectedMouProvider.notifier).state = value; + + userMouCtr.text = value.userMouName ?? ""; + getPemeriksaan(value.userMouMouID ?? "0"); + }, + ), + ), + SizedBox(height: Constant.getActualY(context: context, y: 12)), SizedBox( width: Constant.getActualX(context: context, x: 500), // height: Constant.getActualY(context: context, y: 56), diff --git a/lib/screen/registrasi/user_mou_provider.dart b/lib/screen/registrasi/user_mou_provider.dart new file mode 100644 index 0000000..1d25354 --- /dev/null +++ b/lib/screen/registrasi/user_mou_provider.dart @@ -0,0 +1,66 @@ +import 'package:equatable/equatable.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:mitra_corporate/model/test_model.dart'; +import 'package:mitra_corporate/model/user_mou_model.dart'; +import 'package:mitra_corporate/repository/registration_repository.dart'; + +import '../../provider/dio_provider.dart'; +import '../../repository/base_repository.dart'; + +abstract class GetUserMouState extends Equatable { + final DateTime date; + const GetUserMouState(this.date); + @override + List get props => [date]; +} + +class GetUserMouStateInit extends GetUserMouState { + GetUserMouStateInit() : super(DateTime.now()); +} + +class GetUserMouStateLoading extends GetUserMouState { + GetUserMouStateLoading() : super(DateTime.now()); +} + +class GetUserMouStateError extends GetUserMouState { + final String message; + GetUserMouStateError({ + required this.message, + }) : super(DateTime.now()); +} + +class GetUserMouStateDone extends GetUserMouState { + final List model; + GetUserMouStateDone({ + required this.model, + }) : super(DateTime.now()); +} + +//notifier +class GetUserMouNotifier extends StateNotifier { + final Ref ref; + GetUserMouNotifier({ + required this.ref, + }) : super(GetUserMouStateInit()); + + void getData({required String userID, required String token}) async { + try { + state = GetUserMouStateLoading(); + final dio = ref.read(dioProvider); + final resp = await RegistrationRepository(dio: dio) + .getUserMou(userID: userID, token: token); + state = GetUserMouStateDone(model: resp); + } catch (e) { + if (e is BaseRepositoryException) { + state = GetUserMouStateError(message: e.message.toString()); + } else { + state = GetUserMouStateError(message: e.toString()); + } + } + } +} + +//provider +final GetUserMouProvider = + StateNotifierProvider( + (ref) => GetUserMouNotifier(ref: ref));