From a64dae56b4d7979afdd062afd1f288acd5050768 Mon Sep 17 00:00:00 2001 From: yaso Date: Mon, 7 Oct 2024 14:30:08 +0200 Subject: [PATCH] add notifications api call --- .../lib/mih_objects/arguments.dart | 3 ++ .../lib/mih_objects/notification.dart | 43 +++++++++++++++++++ .../lib/mih_packages/mih_home/mih_home.dart | 5 ++- .../mih_home/mih_profile_getter.dart | 29 +++++++++++-- 4 files changed, 76 insertions(+), 4 deletions(-) create mode 100644 Frontend/patient_manager/lib/mih_objects/notification.dart diff --git a/Frontend/patient_manager/lib/mih_objects/arguments.dart b/Frontend/patient_manager/lib/mih_objects/arguments.dart index af07a325..ccc57108 100644 --- a/Frontend/patient_manager/lib/mih_objects/arguments.dart +++ b/Frontend/patient_manager/lib/mih_objects/arguments.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import 'package:patient_manager/mih_objects/app_user.dart'; import 'package:patient_manager/mih_objects/business.dart'; import 'package:patient_manager/mih_objects/business_user.dart'; +import 'package:patient_manager/mih_objects/notification.dart'; import 'package:patient_manager/mih_objects/patients.dart'; class BusinessArguments { @@ -22,12 +23,14 @@ class HomeArguments { final AppUser signedInUser; final BusinessUser? businessUser; final Business? business; + final List notifi; final String profilePicUrl; HomeArguments( this.signedInUser, this.businessUser, this.business, + this.notifi, this.profilePicUrl, ); } diff --git a/Frontend/patient_manager/lib/mih_objects/notification.dart b/Frontend/patient_manager/lib/mih_objects/notification.dart new file mode 100644 index 00000000..0806ba6c --- /dev/null +++ b/Frontend/patient_manager/lib/mih_objects/notification.dart @@ -0,0 +1,43 @@ +class MIHNotification { + final int idnotifications; + final String app_id; + final String notification_message; + final String notification_read; + final String action_path; + final String insert_date; + final String notification_type; + + const MIHNotification({ + required this.idnotifications, + required this.app_id, + required this.notification_message, + required this.notification_read, + required this.action_path, + required this.insert_date, + required this.notification_type, + }); + + factory MIHNotification.fromJson(Map json) { + return switch (json) { + { + "idnotifications": int idnotifications, + "app_id": String app_id, + "notification_message": String notification_message, + "notification_read": String notification_read, + "action_path": String action_path, + "insert_date": String insert_date, + "notification_type": String notification_type, + } => + MIHNotification( + idnotifications: idnotifications, + app_id: app_id, + notification_message: notification_message, + notification_read: notification_read, + action_path: action_path, + insert_date: insert_date, + notification_type: notification_type, + ), + _ => throw const FormatException('Failed to load Notifications.'), + }; + } +} diff --git a/Frontend/patient_manager/lib/mih_packages/mih_home/mih_home.dart b/Frontend/patient_manager/lib/mih_packages/mih_home/mih_home.dart index 419554b3..14031679 100644 --- a/Frontend/patient_manager/lib/mih_packages/mih_home/mih_home.dart +++ b/Frontend/patient_manager/lib/mih_packages/mih_home/mih_home.dart @@ -21,11 +21,13 @@ import 'package:patient_manager/mih_objects/app_user.dart'; import 'package:patient_manager/mih_objects/arguments.dart'; import 'package:patient_manager/mih_objects/business.dart'; import 'package:patient_manager/mih_objects/business_user.dart'; +import 'package:patient_manager/mih_objects/notification.dart'; class MIHHome extends StatefulWidget { final AppUser signedInUser; final BusinessUser? businessUser; final Business? business; + final List notifications; final ImageProvider? propicFile; final bool isUserNew; final bool isBusinessUser; @@ -36,6 +38,7 @@ class MIHHome extends StatefulWidget { required this.signedInUser, required this.businessUser, required this.business, + required this.notifications, required this.propicFile, required this.isUserNew, required this.isBusinessUser, @@ -631,7 +634,7 @@ class _MIHHomeState extends State { MIHNotificationDrawer getSecondaryActionDrawer() { return MIHNotificationDrawer( signedInUser: widget.signedInUser, - propicFile: widget.propicFile, + notifications: widget.notifications, ); } diff --git a/Frontend/patient_manager/lib/mih_packages/mih_home/mih_profile_getter.dart b/Frontend/patient_manager/lib/mih_packages/mih_home/mih_profile_getter.dart index b0e21675..79b67af1 100644 --- a/Frontend/patient_manager/lib/mih_packages/mih_home/mih_profile_getter.dart +++ b/Frontend/patient_manager/lib/mih_packages/mih_home/mih_profile_getter.dart @@ -11,6 +11,7 @@ import 'package:patient_manager/mih_objects/app_user.dart'; import 'package:patient_manager/mih_objects/arguments.dart'; import 'package:patient_manager/mih_objects/business.dart'; import 'package:patient_manager/mih_objects/business_user.dart'; +import 'package:patient_manager/mih_objects/notification.dart'; import 'package:patient_manager/mih_packages/mih_home/mih_home.dart'; import 'package:supertokens_flutter/supertokens.dart'; import 'package:supertokens_flutter/http.dart' as http; @@ -26,6 +27,7 @@ class MIHProfileGetter extends StatefulWidget { class _MIHProfileGetterState extends State { String useremail = ""; + int amount = 10; final baseAPI = AppEnviroment.baseApiUrl; late Future profile; @@ -36,6 +38,7 @@ class _MIHProfileGetterState extends State { AppUser userData; Business? busData; BusinessUser? bUserData; + List notifi; String userPic; // Get Userdata @@ -53,8 +56,9 @@ class _MIHProfileGetterState extends State { } // Get BusinessUserdata - var responseBUser = - await http.get(Uri.parse("$baseAPI/business-user/$uid")); + var responseBUser = await http.get( + Uri.parse("$baseAPI/business-user/$uid"), + ); if (responseBUser.statusCode == 200) { String body = responseBUser.body; var decodedData = jsonDecode(body); @@ -99,8 +103,26 @@ class _MIHProfileGetterState extends State { // "Error: GetUserData status code ${response.statusCode}"); } } + + //Get Notifications + var responseNotification = + await http.get(Uri.parse("$baseAPI/notifications/$uid?amount=$amount")); + if (responseNotification.statusCode == 200) { + String body = responseNotification.body; + // var decodedData = jsonDecode(body); + // MIHNotification notifications = MIHNotification.fromJson(decodedData); + + Iterable l = jsonDecode(body); + //print("Here2"); + List notifications = List.from( + l.map((model) => MIHNotification.fromJson(model))); + notifi = notifications; + } else { + notifi = []; + } + //print(userPic); - return HomeArguments(userData, bUserData, busData, userPic); + return HomeArguments(userData, bUserData, busData, notifi, userPic); } ImageProvider? isPictureAvailable(String url) { @@ -169,6 +191,7 @@ class _MIHProfileGetterState extends State { signedInUser: snapshot.requireData.signedInUser, businessUser: snapshot.data!.businessUser, business: snapshot.data!.business, + notifications: snapshot.data!.notifi, propicFile: isPictureAvailable(snapshot.data!.profilePicUrl), isUserNew: isUserNew(snapshot.requireData.signedInUser), isBusinessUser: isBusinessUser(snapshot.requireData.signedInUser),