addNHIF function

Future<void> addNHIF({
  1. required BuildContext context,
  2. required NHIFInformationObject nhifInformation,
})

Implementation

Future<void> addNHIF({
  required BuildContext context,
  required NHIFInformationObject nhifInformation,
}) async {
  final bool dataValid = nhifInformation.data['patientID'] != null &&
      nhifInformation.data['membershipNumber'] != null;

  if (dataValid) {
    final Map<String, dynamic>? result = await showDialog<Map<String, dynamic>>(
      context: context,
      barrierDismissible: false,
      builder: (BuildContext context) {
        return BewellSubmitDialog(
          data: addPatientNHIFVariables(nhifInformation.data),
          query: addPatientNHIFMutation,
        );
      },
    );

    if (result != null && result['addNHIF'] != null) {
      ScaffoldMessenger.of(context).showSnackBar(SnackBar(
        content: const Text('NHIF saved'),
        duration: const Duration(seconds: kLongSnackBarDuration),
        action: dismissSnackBar('Ok, thanks', white, context),
      ));

      const int index = PatientRegistrationContainer.extraInformationIndex;
      PatientRegistrationContainer.of(context)?.navigate(index);
      return;
    } else if (result!['error'] != null) {
      ScaffoldMessenger.of(context).showSnackBar(SnackBar(
        content: Text(UserFeedBackTexts.getErrorMessage('saving NHIF details')),
        duration: const Duration(seconds: kLongSnackBarDuration),
        action: dismissSnackBar(okMsg, white, context),
      ));
      return;
    }
  } else {
    ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
      content: Text(skipNHIF),
      duration: Duration(seconds: kLongSnackBarDuration),
    ));
    const int index = PatientRegistrationContainer.extraInformationIndex;
    PatientRegistrationContainer.of(context)?.navigate(index);
  }
}