reorder activities added.

design_3.0_latest
Sikander Saleem 1 year ago
parent 71d4ba43de
commit 298a102f67

@ -30,8 +30,7 @@ class WorkOrderDetail {
); );
} }
Map<String, dynamic> toJson() => Map<String, dynamic> toJson() => {
{
"data": data?.toJson(), "data": data?.toJson(),
"message": message, "message": message,
"title": title, "title": title,
@ -86,48 +85,49 @@ class WorkOrderData {
required this.activities, required this.activities,
required this.activityAssetToBeRetireds, required this.activityAssetToBeRetireds,
}); });
int? requestId; int? requestId;
String? workOrderNo; String? workOrderNo;
WorkOrderAssignedEmployee? workOrderCreatedBy; WorkOrderAssignedEmployee? workOrderCreatedBy;
DateTime? requestedDate; DateTime? requestedDate;
WorkOrderAsset? asset; WorkOrderAsset? asset;
Lookup? assetGroup; Lookup? assetGroup;
Lookup? manufacturer; Lookup? manufacturer;
Lookup? model; Lookup? model;
Lookup? assetNdModel; Lookup? assetNdModel;
Site? site; Site? site;
Lookup? building; Lookup? building;
Lookup? floor; Lookup? floor;
AssetGroup? department; AssetGroup? department;
int? room; int? room;
Lookup? assetType; Lookup? assetType;
WorkOrderAssignedEmployee? assignedEmployee; WorkOrderAssignedEmployee? assignedEmployee;
String? lastActivityStatus; String? lastActivityStatus;
Lookup? status; Lookup? status;
Lookup? nextStep; Lookup? nextStep;
int? assetVerificationType; int? assetVerificationType;
List<WorkOrderContactPerson> workOrderContactPerson; List<WorkOrderContactPerson> workOrderContactPerson;
Lookup? equipmentStatus; Lookup? equipmentStatus;
Lookup? priority; Lookup? priority;
Lookup? requestedThrough; Lookup? requestedThrough;
Lookup? typeofRequest; Lookup? typeofRequest;
Lookup? loanAvailablity; Lookup? loanAvailablity;
Lookup? assetLoan; Lookup? assetLoan;
Lookup? safety; Lookup? safety;
Lookup? problemDescription; Lookup? problemDescription;
String? comments; String? comments;
String? voiceNote; String? voiceNote;
List<WorkOrderAttachments> workOrderAttachments; List<WorkOrderAttachments> workOrderAttachments;
String? returnToService; String? returnToService;
Lookup? serviceType; Lookup? serviceType;
Lookup? failureReasone; Lookup? failureReasone;
Lookup? solution; Lookup? solution;
String? totalWorkingHours; String? totalWorkingHours;
DateTime? needAVisitDateTime; DateTime? needAVisitDateTime;
String?needAVisitComment; String? needAVisitComment;
List<WorkOrderHistory> workOrderHistory; List<WorkOrderHistory> workOrderHistory;
List<Activities> activities; List<Activities> activities;
List<dynamic> activityAssetToBeRetireds; List<dynamic> activityAssetToBeRetireds;
factory WorkOrderData.fromJson(Map<String, dynamic> json) { factory WorkOrderData.fromJson(Map<String, dynamic> json) {
return WorkOrderData( return WorkOrderData(
@ -162,7 +162,7 @@ class WorkOrderData {
problemDescription: json["problemDescription"] == null ? null : Lookup.fromJson(json["problemDescription"]), problemDescription: json["problemDescription"] == null ? null : Lookup.fromJson(json["problemDescription"]),
comments: json["comments"], comments: json["comments"],
voiceNote: json["voiceNote"], voiceNote: json["voiceNote"],
workOrderAttachments: json["workOrderAttachments"] == null ? [] : List.from(json['workOrderAttachments']).map((e)=>WorkOrderAttachments.fromJson(e)).toList(), workOrderAttachments: json["workOrderAttachments"] == null ? [] : List.from(json['workOrderAttachments']).map((e) => WorkOrderAttachments.fromJson(e)).toList(),
returnToService: json["returnToService"], returnToService: json["returnToService"],
serviceType: json["serviceType"] == null ? null : Lookup.fromJson(json["serviceType"]), serviceType: json["serviceType"] == null ? null : Lookup.fromJson(json["serviceType"]),
failureReasone: json["failureReasone"] == null ? null : Lookup.fromJson(json["failureReasone"]), failureReasone: json["failureReasone"] == null ? null : Lookup.fromJson(json["failureReasone"]),
@ -176,8 +176,7 @@ class WorkOrderData {
); );
} }
Map<String, dynamic> toJson() => Map<String, dynamic> toJson() => {
{
"id": requestId, "id": requestId,
"workOrderNo": workOrderNo, "workOrderNo": workOrderNo,
"workOrderCreatedBy": workOrderCreatedBy?.toJson(), "workOrderCreatedBy": workOrderCreatedBy?.toJson(),
@ -210,7 +209,7 @@ class WorkOrderData {
"problemDescription": problemDescription?.toJson(), "problemDescription": problemDescription?.toJson(),
"comments": comments, "comments": comments,
"voiceNote": voiceNote, "voiceNote": voiceNote,
"workOrderAttachments": workOrderAttachments.map((e)=>e.toJson()).toList(), "workOrderAttachments": workOrderAttachments.map((e) => e.toJson()).toList(),
"returnToService": returnToService, "returnToService": returnToService,
"serviceType": serviceType?.toJson(), "serviceType": serviceType?.toJson(),
"failureReasone": failureReasone?.toJson(), "failureReasone": failureReasone?.toJson(),
@ -220,22 +219,33 @@ class WorkOrderData {
"activities": activities.map((x) => x.toJson()).toList(), "activities": activities.map((x) => x.toJson()).toList(),
"activityAssetToBeRetireds": activityAssetToBeRetireds.map((x) => x).toList(), "activityAssetToBeRetireds": activityAssetToBeRetireds.map((x) => x).toList(),
}; };
Map<String, dynamic> toFixRemotelyJson() { Map<String, dynamic> toFixRemotelyJson() {
return {'workOrderId': workOrderNo, 'startDate': workOrderHistory.isNotEmpty? workOrderHistory[0].fixRemotlyStartTime:'', 'endDate': workOrderHistory.isNotEmpty? workOrderHistory[0].fixRemotlyEndTime:'', 'workingHour':'', 'comment': comments}; return {
'workOrderId': workOrderNo,
'startDate': workOrderHistory.isNotEmpty ? workOrderHistory[0].fixRemotlyStartTime : '',
'endDate': workOrderHistory.isNotEmpty ? workOrderHistory[0].fixRemotlyEndTime : '',
'workingHour': '',
'comment': comments
};
} }
//TODO feedback not defined... //TODO feedback not defined...
Map<String, dynamic> toMarkAsFixedJson() { Map<String, dynamic> toMarkAsFixedJson() {
return {'workOrderId': workOrderNo, 'feedback': comments}; return {'workOrderId': workOrderNo, 'feedback': comments};
} }
Map<String, dynamic> toNeedVisitJson() { Map<String, dynamic> toNeedVisitJson() {
return {'workOrderId': workOrderNo, 'visitDate': workOrderHistory.isNotEmpty? workOrderHistory[0].needAVisitDateTime:'', 'comment': comments}; return {'workOrderId': workOrderNo, 'visitDate': workOrderHistory.isNotEmpty ? workOrderHistory[0].needAVisitDateTime : '', 'comment': comments};
} }
//TODO signatureNurse not defined... //TODO signatureNurse not defined...
Map<String, dynamic> toNurseActionJson() { Map<String, dynamic> toNurseActionJson() {
return {'workOrderId': workOrderNo, 'feedback': '', 'signatureNurse': 'signatureNurse'}; return {'workOrderId': workOrderNo, 'feedback': '', 'signatureNurse': 'signatureNurse'};
} }
Map<String, dynamic> toWorkOrderJson() { Map<String, dynamic> toWorkOrderJson() {
final Map<String, dynamic> data = <String, dynamic>{}; final Map<String, dynamic> data = <String, dynamic>{};
data['workOrderId'] = requestId; data['workOrderId'] = requestId;
data['equipmentStatusId'] = equipmentStatus?.id; data['equipmentStatusId'] = equipmentStatus?.id;
data['returnToService'] = returnToService; data['returnToService'] = returnToService;
@ -255,8 +265,8 @@ class WorkOrderAsset {
required this.assetNumber, required this.assetNumber,
}); });
int? id; int? id;
String? assetNumber; String? assetNumber;
factory WorkOrderAsset.fromJson(Map<String, dynamic> json) { factory WorkOrderAsset.fromJson(Map<String, dynamic> json) {
return WorkOrderAsset( return WorkOrderAsset(
@ -265,8 +275,7 @@ class WorkOrderAsset {
); );
} }
Map<String, dynamic> toJson() => Map<String, dynamic> toJson() => {
{
"id": id, "id": id,
"assetNumber": assetNumber, "assetNumber": assetNumber,
}; };
@ -278,8 +287,8 @@ class AssetGroup {
required this.name, required this.name,
}); });
int? id; int? id;
String? name; String? name;
factory AssetGroup.fromJson(Map<String, dynamic> json) { factory AssetGroup.fromJson(Map<String, dynamic> json) {
return AssetGroup( return AssetGroup(
@ -288,8 +297,7 @@ class AssetGroup {
); );
} }
Map<String, dynamic> toJson() => Map<String, dynamic> toJson() => {
{
"id": id, "id": id,
"name": name, "name": name,
}; };
@ -303,10 +311,10 @@ class WorkOrderAssignedEmployee {
required this.languageId, required this.languageId,
}); });
dynamic userId; dynamic userId;
String? userName; String? userName;
String? email; String? email;
int? languageId; int? languageId;
factory WorkOrderAssignedEmployee.fromJson(Map<String, dynamic> json) { factory WorkOrderAssignedEmployee.fromJson(Map<String, dynamic> json) {
return WorkOrderAssignedEmployee( return WorkOrderAssignedEmployee(
@ -317,48 +325,36 @@ class WorkOrderAssignedEmployee {
); );
} }
Map<String, dynamic> toJson() => Map<String, dynamic> toJson() => {
{
"userId": userId, "userId": userId,
"userName": userName, "userName": userName,
"email": email, "email": email,
"languageId": languageId, "languageId": languageId,
}; };
} }
class Activities { class Activities {
int? id; int? id;
int? orderNo; int? orderNo;
ActivityStatus? activityStatus; ActivityStatus? activityStatus;
ActivityMaintenance? activityMaintenance; ActivityMaintenance? activityMaintenance;
ActivitySparePart? activitySparePart; ActivitySparePart? activitySparePart;
String ?activityType; String? activityType;
Activities( Activities({this.id, this.orderNo, this.activityStatus, this.activityMaintenance, this.activityType, this.activitySparePart});
{this.id,
this.orderNo,
this.activityStatus,
this.activityMaintenance,
this.activityType,
this.activitySparePart});
Activities.fromJson(Map<String, dynamic> json) { Activities.fromJson(Map<String, dynamic> json) {
id = json['id']; id = json['id'];
orderNo = json['orderNo']; orderNo = json['orderNo'];
activityStatus = json['activityStatus'] != null activityStatus = json['activityStatus'] != null ? ActivityStatus.fromJson(json['activityStatus']) : null;
? ActivityStatus.fromJson(json['activityStatus']) activityMaintenance = json['activityMaintenance'] != null ? ActivityMaintenance.fromJson(json['activityMaintenance']) : null;
: null; if (activityMaintenance != null) {
activityMaintenance = json['activityMaintenance'] != null activityType = 'Maintenance Request';
? ActivityMaintenance.fromJson(json['activityMaintenance'])
: null;
if(activityMaintenance!=null){
activityType='Maintenance Request';
} }
activitySparePart = json['activitySparePart'] != null activitySparePart = json['activitySparePart'] != null ? ActivitySparePart.fromJson(json['activitySparePart']) : null;
? ActivitySparePart.fromJson(json['activitySparePart']) if (activitySparePart != null) {
: null; activityType = 'Spare Part Request';
if(activitySparePart!=null){
activityType='Spare Part Request';
} }
} }
@ -408,18 +404,11 @@ class ActivitySparePart {
String? comment; String? comment;
List<SparePartAttachments>? acitiySparePartAttachments; List<SparePartAttachments>? acitiySparePartAttachments;
ActivitySparePart( ActivitySparePart({this.id, this.partCatalogItem, this.quantity, this.comment, this.acitiySparePartAttachments});
{this.id,
this.partCatalogItem,
this.quantity,
this.comment,
this.acitiySparePartAttachments});
ActivitySparePart.fromJson(Map<String, dynamic> json) { ActivitySparePart.fromJson(Map<String, dynamic> json) {
id = json['id']; id = json['id'];
partCatalogItem = json['partCatalogItem'] != null partCatalogItem = json['partCatalogItem'] != null ? new PartCatalogItem.fromJson(json['partCatalogItem']) : null;
? new PartCatalogItem.fromJson(json['partCatalogItem'])
: null;
quantity = json['quantity']; quantity = json['quantity'];
comment = json['comment']; comment = json['comment'];
if (json['acitiySparePartAttachments'] != null) { if (json['acitiySparePartAttachments'] != null) {
@ -439,8 +428,7 @@ class ActivitySparePart {
data['quantity'] = quantity; data['quantity'] = quantity;
data['comment'] = comment; data['comment'] = comment;
if (acitiySparePartAttachments != null) { if (acitiySparePartAttachments != null) {
data['acitiySparePartAttachments'] = data['acitiySparePartAttachments'] = acitiySparePartAttachments!.map((v) => v.toJson()).toList();
acitiySparePartAttachments!.map((v) => v.toJson()).toList();
} }
return data; return data;
} }
@ -468,15 +456,14 @@ class PartCatalogItem {
} }
} }
class Site { class Site {
Site({ Site({
required this.id, required this.id,
required this.siteName, required this.siteName,
}); });
int? id; int? id;
String? siteName; String? siteName;
factory Site.fromJson(Map<String, dynamic> json) { factory Site.fromJson(Map<String, dynamic> json) {
return Site( return Site(
@ -485,8 +472,7 @@ class Site {
); );
} }
Map<String, dynamic> toJson() => Map<String, dynamic> toJson() => {
{
"id": id, "id": id,
"siteName": siteName, "siteName": siteName,
}; };
@ -504,14 +490,14 @@ class WorkOrderContactPerson {
required this.contactUser, required this.contactUser,
}); });
int? id; int? id;
String? name; String? name;
String? employeeId; String? employeeId;
String? position; String? position;
dynamic extension; dynamic extension;
String? email; String? email;
dynamic mobilePhone; dynamic mobilePhone;
WorkOrderAssignedEmployee? contactUser; WorkOrderAssignedEmployee? contactUser;
factory WorkOrderContactPerson.fromJson(Map<String, dynamic> json) { factory WorkOrderContactPerson.fromJson(Map<String, dynamic> json) {
return WorkOrderContactPerson( return WorkOrderContactPerson(
@ -526,8 +512,7 @@ class WorkOrderContactPerson {
); );
} }
Map<String, dynamic> toJson() => Map<String, dynamic> toJson() => {
{
"id": id, "id": id,
"name": name, "name": name,
"employeeId": employeeId, "employeeId": employeeId,
@ -554,17 +539,17 @@ class WorkOrderHistory {
required this.needAVisitDateTime, required this.needAVisitDateTime,
}); });
int? id; int? id;
Lookup? workorderStatus; Lookup? workorderStatus;
dynamic activityStatus; dynamic activityStatus;
DateTime? date; DateTime? date;
WorkOrderAssignedEmployee? user; WorkOrderAssignedEmployee? user;
Lookup? step; Lookup? step;
DateTime? fixRemotlyStartTime; DateTime? fixRemotlyStartTime;
DateTime? fixRemotlyEndTime; DateTime? fixRemotlyEndTime;
num? fixRemotlyWorkingHours; num? fixRemotlyWorkingHours;
String? comments; String? comments;
DateTime? needAVisitDateTime; DateTime? needAVisitDateTime;
factory WorkOrderHistory.fromJson(Map<String, dynamic> json) { factory WorkOrderHistory.fromJson(Map<String, dynamic> json) {
return WorkOrderHistory( return WorkOrderHistory(
@ -582,8 +567,7 @@ class WorkOrderHistory {
); );
} }
Map<String, dynamic> toJson() => Map<String, dynamic> toJson() => {
{
"id": id, "id": id,
"workorderStatus": workorderStatus?.toJson(), "workorderStatus": workorderStatus?.toJson(),
"activityStatus": activityStatus, "activityStatus": activityStatus,
@ -597,9 +581,11 @@ class WorkOrderHistory {
"needAVisitDateTime": needAVisitDateTime?.toIso8601String(), "needAVisitDateTime": needAVisitDateTime?.toIso8601String(),
}; };
} }
class ActivityMaintenance { class ActivityMaintenance {
int? id; int? id;
int? activityStatus; int? activityStatus;
Lookup? lastSituation;
String? startTime; String? startTime;
String? endTime; String? endTime;
double? workingHours; double? workingHours;
@ -616,20 +602,21 @@ class ActivityMaintenance {
ActivityMaintenance( ActivityMaintenance(
{this.id, {this.id,
this.activityStatus, this.activityStatus,
this.startTime, this.lastSituation,
this.endTime, this.startTime,
this.workingHours, this.endTime,
this.travelHours, this.workingHours,
this.repairLocation, this.travelHours,
this.assignedEmployee, this.repairLocation,
this.technicalComment, this.assignedEmployee,
this.supplier, this.technicalComment,
this.supplierEngineer, this.supplier,
this.supplierStartTime, this.supplierEngineer,
this.supplierEndTime, this.supplierStartTime,
this.supplierWorkingHours, this.supplierEndTime,
this.assistantEmployees}); this.supplierWorkingHours,
this.assistantEmployees});
ActivityMaintenance.fromJson(Map<String, dynamic> json) { ActivityMaintenance.fromJson(Map<String, dynamic> json) {
id = json['id']; id = json['id'];
@ -638,12 +625,9 @@ class ActivityMaintenance {
endTime = json['endTime']; endTime = json['endTime'];
workingHours = json['workingHours']; workingHours = json['workingHours'];
travelHours = json['travelHours']; travelHours = json['travelHours'];
repairLocation = json['repairLocation'] != null repairLocation = json['repairLocation'] != null ? RepairLocation.fromJson(json['repairLocation']) : null;
? RepairLocation.fromJson(json['repairLocation']) lastSituation = json['lastSituation'] != null ? Lookup.fromJson(json['lastSituation']) : null;
: null; assignedEmployee = json['assignedEmployee'] != null ? AssignedEmployee.fromJson(json['assignedEmployee']) : null;
assignedEmployee = json['assignedEmployee'] != null
? AssignedEmployee.fromJson(json['assignedEmployee'])
: null;
technicalComment = json['technicalComment']; technicalComment = json['technicalComment'];
supplier = json['supplier']; supplier = json['supplier'];
supplierEngineer = json['supplierEngineer']; supplierEngineer = json['supplierEngineer'];
@ -653,7 +637,7 @@ class ActivityMaintenance {
if (json['assistantEmployees'] != null) { if (json['assistantEmployees'] != null) {
assistantEmployees = <ActivityMaintenanceAssistantEmployees>[]; assistantEmployees = <ActivityMaintenanceAssistantEmployees>[];
json['assistantEmployees'].forEach((v) { json['assistantEmployees'].forEach((v) {
assistantEmployees!.add( ActivityMaintenanceAssistantEmployees.fromJson(v)); assistantEmployees!.add(ActivityMaintenanceAssistantEmployees.fromJson(v));
}); });
} }
} }
@ -672,6 +656,7 @@ class ActivityMaintenance {
if (assignedEmployee != null) { if (assignedEmployee != null) {
data['assignedEmployee'] = assignedEmployee!.toJson(); data['assignedEmployee'] = assignedEmployee!.toJson();
} }
data["lastSituation"] = lastSituation?.toJson();
data['technicalComment'] = technicalComment; data['technicalComment'] = technicalComment;
data['supplier'] = supplier; data['supplier'] = supplier;
data['supplierEngineer'] = supplierEngineer; data['supplierEngineer'] = supplierEngineer;
@ -679,8 +664,7 @@ class ActivityMaintenance {
data['supplierEndTime'] = supplierEndTime; data['supplierEndTime'] = supplierEndTime;
data['supplierWorkingHours'] = supplierWorkingHours; data['supplierWorkingHours'] = supplierWorkingHours;
if (assistantEmployees != null) { if (assistantEmployees != null) {
data['assistantEmployees'] = data['assistantEmployees'] = assistantEmployees!.map((v) => v.toJson()).toList();
assistantEmployees!.map((v) => v.toJson()).toList();
} }
return data; return data;
} }
@ -740,21 +724,14 @@ class ActivityMaintenanceAssistantEmployees {
String? technicalComment; String? technicalComment;
AssignedEmployee? user; AssignedEmployee? user;
ActivityMaintenanceAssistantEmployees( ActivityMaintenanceAssistantEmployees({this.startDate, this.endDate, this.workingHours, this.technicalComment, this.user});
{this.startDate,
this.endDate,
this.workingHours,
this.technicalComment,
this.user});
ActivityMaintenanceAssistantEmployees.fromJson(Map<String, dynamic> json) { ActivityMaintenanceAssistantEmployees.fromJson(Map<String, dynamic> json) {
startDate = json['startDate']; startDate = json['startDate'];
endDate = json['endDate']; endDate = json['endDate'];
workingHours = json['workingHours']; workingHours = json['workingHours'];
technicalComment = json['technicalComment']; technicalComment = json['technicalComment'];
user = json['user'] != null user = json['user'] != null ? new AssignedEmployee.fromJson(json['user']) : null;
? new AssignedEmployee.fromJson(json['user'])
: null;
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
@ -769,4 +746,3 @@ class ActivityMaintenanceAssistantEmployees {
return data; return data;
} }
} }

@ -1,24 +1,20 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/main.dart';
import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/enums/user_types.dart';
import 'package:test_sa/models/enums/work_order_next_step.dart'; import 'package:test_sa/models/enums/work_order_next_step.dart';
import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/providers/service_request_providers/reject_reason_provider.dart'; import 'package:test_sa/providers/service_request_providers/reject_reason_provider.dart';
import 'package:test_sa/providers/work_order/reason_provider.dart';
import 'package:test_sa/service_request_latest/request_detail_provider.dart'; import 'package:test_sa/service_request_latest/request_detail_provider.dart';
import 'package:test_sa/service_request_latest/views/components/activities_list_view.dart'; import 'package:test_sa/service_request_latest/views/components/activities_list_view.dart';
import 'package:test_sa/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart'; import 'package:test_sa/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart';
import 'package:test_sa/service_request_latest/views/components/verify_arrival_view.dart'; import 'package:test_sa/service_request_latest/views/components/verify_arrival_view.dart';
import 'package:test_sa/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart'; import 'package:test_sa/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart';
import 'package:test_sa/service_request_latest/views/forms/maintenance_request/maintenance_request_main.dart';
class FooterActionButton { class FooterActionButton {
static Widget footerContainer({required Widget child}) { static Widget footerContainer({required Widget child}) {
@ -146,7 +142,7 @@ class FooterActionButton {
buttonColor: AppColor.neutral50, buttonColor: AppColor.neutral50,
onPressed: () async { onPressed: () async {
// ServiceRequestBottomSheet.activityTypeBottomSheet(context: context); // ServiceRequestBottomSheet.activityTypeBottomSheet(context: context);
Navigator.push(context, MaterialPageRoute(builder: (context)=>const ActivitiesListView())); Navigator.push(context, MaterialPageRoute(builder: (context) => const ActivitiesListView()));
}, },
), ),
8.height, 8.height,

@ -4,6 +4,7 @@ import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.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/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/enums/user_types.dart';
@ -23,44 +24,108 @@ import 'package:test_sa/views/widgets/images/files_list.dart';
import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart';
class ActivitiesListView extends StatelessWidget { class ActivitiesListView extends StatefulWidget {
static const String id = "/activities-list"; static const String id = "/activities-list";
const ActivitiesListView({Key? key}) : super(key: key); const ActivitiesListView({Key? key}) : super(key: key);
@override
_ActivitiesListViewState createState() {
return _ActivitiesListViewState();
}
}
class _ActivitiesListViewState extends State<ActivitiesListView> {
bool showReorderView = false;
@override
void initState() {
super.initState();
}
@override
void dispose() {
super.dispose();
}
List<Activities> reOrderActivities = [];
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
//TODO add the check for type of activity after completing maintenance activity flow. //TODO add the check for type of activity after completing maintenance activity flow.
List<Activities> activities = []; List<Activities> activities = [];
UserProvider userProvider = Provider.of<UserProvider>(context); UserProvider userProvider = Provider.of<UserProvider>(context);
return Scaffold( return Scaffold(
appBar: DefaultAppBar(title: context.translation.activities), appBar: DefaultAppBar(
title: context.translation.activities,
actions: [if (!showReorderView) IconButton(onPressed: () => setState(() => showReorderView = true), icon: const Icon(Icons.reorder_rounded))],
),
//backgroundColor: const Color(0xfff8f9fb), //backgroundColor: const Color(0xfff8f9fb),
body: Consumer<RequestDetailProvider>(builder: (context, RequestDetailProvider requestDetailProvider, child) { body: Consumer<RequestDetailProvider>(builder: (context, RequestDetailProvider requestDetailProvider, child) {
activities = requestDetailProvider.currentWorkOrder!.data!.activities; if (showReorderView && reOrderActivities.isEmpty) {
reOrderActivities = requestDetailProvider.currentWorkOrder!.data!.activities;
} else {
activities = requestDetailProvider.currentWorkOrder!.data!.activities;
}
return Column( return Column(
children: [ children: [
(activities.isEmpty) (activities.isEmpty && reOrderActivities.isEmpty)
? NoDataFound(message: context.translation.noDataFound).expanded ? NoDataFound(message: context.translation.noDataFound).expanded
: ListView.separated( : showReorderView
padding: const EdgeInsets.all(16), ? ReorderableListView(
itemCount: activities.length, padding: const EdgeInsets.all(16),
separatorBuilder: (czt, index) => 16.height, children: [
itemBuilder: (context, index) { for (int index = 0; index < reOrderActivities.length; index++)
if (activities[index].activityMaintenance != null) { if (reOrderActivities[index].activityMaintenance != null)
return maintenanceActivityCard(requestDetailProvider: requestDetailProvider, userProvider: userProvider, context: context, activity: activities[index]); ReorderWidget(
} key: ValueKey(index),
return sparePartActivityCard(requestDetailProvider: requestDetailProvider, userProvider: userProvider, context: context, activity: activities[index]); child: maintenanceActivityCard(requestDetailProvider: requestDetailProvider, userProvider: userProvider, context: context, activity: reOrderActivities[index])
}, .paddingOnly(top: 8, bottom: 8),
).expanded, )
else
ReorderWidget(
key: ValueKey(index),
child: sparePartActivityCard(requestDetailProvider: requestDetailProvider, userProvider: userProvider, context: context, activity: reOrderActivities[index])
.paddingOnly(top: 8, bottom: 8),
)
],
onReorder: (oldIndex, newIndex) {
setState(() {
if (oldIndex < newIndex) {
newIndex -= 1;
}
final Activities item = reOrderActivities.removeAt(oldIndex);
reOrderActivities.insert(newIndex, item);
});
}).expanded
: ListView.separated(
padding: const EdgeInsets.all(16),
itemCount: activities.length,
separatorBuilder: (czt, index) => 16.height,
itemBuilder: (context, index) {
if (activities[index].activityMaintenance != null) {
return maintenanceActivityCard(requestDetailProvider: requestDetailProvider, userProvider: userProvider, context: context, activity: activities[index])
.paddingOnly(top: 8, bottom: 8);
}
return sparePartActivityCard(requestDetailProvider: requestDetailProvider, userProvider: userProvider, context: context, activity: activities[index]);
},
).expanded,
if (userProvider.user!.type == UsersTypes.engineer && if (userProvider.user!.type == UsersTypes.engineer &&
(requestDetailProvider.currentWorkOrder?.data?.status?.value != 5 && requestDetailProvider.currentWorkOrder?.data?.status?.value != 3)) (requestDetailProvider.currentWorkOrder?.data?.status?.value != 5 && requestDetailProvider.currentWorkOrder?.data?.status?.value != 3))
FooterActionButton.footerContainer( FooterActionButton.footerContainer(
child: AppFilledButton( child: AppFilledButton(
label: context.translation.createNewActivity, label: showReorderView ? "Confirm Order".addTranslation : context.translation.createNewActivity,
maxWidth: true, maxWidth: true,
buttonColor: AppColor.primary10, buttonColor: AppColor.primary10,
onPressed: () async { onPressed: () async {
if (showReorderView) {
requestDetailProvider.currentWorkOrder!.data!.activities = reOrderActivities;
reOrderActivities = [];
showReorderView = false;
setState(() {});
return;
}
ServiceRequestBottomSheet.activityTypeBottomSheet(context: context); ServiceRequestBottomSheet.activityTypeBottomSheet(context: context);
}, },
)) ))
@ -235,7 +300,7 @@ class ActivitiesListView extends StatelessWidget {
), ),
3.height, 3.height,
Text( Text(
'${context.translation.partName}: ${activity.activitySparePart?.partCatalogItem?.partName}', '${context.translation.callLastSituation}: ${activity.activityMaintenance?.lastSituation?.name}',
style: AppTextStyles.bodyText2.copyWith(color: AppColor.neutral120), style: AppTextStyles.bodyText2.copyWith(color: AppColor.neutral120),
), ),
2.height, 2.height,
@ -272,3 +337,18 @@ class ActivitiesListView extends StatelessWidget {
}); });
} }
} }
class ReorderWidget extends StatelessWidget {
final Widget child;
final Key key;
const ReorderWidget({required this.key, required this.child}) : super(key: key);
@override
Widget build(BuildContext context) {
return SizedBox(
key: key,
child: child,
);
}
}

Loading…
Cancel
Save