missing information added on sitehistory screen

export_module_ui_ux_enhancement_signup
WaseemAbbasi22 4 weeks ago
parent c0c165eba4
commit 69c09f7bd0

@ -9,6 +9,7 @@ class SiteRequestModel {
final String emailAddress;
final String mobileNumber;
final String? extensionNumber;
final String? returnReason;
final List<String> siteIds;
final List<String> siteNames;
final List<String>? 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<String>? siteIds,
List<String>? siteNames,
List<String>? 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<String>? oldDepartmentIds;
List<String>? 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 = [];

@ -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<SiteRequestHistoryScreen> {
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<SiteRequestHistoryScreen> {
}
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<SiteRequestHistoryScreen> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
InfoTextLabelWidget(
label: "Old Sites:",
label: "Old Sites:",
),
8.height,
Wrap(
@ -256,13 +281,8 @@ class _SiteRequestHistoryScreenState extends State<SiteRequestHistoryScreen> {
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<SiteRequestHistoryScreen> {
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,

Loading…
Cancel
Save