dashboard replaced with client profile page

This commit is contained in:
Ashutosh 2024-08-01 15:06:27 +05:30
commit 50306ed759
13 changed files with 73 additions and 185 deletions

View File

@ -23,8 +23,8 @@ if (flutterVersionName == null) {
}
android {
namespace "com.ftc.app.ftc_mobile_app"
compileSdkVersion flutter.compileSdkVersion
namespace "com.app.ftc_patient"
compileSdkVersion 32
ndkVersion "25.1.8937393"
compileOptions {
@ -42,11 +42,11 @@ android {
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.ftc.app.ftc_mobile_app"
applicationId "com.app.ftc_patient"
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdkVersion 21
targetSdkVersion flutter.targetSdkVersion
targetSdkVersion 32
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}

View File

@ -1,29 +0,0 @@
{
"project_info": {
"project_number": "583559514958",
"project_id": "ftc-services-ea8d6",
"storage_bucket": "ftc-services-ea8d6.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:583559514958:android:89af243ca4a3888a32ec1f",
"android_client_info": {
"package_name": "com.ftc.app.ftc_mobile_app"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyDF2vZbiWQROGvyvLeeCmAjPLnPLYjE6Os"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}

View File

@ -1,4 +1,4 @@
package com.ftc.app.ftc_mobile_app
package com.app.ftc_patient
import io.flutter.embedding.android.FlutterActivity

View File

@ -507,7 +507,7 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0.0;
PRODUCT_BUNDLE_IDENTIFIER = com.ftcs.app;
PRODUCT_BUNDLE_IDENTIFIER = com.app.ftc_patient;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = FTCS_Dev;
@ -700,7 +700,7 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0.0;
PRODUCT_BUNDLE_IDENTIFIER = com.ftcs.app;
PRODUCT_BUNDLE_IDENTIFIER = com.app.ftc_patient;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = FTCS_Dev;
@ -737,7 +737,7 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0.0;
PRODUCT_BUNDLE_IDENTIFIER = com.ftcs.app;
PRODUCT_BUNDLE_IDENTIFIER = com.app.ftc_patient;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = FTCS_Dev;

View File

@ -1,10 +1,9 @@
import 'package:flutter/material.dart';
import 'package:ftc_mobile_app/models/profile_screen_model.dart';
import 'package:ftc_mobile_app/models/profileData/user_data.dart';
import 'package:ftc_mobile_app/models/rota/LiveRoasterResponseData.dart';
import 'package:ftc_mobile_app/models/rota/WeekArrayData.dart';
import 'package:ftc_mobile_app/utilities/extensions/custom_extensions.dart';
import 'package:get/get.dart';
import 'package:intl/intl.dart';
import '../../ftc_mobile_app.dart';
class DashboardScreenController extends GetxController {
@ -16,7 +15,7 @@ class DashboardScreenController extends GetxController {
final selectedIndex = 1.obs;
final myShiftsList = RxList<DaysArrayData>();
final ongoingShift = Rx<DaysArrayData?>(null);
final myProfileData = Rx<StaffMembers?>(null);
final myProfileData = Rx<UserData?>(null);
@override
void onInit() {
@ -49,10 +48,14 @@ class DashboardScreenController extends GetxController {
}
getProfileDetail() async {
final resp = await ClientService().getUserDetails();
final resp = await ClientService().getUserDetails().showLoader();
if (resp is ProfileDataModel) {
myProfileData.value = resp.data?.staffMembers?.firstOrNull;
if (resp.success == true) {
myProfileData.value = resp.data?.users?.firstOrNull;
} else {
if (resp.message.isNotNullOrEmpty()) {
FrequentFunctions.showToast(message: resp.message!);
}
}
}

View File

@ -36,7 +36,7 @@ class ViewProfileScreenController extends GetxController {
addressTEC.text = d?.user?.modelId?.homeAddress ?? "";
});
detail.value = dashboardController.myProfileData();
// detail.value = dashboardController.myProfileData();
super.onInit();
}

View File

@ -14,12 +14,12 @@ void main() async {
GetTimeAgo.setCustomLocaleMessages('en', CustomTimeAgoMessages());
//Notification initialize
NotificationUtils.init();
try {
await FcmNotification.getInstance().init();
} catch (e) {
debugPrint("FcmNotification init error: $e");
}
// NotificationUtils.init();
// try {
// await FcmNotification.getInstance().init();
// } catch (e) {
// debugPrint("FcmNotification init error: $e");
// }
await LocalStorageManager.init();
Get.lazyPut(() => AppSessionManager(), fenix: true);

View File

@ -45,7 +45,7 @@ class _CustomDrawerState extends State<CustomDrawer> {
return MyCircleImage(
imageSize: 80.r,
url:
"${WebUrls.baseUrl}${DashboardScreenController.instance.myProfileData()?.user?.profilePictureUrl ?? ""}",
"${WebUrls.baseUrl}${DashboardScreenController.instance.myProfileData()?.profilePictureUrl ?? ""}",
errorWidget: CustomImageWidget(
imagePath: AssetsManager.kPersonMainIcon,
imageColor: CustomAppColors.kDarkBlueTextColor,
@ -61,7 +61,7 @@ class _CustomDrawerState extends State<CustomDrawer> {
() => CustomTextWidget(
text: DashboardScreenController.instance
.myProfileData()
?.staffMemberName ??
?.displayName ??
"",
textAlign: TextAlign.center,
fontColor: CustomAppColors.kBlackColor,
@ -69,16 +69,6 @@ class _CustomDrawerState extends State<CustomDrawer> {
fontSize: 14.sp,
),
),
Obx(
() => CustomTextWidget(
text: DashboardScreenController.instance
.myProfileData()
?.staffDesignation ??
"",
fontColor: CustomAppColors.kLightGreyColor,
fontSize: 10.sp,
fontWeight: FontWeight.w500),
),
],
),
),
@ -99,55 +89,6 @@ class _CustomDrawerState extends State<CustomDrawer> {
Navigator.pop(context);
dashboardController.selectedIndex.value = 1;
drawerController.selectedIndex.value = 1;
// Navigator.pushNamed(
// context,
// CustomRouteNames.kDashboardScreenRoute,
// );
}),
6.verticalSpace,
_getDrawerNavItem(
title: "Rota",
iconPath: AssetsManager.kPersonMainIcon,
color: CustomAppColors.kLightGreyColor,
selected: drawerController.selectedIndex.value == 0,
onTap: () {
Navigator.pop(context);
// dashboardController.selectedIndex.value = 0;
// drawerController.selectedIndex.value = 0;
Navigator.pushNamed(
context,
CustomRouteNames.kRotaDashboardScreenRoute,
);
}),
6.verticalSpace,
_getDrawerNavItem(
title: "Clients",
iconPath: AssetsManager.kPeopleIcon,
color: CustomAppColors.kLightGreyColor,
selected: drawerController.selectedIndex.value == 3,
onTap: () {
Navigator.pop(context);
dashboardController.selectedIndex.value = 3;
drawerController.selectedIndex.value = 3;
// Navigator.pushNamed(
// context,
// CustomRouteNames.kClientsListScreenRoute,
// );
}),
6.verticalSpace,
_getDrawerNavItem(
title: "Inbox",
iconPath: AssetsManager.kMessageIcon,
color: CustomAppColors.kLightGreyColor,
selected: drawerController.selectedIndex.value == 2,
onTap: () {
Navigator.pop(context);
dashboardController.selectedIndex.value = 2;
drawerController.selectedIndex.value = 2;
// Navigator.pushNamed(
// context,
// CustomRouteNames.kInboxScreenRoute,
// );
}),
6.verticalSpace,
_getDrawerNavItem(
@ -191,26 +132,7 @@ class _CustomDrawerState extends State<CustomDrawer> {
// CustomRouteNames.kNotificationListScreenRoute,
// );
}),
const Expanded(child: FrequentFunctions.noWidget),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
CustomTextWidget(
text: "Shift end at ",
fontColor: CustomAppColors.kLightGreyColor,
isExpanded: false,
fontSize: 16.sp,
fontWeight: FontWeight.w700,
),
CustomTextWidget(
text: "07Hrs 50Sec",
fontColor: CustomAppColors.kSecondaryColor,
isExpanded: false,
fontWeight: FontWeight.w700,
fontSize: 16.sp,
),
],
)
],
),
),

View File

@ -32,7 +32,7 @@ class _ClientProfileScreenState extends State<ClientProfileScreen> {
backgroundColor: CustomAppColors.kPrimaryColor,
screenKey: controller.screenKey,
onScreenTap: controller.removeFocus,
showAppBar: true,
showAppBar: false,
appBar: CustomAppBar(
leadingButton: Container(),
showBoxShadow: false,

View File

@ -15,6 +15,24 @@ class _DashboardScreenState extends State<DashboardScreen> {
@override
Widget build(BuildContext context) {
return CustomScaffold(
appBar: appBar,
backgroundColor: CustomAppColors.kPrimaryColor,
screenKey: controller.screenKey,
onScreenTap: controller.removeFocus,
showAppBar: true,
sideDrawer: const CustomDrawer(),
body: SafeArea(
child: Obx(() {
if (controller.myProfileData() == null) {
return FrequentFunctions.centerText(text: "No data found");
}
return ClientProfileScreen(userData: controller.myProfileData()!);
}),
),
);
return CustomScaffold(
appBar: appBar,
sideDrawer: const CustomDrawer(),

View File

@ -48,7 +48,7 @@ class HomeScreen extends StatelessWidget {
return MyCircleImage(
imageSize: 80.r,
url:
"${WebUrls.baseUrl}${DashboardScreenController.instance.myProfileData()?.user?.profilePictureUrl ?? ""}",
"${WebUrls.baseUrl}${DashboardScreenController.instance.myProfileData()?.profilePictureUrl ?? ""}",
errorWidget: CircleAvatar(
backgroundColor: Colors.white,
child: CustomImageWidget(
@ -67,7 +67,7 @@ class HomeScreen extends StatelessWidget {
() => CustomTextWidget(
text: DashboardScreenController.instance
.myProfileData()
?.staffMemberName ??
?.displayName ??
"",
fontSize: 14.sp,
fontWeight: FontWeight.w600,
@ -76,17 +76,17 @@ class HomeScreen extends StatelessWidget {
),
//designation
Obx(
() => CustomTextWidget(
text: DashboardScreenController.instance
.myProfileData()
?.staffDesignation ??
"",
fontSize: 14.sp,
fontColor: CustomAppColors.kPrimaryColor,
fontWeight: FontWeight.w600,
),
),
// Obx(
// () => CustomTextWidget(
// text: DashboardScreenController.instance
// .myProfileData()
// ?.staffDesignation ??
// "",
// fontSize: 14.sp,
// fontColor: CustomAppColors.kPrimaryColor,
// fontWeight: FontWeight.w600,
// ),
// ),
16.verticalSpace,
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,

View File

@ -11,6 +11,7 @@ import 'package:ftc_mobile_app/models/clients/recent_incidents_model.dart';
import 'package:ftc_mobile_app/models/clients/add_pbs_plan_model.dart';
import 'package:ftc_mobile_app/models/clients/riskAssessmentResponse/GetRiskAssessmentResponse.dart';
import 'package:ftc_mobile_app/models/clients/riskAssessmentResponse/RiskAssessmentData.dart';
import 'package:ftc_mobile_app/utilities/enums/api_method.dart';
import 'package:ftc_mobile_app/utilities/extensions/custom_extensions.dart';
import '../models/appointmentsListResponse/AppointmentsListResponse.dart';
import '../models/clients/HealthIssuesDetailsModel.dart';
@ -30,49 +31,29 @@ class ClientService {
final HttpRequestClient _httpClient = HttpRequestClient();
Future<dynamic> getUserDetails() async {
// String userJson = LocalStorageManager.getSessionToken(
// tokenKey: LocalStorageKeys.kUserModelKey,
// );
// UserModel userModel = UserModel.fromJson(json.decode(userJson));
Future<AllClientsResponse> getUserDetails() async {
Map<String, dynamic> requestBody = {
"sortproperty": "createdAt",
"sortorder": -1,
"offset": 0,
"limit": 1,
"query": {
"critarion": {
"active": true,
"_id": LocalStorageManager.userId,
// "_id": LocalStorageManager.userId,
"_id": "659535b08d2973ab265f1091"
},
"addedby": "_id email name",
"lastModifiedBy": "_id email name"
},
};
ResponseModel responseModel = await _httpClient.customRequest(
"POST",
url: WebUrls.userProfileUrl,
requestBody: requestBody,
requestHeader: {'Content-Type': 'application/json'},
isBearerHeaderRequired: true,
isBearer: true,
ResponseModel responseModel = await _httpClient.safeApiCall(
method: ApiMethod.post,
url: WebUrls.getServiceUsersListUrl,
body: requestBody,
);
if (responseModel.statusCode >= 200 &&
responseModel.statusCode <= 230 &&
responseModel.statusDescription.toLowerCase().contains("success")) {
final profileDataModel = ProfileDataModel.fromJson({
'status': "${responseModel.statusCode}",
"data": responseModel.data,
'message': responseModel.statusDescription,
});
// await LocalStorageManager.saveSession(
// tokenKey: LocalStorageKeys.kProfileModelKey,
// tokenValue: json.encode(profileDataModel.toJson()),
// );
return profileDataModel;
if ((responseModel.statusCode ~/ 100) == 2) {
final resp = AllClientsResponseData.fromJson(responseModel.data);
return AllClientsResponse(success: true, data: resp);
} else {
return responseModel.statusDescription;
return AllClientsResponse(success: false, message: responseModel.statusDescription);
}
}
@ -223,11 +204,6 @@ class ClientService {
responseModel.statusCode <= 230 &&
responseModel.statusDescription.toLowerCase().contains("success")) {
final resp = AllClientsResponseData.fromJson(responseModel.data);
// List<ServiceUserModel> serviceUsers = [];
// for (var singleUser in responseModel.data['serviceUsers']) {
// serviceUsers.add(ServiceUserModel.fromJson(singleUser));
// }
return AllClientsResponse(success: true, data: resp);
} else {
return AllClientsResponse(
@ -914,10 +890,7 @@ class ClientService {
url: WebUrls.getCarePlansListURL,
requestBody: {
"query": {
"critarion": {
"userId": serviceUserId,
"active": true
}
"critarion": {"userId": serviceUserId, "active": true}
},
"sortproperty": "eventDateTime",
"sortorder": -1,

View File

@ -53,6 +53,7 @@ dev_dependencies:
flutter_lints: ^2.0.0
flutter_launcher_icons: ^0.13.1
flutter_native_splash: ^2.2.11
change_app_package_name: ^1.3.0
# For generating Splash Screen
flutter_native_splash: