bug fixes for workorder detail view

design_3.0_latest
WaseemAbbasi22 11 months ago
parent e4dd92c4a9
commit 4954549594

@ -89,7 +89,7 @@ class WorkOrderData {
this.closedDate,
this.since,
this.cmFrame,
this.lastComment,
this.rejectComment,
this.callResponse,
required this.workOrderHistory,
required this.activities,
@ -143,7 +143,7 @@ class WorkOrderData {
String? iHaveArrivedDate;
String? closedDate;
Lookup? rejectReason;
String? lastComment; // need to replace with reject comments.
String? rejectComment; // need to replace with reject comments.
String? callResponse; // need to replace with reject comments.
int? since;
List<WorkOrderHistory> workOrderHistory;
@ -166,7 +166,7 @@ class WorkOrderData {
floor: json["floor"] == null ? null : Lookup.fromJson(json["floor"]),
department: json["department"] == null ? null : AssetGroup.fromJson(json["department"]),
room: json["room"],
lastComment: json["lastComment"],
rejectComment: json["rejectComment"],
callResponse: json["callResponse"],
iHaveArrivedDate: json["iHaveArrivedDate"],
closedDate: json["closedDate"],
@ -527,9 +527,9 @@ class WorkOrderContactPerson {
String? name;
String? employeeId;
String? position;
String extension;
String? extension;
String? email;
String mobilePhone;
String ?mobilePhone;
WorkOrderAssignedEmployee? contactUser;
factory WorkOrderContactPerson.fromJson(Map<String, dynamic> json) {
@ -642,6 +642,7 @@ class ActivityMaintenance {
String? supplierStartTime;
String? supplierEndTime;
double? supplierWorkingHours;
String? activityType;
List<ActivityMaintenanceAssistantEmployees>? assistantEmployees;
List<ActivityMaintenanceTimers>? activityMaintenanceTimers;
@ -661,6 +662,7 @@ class ActivityMaintenance {
this.supplierEngineer,
this.supplierStartTime,
this.supplierEndTime,
this.activityType,
this.supplierWorkingHours,
this.assistantEmployees});
@ -670,6 +672,7 @@ class ActivityMaintenance {
startTime = json['startTime'];
endTime = json['endTime'];
workingHours = json['workingHours'];
activityType = json['activityType'];
travelHours = json['travelHours'];
lastSituation = json['lastSituation'] != null ? Lookup.fromJson(json['lastSituation']) : null;
repairLocation = json['repairLocation'] != null ? Lookup.fromJson(json['repairLocation']) : null;

@ -47,6 +47,7 @@ class AppColor {
static const Color white60 = Color(0xffEFEFEF);
static const Color white70 = Color(0xffF1F1F1);
static const Color white80 = Color(0xffF2F4FA);
static const Color white90 = Color(0xffBFD1E4);
static const Color white936 = Color(0xff212936);
//black
@ -137,6 +138,27 @@ class AppColor {
return Colors.white;
}
}
static Color getActivityTypeBgColor(String type) {
switch (type) {
case "Internal":
return neutral50;
case "External":
return white90;
default:
return primary10;
}
}
static Color getActivityTypeTextColor(String type) {
switch (type) {
case "Internal":
return white10;
case "External":
return black10;
default:
return Colors.white;
}
}
static Color getHistoryLogStatusColorByName(String status) {
switch ((status).toLowerCase()) {

@ -225,7 +225,8 @@ class ServiceRequestDetailProvider extends ChangeNotifier {
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
currentWorkOrder = WorkOrderDetail.fromJson(json.decode(response.body));
if (currentWorkOrder?.data?.status?.id == 3498) {
//need to check on value as id changed on different env.
if (currentWorkOrder?.data?.status?.value == 3 || currentWorkOrder?.data?.status?.value == 5 || currentWorkOrder?.data?.status?.value == 6) {
isReadOnlyRequest = true;
} else {
isReadOnlyRequest = false;

@ -60,7 +60,6 @@ class FooterActionButton {
case WorkOrderNextStepEnum.nTakeAction:
// const SizedBox().flushBar(context: context, title: context.translation.youMarkedThisIssueAsFixedWaitingForTheRequesterToConfirm, message: '');
//Need to add enum for these values in future instead of static values..
if (requestDetailProvider.isReadOnlyRequest) {
return footerContainer(
child: AppFilledButton(

@ -275,13 +275,26 @@ class _ActivitiesListViewState extends State<ActivitiesListView> {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
//TODO will be here when fixed from backend..
StatusLabel(
label: activity.activityStatus?.name,
textColor: AppColor.white10,
// textColor: AppColor.getHistoryLogStatusTextColorByName(activity.activityStatus!.name!),
// backgroundColor: AppColor.getHistoryLogStatusColorByName(activity.activityStatus!.name!),
backgroundColor: AppColor.primary10,
Row(
children: [
StatusLabel(
label: activity.activityStatus?.name,
textColor: AppColor.white10,
// textColor: AppColor.getHistoryLogStatusTextColorByName(activity.activityStatus!.name!),
// backgroundColor: AppColor.getHistoryLogStatusColorByName(activity.activityStatus!.name!),
backgroundColor: AppColor.primary10,
),
5.width,
StatusLabel(
label: activity.activityMaintenance?.activityType,
// textColor: AppColor.white10,
textColor: AppColor.getActivityTypeTextColor(activity.activityMaintenance?.activityType??''),
backgroundColor: AppColor.getActivityTypeBgColor(activity.activityMaintenance?.activityType??''),
// backgroundColor: AppColor.primary10,
),
],
),
// "drag_icon".toSvgAsset(height: 12, width: 23, color: AppColor.neutral160),
if (userProvider.user!.type == UsersTypes.engineer && requestDetailProvider.currentWorkOrder?.data?.status?.value != 5 && requestDetailProvider.currentWorkOrder?.data?.status?.value != 3)
Row(

@ -27,25 +27,37 @@ class AssetDetailCard extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
StatusLabel(
label: requestDetailProvider.engineerUpdateWorkOrderHelperModel?.equipmentStatus?.name,
id: requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus!.id ?? 0,
radius: 4,
textColor: AppColor.white10,
backgroundColor: AppColor.getEquipmentStatusColor(context, requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus!.id ?? 0),
Row(
children: [
StatusLabel(
label: requestDetailProvider.engineerUpdateWorkOrderHelperModel?.equipmentStatus?.name,
id: requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus!.id ?? 0,
radius: 4,
textColor: AppColor.white10,
backgroundColor: AppColor.getEquipmentStatusColor(context, requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus!.id ?? 0),
),
5.width,
StatusLabel(
label: requestDetailProvider.engineerUpdateWorkOrderHelperModel?.serviceType?.name,
id: requestDetailProvider.engineerUpdateWorkOrderHelperModel?.serviceType?.id ?? 0,
radius: 4,
textColor: AppColor.getActivityTypeTextColor(requestDetailProvider.engineerUpdateWorkOrderHelperModel!.serviceType?.name ?? ''),
backgroundColor: AppColor.getActivityTypeBgColor(requestDetailProvider.engineerUpdateWorkOrderHelperModel!.serviceType?.name ?? ''),
),
],
),
//hide if status is closed.
if(!requestDetailProvider.isReadOnlyRequest)
"edit_icon".toSvgAsset(height: 21, width: 21).onPress(() async{
requestDetailProvider.refreshTimer = false;
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => VerifyAssetDetails(
isEdit: true,
)));
requestDetailProvider.refreshTimer = true;
}),
//hide if status is closed or complete .
if (!requestDetailProvider.isReadOnlyRequest)
"edit_icon".toSvgAsset(height: 21, width: 21).onPress(() async {
requestDetailProvider.refreshTimer = false;
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => VerifyAssetDetails(
isEdit: true,
)));
requestDetailProvider.refreshTimer = true;
}),
]),
6.height,
Text(

@ -34,12 +34,13 @@ class ServiceRequestDetailView extends StatefulWidget {
}
class _ServiceRequestDetailViewState extends State<ServiceRequestDetailView> {
List<AttachmentModel> _workOrderAttachments = [];
List<File> _workOrderAttachments = [];
@override
void initState() {
ServiceRequestDetailProvider requestDetailProvider = Provider.of<ServiceRequestDetailProvider>(context, listen: false);
_workOrderAttachments = requestDetailProvider.currentWorkOrder?.data?.workOrderAttachments.map((e) => AttachmentModel(e.id??0, File(e.name ?? ''))).toList() ?? [];
_workOrderAttachments = requestDetailProvider.currentWorkOrder?.data?.workOrderAttachments.map((e) => File(e.name ?? '')).toList() ?? [];
// _workOrderAttachments = requestDetailProvider.currentWorkOrder?.data?.workOrderAttachments.map((e) => AttachmentModel(e.id??0, File(e.name ?? ''))).toList() ?? [];
super.initState();
}
@ -79,9 +80,10 @@ class _ServiceRequestDetailViewState extends State<ServiceRequestDetailView> {
context: context),
],
),
if (requestProvider.timer != null && requestProvider.timer!.isActive) ...[
const TimerWidget(),
]
//no need to show timer as discussed with backend
// if (requestProvider.timer != null && requestProvider.timer!.isActive) ...[
// const TimerWidget(),
// ]
],
);
});
@ -255,10 +257,10 @@ class _ServiceRequestDetailViewState extends State<ServiceRequestDetailView> {
'${context.translation.callResponse}: ${workOrder.callResponse ?? "-"}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
Text(
'${context.translation.since}: ${workOrder.since != null ? '${workOrder.since} days' : '-'}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
// Text(
// '${context.translation.since}: ${workOrder.since != null ? '${workOrder.since} days' : '-'}',
// style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
// ),
8.height,
if (workOrder.rejectReason != null) ...[
@ -275,7 +277,7 @@ class _ServiceRequestDetailViewState extends State<ServiceRequestDetailView> {
),
8.height,
Text(
'${context.translation.comment}: ${workOrder.lastComment ?? '-'}',
'${context.translation.comment}: ${workOrder.rejectComment ?? '-'}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
],
@ -296,17 +298,17 @@ class _ServiceRequestDetailViewState extends State<ServiceRequestDetailView> {
8.height,
const Divider().defaultStyle(context),
AttachmentPicker(
MultiFilesPicker(
label: context.translation.attachments,
// files: _workOrderAttachments,
attachment: _workOrderAttachments,
files: _workOrderAttachments,
// attachment: _workOrderAttachments,
buttonColor: AppColor.primary10,
onlyImages: false,
buttonIcon: 'quotation_icon'.toSvgAsset(color: AppColor.primary10),
onChange: (attachment) {
print('i am called.');
// print('attachment value is ${attachment.last.file?.path}');
// requestProvider.addWorkOrderAttachment(woId: workOrder.requestId!, attachments: _workOrderAttachments);
requestProvider.addWorkOrderAttachment(woId: workOrder.requestId!, attachments: _workOrderAttachments);
},
),
@ -401,27 +403,27 @@ class _ServiceRequestDetailViewState extends State<ServiceRequestDetailView> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'${workOrder.workOrderContactPerson[index].name}',
'${workOrder.workOrderContactPerson[index].name??'-'}',
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
Text(
'${context.translation.employeeId}: ${workOrder.workOrderContactPerson[index].employeeId}',
'${context.translation.employeeId}: ${workOrder.workOrderContactPerson[index].employeeId??'-'}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
Text(
'${context.translation.telephone}: ${workOrder.workOrderContactPerson[index].mobilePhone}',
'${context.translation.telephone}: ${workOrder.workOrderContactPerson[index].mobilePhone??'-'}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
Text(
'Job: ${workOrder.workOrderContactPerson[index].position}',
'Job: ${workOrder.workOrderContactPerson[index].position??'-'}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
Text(
'${context.translation.email}: ${workOrder.workOrderContactPerson[index].email}',
'${context.translation.email}: ${workOrder.workOrderContactPerson[index].email??'-'}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
Text(
'Extension: ${workOrder.workOrderContactPerson[index].extension}',
'Extension: ${workOrder.workOrderContactPerson[index].extension??'-'}',
style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
),
],

@ -18,7 +18,7 @@ import 'package:test_sa/service_request_latest/views/forms/maintenance_request/c
import 'package:test_sa/service_request_latest/views/forms/maintenance_request/components/internal_request.dart';
class MaintenanceRequestForm extends StatefulWidget {
MaintenanceRequestForm({Key? key}) : super(key: key);
MaintenanceRequestForm({Key? key}) : super(key: key);
@override
_MaintenanceRequestFormState createState() => _MaintenanceRequestFormState();
@ -51,9 +51,11 @@ class _MaintenanceRequestFormState extends State<MaintenanceRequestForm> with Si
backgroundColor: AppColor.neutral110,
appBar: DefaultAppBar(
title: "CM Activity",
onWillPopScope: () {
save(requestDetailProvider);
},
onWillPopScope: requestDetailProvider.isReadOnlyRequest
? null
: () {
save(requestDetailProvider);
},
),
body: Stack(
children: [
@ -97,19 +99,20 @@ class _MaintenanceRequestFormState extends State<MaintenanceRequestForm> with Si
],
),
),
FooterActionButton.footerContainer(
child: AppFilledButton(
label: requestDetailProvider.activityMaintenanceHelperModel?.id != 0 ? context.translation.update : context.translation.addActivity, // Use the dynamic label
buttonColor: AppColor.primary10,
onPressed: () async {
save(requestDetailProvider);
},
if (!requestDetailProvider.isReadOnlyRequest)
FooterActionButton.footerContainer(
child: AppFilledButton(
label: requestDetailProvider.activityMaintenanceHelperModel?.id != 0 ? context.translation.update : context.translation.addActivity, // Use the dynamic label
buttonColor: AppColor.primary10,
onPressed: () async {
save(requestDetailProvider);
},
),
),
),
],
),
).handlePopScope(context, () {
save(requestDetailProvider);
requestDetailProvider.isReadOnlyRequest ? null : save(requestDetailProvider);
});
});
}

Loading…
Cancel
Save