class AppProvider extends ChangeNotifier {
  Client client = Client();
  late Databases _databases;
  late bool _isloading;
  List<Medications>? _meditem;

  bool get isloading => _isloading;
  List<Medications>? get meditem => _meditem;

  AppProvider() {
    _isloading = true;
    initializeclass();
  }

  initializeclass() {
    client
      ..setEndpoint(Appconstants.endpoint)
      ..setProject(Appconstants.projectid);
    _databases = Databases(client);
    _isloading = false;
  }

// load medication method
  loadMedication(String userid) async {
    try {
      final response = await _databases.listDocuments(
          collectionId: Appconstants.collectionID,
          databaseId: Appconstants.dbID,
          queries: [
            // Query.orderAsc('date'),
            Query.equal('userID', [userid])
          ]);
      _meditem = response.documents
          .map((meditem) => Medications.fromJson(meditem.data))
          .toList();
      notifyListeners();
    } catch (e) {
      print(e);
    }
  }

// add medication method
  addMedication(String medicationname, String userID, int dosages, bool isInjection,
      bool isTablet, bool isSyrup) async {
    try {
      final response = await _databases.createDocument(
        collectionId: Appconstants.collectionID,
        data: {
          'id': '',
          'medicationname': medicationname,
          'userID': userID,
          'dosages': dosages,
          'isInjection': isInjection,
          'isTablet': isTablet,
          'isSyrup': isSyrup,
          'check':false,
          'isTrack':false
        },
        databaseId: Appconstants.dbID,
        documentId: 'unique()',
      );
      final String documentId = response.$id;
      
      // update the ID of the medication.
      await _databases.updateDocument(
          databaseId: Appconstants.dbID,
          collectionId: Appconstants.collectionID,
          documentId: documentId,
          data: {'id': documentId});
      if (response.$id.isNotEmpty) {
        _isloading = false;
      }

      notifyListeners();
    } catch (e) {
      _isloading = false;
      notifyListeners();
      print(e);
    }
  }
}