From 69c09f7bd0c721d88a7638d93221ccc0d1d192f3 Mon Sep 17 00:00:00 2001 From: WaseemAbbasi22 <50428976+WaseemAbbasi22@users.noreply.github.com> Date: Sun, 12 Jul 2026 12:05:55 +0300 Subject: [PATCH] missing information added on sitehistory screen --- .../models/site_request_model.dart | 29 +++++++- .../screens/site_request_history_screen.dart | 69 ++++++++++++------- 2 files changed, 74 insertions(+), 24 deletions(-) diff --git a/lib/modules/site_request_module/models/site_request_model.dart b/lib/modules/site_request_module/models/site_request_model.dart index 932100a9..ea4169b3 100644 --- a/lib/modules/site_request_module/models/site_request_model.dart +++ b/lib/modules/site_request_module/models/site_request_model.dart @@ -9,6 +9,7 @@ class SiteRequestModel { final String emailAddress; final String mobileNumber; final String? extensionNumber; + final String? returnReason; final List siteIds; final List siteNames; final List? oldSiteIds; // For Change Site request @@ -40,6 +41,7 @@ class SiteRequestModel { this.oldDepartmentNames, required this.role, this.status, + this.returnReason, this.requestDate, }); @@ -81,6 +83,7 @@ class SiteRequestModel { mobileNumber: json['mobileNumber'] ?? '', extensionNumber: json['extensionNo'] ?? json['extensionNumber'], siteIds: sitesData['siteIds'], + returnReason: json['returnReason'], siteNames: sitesData['siteNames'], oldSiteIds: sitesData['oldSiteIds'], oldSiteNames: sitesData['oldSiteNames'], @@ -103,6 +106,7 @@ class SiteRequestModel { String? emailAddress, String? mobileNumber, String? extensionNumber, + String? returnReason, List? siteIds, List? siteNames, List? oldSiteIds, @@ -130,6 +134,7 @@ class SiteRequestModel { departmentNames: departmentNames ?? this.departmentNames, role: role ?? this.role, status: status ?? this.status, + returnReason: returnReason ?? this.returnReason, requestDate: requestDate ?? this.requestDate, ); } @@ -170,7 +175,29 @@ class SiteRequestModel { List? oldDepartmentIds; List? oldDepartmentNames; - if (json['departments'] != null && + // Check if departments are nested within sites array + if (json['sites'] != null && json['sites'] is List) { + for (var site in json['sites']) { + if (site['departments'] != null && site['departments'] is List) { + for (var dept in site['departments']) { + departmentIds ??= []; + departmentNames ??= []; + departmentIds.add(dept['departmentId']?.toString() ?? ''); + departmentNames.add(dept['departmentName'] ?? ''); + + // Check for old department data in Change Site requests + if (dept['oldDepartmentId'] != null && dept['oldDepartmentId'] != 0) { + oldDepartmentIds ??= []; + oldDepartmentNames ??= []; + oldDepartmentIds.add(dept['oldDepartmentId']?.toString() ?? ''); + oldDepartmentNames.add(dept['oldDepartmentName'] ?? ''); + } + } + } + } + } + // Fallback: check if departments are at root level (for backward compatibility) + else if (json['departments'] != null && json['departments'] is List && (json['departments'] as List).isNotEmpty) { departmentIds = []; diff --git a/lib/modules/site_request_module/screens/site_request_history_screen.dart b/lib/modules/site_request_module/screens/site_request_history_screen.dart index 3641130f..cc50aeca 100644 --- a/lib/modules/site_request_module/screens/site_request_history_screen.dart +++ b/lib/modules/site_request_module/screens/site_request_history_screen.dart @@ -1,7 +1,10 @@ +import 'dart:developer'; + import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/extensions/int_extensions.dart'; +import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/modules/site_request_module/models/site_request_model.dart'; @@ -10,6 +13,7 @@ import 'package:test_sa/modules/site_request_module/screens/site_request_form_sc import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/app_style/app_text_styles.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; +import 'package:test_sa/views/widgets/loaders/app_loading.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; import 'package:test_sa/views/widgets/item_views/info_date_widget.dart'; import 'package:test_sa/views/widgets/item_views/info_header_widget.dart'; @@ -136,7 +140,7 @@ class _SiteRequestHistoryScreenState extends State { itemCount: _provider.requestHistory.length + (_provider.isLoadingMore ? 1 : 0), itemBuilder: (context, index) { if (index == _provider.requestHistory.length) { - return const Center(child: CircularProgressIndicator()); + return const ALoading(); } return _buildRequestCard(_provider.requestHistory[index]); @@ -197,17 +201,38 @@ class _SiteRequestHistoryScreenState extends State { } Widget _buildUserInfo(SiteRequestModel request) { + log('return reason: ${request.returnReason}'); return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - InfoTextWidget(label: "Full Name", value: request.fullName), - InfoTextWidget(label: "Employee ID", value: request.employeeId), - InfoTextWidget(label: "Email", value: request.emailAddress), + InfoTextWidget( + label: "Full Name", + value: request.fullName, + showEmptyValue: true, + ), + InfoTextWidget( + label: "Employee ID", + value: request.employeeId, + showEmptyValue: true, + ), + InfoTextWidget( + label: "Email", + value: request.emailAddress, + showEmptyValue: true, + ), InfoTextWidget(label: "Mobile", value: request.mobileNumber, showEmptyValue: true), - if (request.extensionNumber != null && request.extensionNumber!.isNotEmpty) ...[ - InfoTextWidget(label: "Extension", value: request.extensionNumber!, showEmptyValue: true), - ], - InfoTextWidget(label: "Role", value: request.role), + InfoTextWidget(label: "Extension", value: request.extensionNumber, showEmptyValue: true), + InfoTextWidget( + label: "Role", + value: request.role, + showEmptyValue: true, + ), + if( request.returnReason != null && request.returnReason!.isNotEmpty) + InfoTextWidget( + label: "Return Reason".addTranslation, + value: request.returnReason, + showEmptyValue: true, + ), ], ); } @@ -217,7 +242,7 @@ class _SiteRequestHistoryScreenState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ InfoTextLabelWidget( - label: "Old Sites:", + label: "Old Sites:", ), 8.height, Wrap( @@ -256,13 +281,8 @@ class _SiteRequestHistoryScreenState extends State { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - "Old Departments:", - style: TextStyle( - fontSize: 14, - color: AppColor.labelTextStyleColor(context), - fontWeight: FontWeight.w500, - ), + InfoTextLabelWidget( + label: "Old Departments:".addTranslation, ), 8.height, Wrap( @@ -284,14 +304,17 @@ class _SiteRequestHistoryScreenState extends State { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - label, - style: TextStyle( - fontSize: 14, - color: AppColor.labelTextStyleColor(context), - fontWeight: FontWeight.w500, - ), + InfoTextLabelWidget( + label: label, ), + // Text( + // label, + // style: TextStyle( + // fontSize: 14, + // color: AppColor.labelTextStyleColor(context), + // fontWeight: FontWeight.w500, + // ), + // ), 8.height, Wrap( runSpacing: 4.toScreenHeight,