Merge remote-tracking branch 'origin/design_3.0_TM_Module_bug_fixes' into design_3.0_TM_Module_bug_fixes

design_3.0_dark_mode
Sikander Saleem 10 months ago
commit c41d43d890

@ -548,5 +548,6 @@
"rejectionDetails": "تفاصيل الرفض", "rejectionDetails": "تفاصيل الرفض",
"part": "جزء", "part": "جزء",
"creationDate": "تاريخ الإنشاء", "creationDate": "تاريخ الإنشاء",
"transferType": "نوع النقل" "transferType": "نوع النقل",
"createdBy": "تم الإنشاء بواسطة"
} }

@ -548,5 +548,6 @@
"since": "Since", "since": "Since",
"rejectionDetails": "Rejection Details", "rejectionDetails": "Rejection Details",
"part": "Part", "part": "Part",
"creationDate": "Creation Date" "creationDate": "Creation Date",
"createdBy": "Created BY"
} }

@ -73,7 +73,7 @@ import 'package:test_sa/views/pages/device_transfer/device_search_screen.dart';
import 'package:test_sa/views/pages/device_transfer/create__device_transfer_request.dart'; import 'package:test_sa/views/pages/device_transfer/create__device_transfer_request.dart';
import 'package:test_sa/views/pages/device_transfer/track_device_transfer.dart'; import 'package:test_sa/views/pages/device_transfer/track_device_transfer.dart';
import 'package:test_sa/views/pages/sub_workorder/create_sub_workorder_page.dart'; import 'package:test_sa/views/pages/sub_workorder/create_sub_workorder_page.dart';
import 'package:test_sa/views/pages/user/gas_refill/gas_refill_form.dart'; import 'package:test_sa/views/pages/user/gas_refill/update_gas_refill_request.dart';
import 'package:test_sa/views/pages/user/gas_refill/request_gas_refill.dart'; import 'package:test_sa/views/pages/user/gas_refill/request_gas_refill.dart';
import 'package:test_sa/views/pages/user/gas_refill/track_gas_refill.dart'; import 'package:test_sa/views/pages/user/gas_refill/track_gas_refill.dart';
import 'package:test_sa/views/pages/user/notifications/notifications_page.dart'; import 'package:test_sa/views/pages/user/notifications/notifications_page.dart';
@ -92,7 +92,7 @@ import 'controllers/providers/api/gas_refill_comments.dart';
import 'controllers/providers/api/user_provider.dart'; import 'controllers/providers/api/user_provider.dart';
import 'controllers/providers/settings/setting_provider.dart'; import 'controllers/providers/settings/setting_provider.dart';
import 'dashboard_latest/dashboard_provider.dart'; import 'dashboard_latest/dashboard_provider.dart';
import 'new_views/pages/new_gas_refill_request_page.dart'; import 'new_views/pages/gas_refill_request_form.dart';
import 'providers/service_request_providers/loan_availability_provider.dart'; import 'providers/service_request_providers/loan_availability_provider.dart';
import 'providers/service_request_providers/reject_reason_provider.dart'; import 'providers/service_request_providers/reject_reason_provider.dart';
import 'package:flutter_timezone/flutter_timezone.dart'; import 'package:flutter_timezone/flutter_timezone.dart';
@ -165,6 +165,7 @@ class MyApp extends StatelessWidget {
ChangeNotifierProvider(create: (_) => CylinderSizeProvider()), ChangeNotifierProvider(create: (_) => CylinderSizeProvider()),
ChangeNotifierProvider(create: (_) => DepartmentProvider()), ChangeNotifierProvider(create: (_) => DepartmentProvider()),
ChangeNotifierProvider(create: (_) => SiteProvider()), ChangeNotifierProvider(create: (_) => SiteProvider()),
ChangeNotifierProvider(create: (_) => MappedSiteProvider()),
ChangeNotifierProvider(create: (_) => NurseProvider()), ChangeNotifierProvider(create: (_) => NurseProvider()),
ChangeNotifierProvider(create: (_) => HospitalsProvider()), ChangeNotifierProvider(create: (_) => HospitalsProvider()),
ChangeNotifierProvider(create: (_) => AssetProvider()), ChangeNotifierProvider(create: (_) => AssetProvider()),
@ -304,12 +305,12 @@ class MyApp extends StatelessWidget {
///todo deleted ///todo deleted
//old.LandPage.id: (_) => const old.LandPage(), //old.LandPage.id: (_) => const old.LandPage(),
LandPage.routeName: (_) => const LandPage(), LandPage.routeName: (_) => const LandPage(),
NewGasRefillRequestPage.routeName: (_) => const NewGasRefillRequestPage(), GasRefillRequestForm.routeName: (_) => const GasRefillRequestForm(),
ServiceRequestsPage.id: (_) => const ServiceRequestsPage(), ServiceRequestsPage.id: (_) => const ServiceRequestsPage(),
CreateTaskView.id: (_) => const CreateTaskView(), CreateTaskView.id: (_) => const CreateTaskView(),
//ReportIssuesPage.id: (_) => ReportIssuesPage(), //ReportIssuesPage.id: (_) => ReportIssuesPage(),
RequestGasRefill.id: (_) => const RequestGasRefill(), RequestGasRefill.id: (_) => const RequestGasRefill(),
GasRefillForm.id: (_) => const GasRefillForm(), UpdateGasRefillRequest.id: (_) => const UpdateGasRefillRequest(),
CreateServiceRequestPage.id: (_) => const CreateServiceRequestPage(), CreateServiceRequestPage.id: (_) => const CreateServiceRequestPage(),
CreateNewRequest.id: (_) => const CreateNewRequest(), CreateNewRequest.id: (_) => const CreateNewRequest(),
// SingleHospitalPicker.id: (_) => SingleHospitalPicker(), // SingleHospitalPicker.id: (_) => SingleHospitalPicker(),

@ -1,6 +1,7 @@
import 'package:test_sa/models/device/supplier.dart'; import 'package:test_sa/models/device/supplier.dart';
import 'package:test_sa/models/device/technical_guidance_book.dart'; import 'package:test_sa/models/device/technical_guidance_book.dart';
import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/new_models/mapped_sites.dart';
import 'package:test_sa/models/new_models/room_model.dart'; import 'package:test_sa/models/new_models/room_model.dart';
import '../new_models/building.dart'; import '../new_models/building.dart';
@ -30,6 +31,10 @@ class Asset {
this.floor, this.floor,
this.department, this.department,
this.room, this.room,
this.mappedSite,
this.mappedBuilding,
this.mappedDepartment,
this.mappedFloor,
this.testsDay, this.testsDay,
this.purchasingPrice, this.purchasingPrice,
this.nbv, this.nbv,
@ -137,6 +142,10 @@ class Asset {
Building? building; // Now nullable Building? building; // Now nullable
Floor? floor; // Now nullable Floor? floor; // Now nullable
Department? department; // Now nullable Department? department; // Now nullable
MappedSite? mappedSite; // Now nullable
MappedBuilding? mappedBuilding; // Now nullable
MappedFloor? mappedFloor; // Now nullable
MappedDepartment? mappedDepartment; // No
Rooms? room; // Now nullable Rooms? room; // Now nullable
num? testsDay; // Now nullable num? testsDay; // Now nullable
num? purchasingPrice; // Now nullable num? purchasingPrice; // Now nullable
@ -189,6 +198,10 @@ class Asset {
Floor? floor, Floor? floor,
Department? department, Department? department,
Rooms? room, Rooms? room,
MappedSite? mappedSite,
MappedBuilding? mappedBuilding,
MappedDepartment? mappedDepartment,
MappedFloor? mappedFloor,
num? testsDay, num? testsDay,
num? purchasingPrice, num? purchasingPrice,
String? nbv, String? nbv,
@ -236,6 +249,10 @@ class Asset {
parentAsset: parentAsset ?? this.parentAsset, parentAsset: parentAsset ?? this.parentAsset,
assetType: assetType ?? this.assetType, assetType: assetType ?? this.assetType,
site: site ?? this.site, site: site ?? this.site,
mappedSite: mappedSite ?? this.mappedSite,
mappedDepartment: mappedDepartment ?? this.mappedDepartment,
mappedFloor: mappedFloor ?? this.mappedFloor,
mappedBuilding: mappedBuilding ?? this.mappedBuilding,
building: building ?? this.building, building: building ?? this.building,
floor: floor ?? this.floor, floor: floor ?? this.floor,
department: department ?? this.department, department: department ?? this.department,

@ -1,6 +1,3 @@
import 'package:flutter/src/widgets/framework.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/device/asset.dart'; import 'package:test_sa/models/device/asset.dart';
import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/new_models/assistant_employee.dart'; import 'package:test_sa/models/new_models/assistant_employee.dart';
@ -49,6 +46,7 @@ class DeviceTransfer {
this.receiverEngSignature, this.receiverEngSignature,
this.receiverAttachments, this.receiverAttachments,
this.assetTransferAttachments, this.assetTransferAttachments,
this.assetTransferContactPersons,
this.attachments, this.attachments,
this.assetNumber, this.assetNumber,
this.assetName, this.assetName,
@ -134,6 +132,12 @@ class DeviceTransfer {
assetTransferAttachments?.add(AssetTransferAttachment.fromJson(v)); assetTransferAttachments?.add(AssetTransferAttachment.fromJson(v));
}); });
} }
if (json['assetTransferContactPersons'] != null) {
assetTransferContactPersons = [];
json['assetTransferContactPersons'].forEach((v) {
assetTransferContactPersons?.add(AssetTransferContactPerson.fromJson(v));
});
}
receiverAssignedEmployeeId = json['receiverAssignedEmployeeId']; receiverAssignedEmployeeId = json['receiverAssignedEmployeeId'];
receiverMachineStatusId = json['receiverMachineStatusId']; receiverMachineStatusId = json['receiverMachineStatusId'];
receiverMachineStatusValue = json['receiverMachineStatusValue']; receiverMachineStatusValue = json['receiverMachineStatusValue'];
@ -299,9 +303,8 @@ class DeviceTransfer {
List<TimerModel>? timerModelList = []; List<TimerModel>? timerModelList = [];
List<AssistantEmployees>? assistantEmployees; List<AssistantEmployees>? assistantEmployees;
List<AssetTransferAssistantEmployees>? assetTransferAssistantEmployeesSender; List<AssetTransferAssistantEmployees>? assetTransferAssistantEmployeesSender;
List<AssetTransferAssistantEmployees>? assetTransferAssistantEmployeesReceiver; List<AssetTransferAssistantEmployees>? assetTransferAssistantEmployeesReceiver;
List<AssetTransferContactPerson>? assetTransferContactPersons;
AssetTransferAssistantEmployees? modelAssistantEmployees; AssetTransferAssistantEmployees? modelAssistantEmployees;
TimerModel? tbsTimer = TimerModel(); TimerModel? tbsTimer = TimerModel();
@ -693,32 +696,33 @@ class DeviceTransfer {
manufacturerName = assetTransfer.manufacturerName; manufacturerName = assetTransfer.manufacturerName;
senderVisitTimers = assetTransfer.senderVisitTimers; senderVisitTimers = assetTransfer.senderVisitTimers;
receiverVisitTimers = assetTransfer.receiverVisitTimers; receiverVisitTimers = assetTransfer.receiverVisitTimers;
assetTransferAttachments=assetTransfer.assetTransferAttachments; assetTransferAttachments = assetTransfer.assetTransferAttachments;
assetTransferAssistantEmployeesReceiver = assetTransfer.assetTransferAssistantEmployeesReceiver; assetTransferAssistantEmployeesReceiver = assetTransfer.assetTransferAssistantEmployeesReceiver;
assetTransferAssistantEmployeesSender = assetTransfer.assetTransferAssistantEmployeesSender; assetTransferAssistantEmployeesSender = assetTransfer.assetTransferAssistantEmployeesSender;
senderMachineStatusValue = assetTransfer.senderMachineStatusValue; senderMachineStatusValue = assetTransfer.senderMachineStatusValue;
receiverMachineStatusValue = assetTransfer.receiverMachineStatusValue; receiverMachineStatusValue = assetTransfer.receiverMachineStatusValue;
assetTransferContactPersons = assetTransfer.assetTransferContactPersons;
} }
// //
// Future<bool> validate(BuildContext context) async { // Future<bool> validate(BuildContext context) async {
// if (assetId == null) { // if (assetId == null) {
// await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.device}"); // await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.device}");
// return false; // return false;
// } else if (destSiteId == null) { // } else if (destSiteId == null) {
// await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.destinationSite}"); // await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.destinationSite}");
// return false; // return false;
// } else if (destBuildingId == null) { // } else if (destBuildingId == null) {
// await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.building}"); // await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.building}");
// return false; // return false;
// } else if (destFloorId == null) { // } else if (destFloorId == null) {
// await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.floor}"); // await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.floor}");
// return false; // return false;
// } else if (destDepartmentId == null) { // } else if (destDepartmentId == null) {
// await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.department}"); // await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.department}");
// return false; // return false;
// } // }
// return true; // return true;
// } // }
} }
class AssetTransferAssistantEmployees { class AssetTransferAssistantEmployees {
@ -759,3 +763,47 @@ class AssetTransferAssistantEmployees {
return data; return data;
} }
} }
class AssetTransferContactPerson {
int? id;
String? employeeId;
String? employeeNumber;
String? employeeName;
String? email;
String? mobileNo;
String? extension;
AssetTransferContactPerson({
this.id,
this.employeeId,
this.employeeNumber,
this.employeeName,
this.email,
this.mobileNo,
this.extension,
});
factory AssetTransferContactPerson.fromJson(Map<String, dynamic> json) {
return AssetTransferContactPerson(
id: json['id'],
employeeId: json['employeeId'],
employeeNumber: json['employeeNumber'],
employeeName: json['employeeName'],
email: json['email'],
mobileNo: json['mobileNo'],
extension: json['extension'],
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'employeeId': employeeId,
'employeeNumber': employeeNumber,
'employeeName': employeeName,
'email': email,
'mobileNo': mobileNo,
'extension': extension,
};
}
}

@ -31,7 +31,7 @@ class Department extends Base {
num? id; // Now nullable num? id; // Now nullable
String? departmentName; // Now nullable String? departmentName; // Now nullable
String? departmentCode; // Now nullable String? departmentCode; // Now nullable
String? departmentId; // Now nullable dynamic departmentId; // Now nullable
String? ntCode; // Now nullable String? ntCode; // Now nullable
List<Rooms>? rooms; // Now nullable List<Rooms>? rooms; // Now nullable

@ -8,6 +8,7 @@ import 'package:test_sa/models/new_models/assigned_employee.dart';
import 'package:test_sa/models/new_models/building.dart'; import 'package:test_sa/models/new_models/building.dart';
import 'package:test_sa/models/new_models/department.dart'; import 'package:test_sa/models/new_models/department.dart';
import 'package:test_sa/models/new_models/floor.dart'; import 'package:test_sa/models/new_models/floor.dart';
import 'package:test_sa/models/new_models/mapped_sites.dart';
import 'package:test_sa/models/new_models/site.dart'; import 'package:test_sa/models/new_models/site.dart';
import 'package:test_sa/models/timer_model.dart'; import 'package:test_sa/models/timer_model.dart';
@ -65,6 +66,10 @@ class GasRefillModel {
Building? building; // Now nullable Building? building; // Now nullable
Floor? floor; // Now nullable Floor? floor; // Now nullable
Department? department; // Now nullable Department? department; // Now nullable
MappedSite? mapSite; // Now nullable
MappedBuilding? mappedBuilding; // Now nullable
MappedFloor? mappedFloor; // Now nullable
MappedDepartment? mappedDepartment; //
AssignedEmployee? assignedEmployee; // Now nullable AssignedEmployee? assignedEmployee; // Now nullable
Lookup? status; // Now nullable Lookup? status; // Now nullable
String? comment; // Now nullable String? comment; // Now nullable
@ -102,7 +107,6 @@ class GasRefillModel {
gasRefillTimers?.add(GasRefillTimer.fromJson(v)); gasRefillTimers?.add(GasRefillTimer.fromJson(v));
}); });
workingHours = json['gasRefillTimers'].fold(0.0, (sum, item) => (sum ?? 0) + DateTime.parse(item['endDate']).difference(DateTime.parse(item['startDate'])).inSeconds) ?? 0; workingHours = json['gasRefillTimers'].fold(0.0, (sum, item) => (sum ?? 0) + DateTime.parse(item['endDate']).difference(DateTime.parse(item['startDate'])).inSeconds) ?? 0;
} }
if (json['gasRefillAttachments'] != null) { if (json['gasRefillAttachments'] != null) {
gasRefillAttachments = <GasRefillAttachments>[]; gasRefillAttachments = <GasRefillAttachments>[];
@ -151,17 +155,17 @@ class GasRefillModel {
map['cylinderTypeId'] = gasRefillDetails?[0].cylinderType?.id; map['cylinderTypeId'] = gasRefillDetails?[0].cylinderType?.id;
map['cylinderSizeId'] = gasRefillDetails?[0].cylinderSize?.id; map['cylinderSizeId'] = gasRefillDetails?[0].cylinderSize?.id;
map['requestedQty'] = gasRefillDetails?[0].requestedQty; map['requestedQty'] = gasRefillDetails?[0].requestedQty;
if (site != null) { if (mapSite != null) {
map['siteId'] = site?.id; // Use '?.' for null safety map['siteId'] = mapSite?.id; // Use '?.' for null safety
} }
if (building != null) { if (mappedBuilding != null) {
map['buildingId'] = building?.id; // Use '?.' for null safety map['buildingId'] = mappedBuilding?.clientBuildingId; // Use '?.' for null safety
} }
if (floor != null) { if (mappedFloor != null) {
map['floorId'] = floor?.id; // Use '?.' for null safety map['floorId'] = mappedFloor?.clientFloorId; // Use '?.' for null safety
} }
if (department != null) { if (mappedDepartment != null) {
map['departmentId'] = department?.id; // Use '?.' for null safety map['departmentId'] = mappedDepartment?.departmentId; // Use '?.' for null safety
} }
map['comment'] = comment; map['comment'] = comment;
@ -270,7 +274,7 @@ class GasRefillModel {
gasRefillAttachments = model.gasRefillAttachments; gasRefillAttachments = model.gasRefillAttachments;
createdDate = model.createdDate; createdDate = model.createdDate;
workingHours = model.workingHours; workingHours = model.workingHours;
gasRefillTimers=model.gasRefillTimers; gasRefillTimers = model.gasRefillTimers;
} }
GasRefillModel copyWith({ GasRefillModel copyWith({

@ -0,0 +1,322 @@
import 'package:test_sa/models/base.dart';
import 'package:test_sa/models/new_models/room_model.dart';
class MappedSite extends Base {
int? id;
String? custName;
int? languageId;
List<MappedTranslation>? translations;
int? customerCode;
dynamic costOfCustomerId;
dynamic costOfCustomerName;
dynamic taxId;
dynamic taxName;
dynamic custCategoryId;
dynamic custCategoryName;
dynamic custTypeId;
dynamic custTypeName;
dynamic custGroupId;
dynamic custGroupName;
dynamic invCollectionRep;
dynamic salesRep;
int? cityId;
String? cityName;
dynamic collectionPeriod1Id;
dynamic collectionPeriod1Name;
dynamic collectionPeriod2Id;
dynamic collectionPeriod2Name;
dynamic creditLimit;
dynamic salesSubRepId;
dynamic salesSubRepName;
dynamic initialLetterText;
dynamic assignedEmployeeId;
dynamic assignedEmployeeUserName;
dynamic groupLeaderId;
dynamic groupLeaderUserName;
int? organizationId;
String? orgCode;
String? orgName;
String? orgPostalCode;
List<dynamic>? attachments;
List<MappedBuilding>? buildings;
dynamic operatingUnitNumber;
dynamic operatingUnitName;
List<dynamic>? custEndPoints;
dynamic createdBy;
dynamic createdDate;
dynamic modifiedBy;
dynamic modifiedDate;
MappedSite({
this.id,
this.custName,
this.languageId,
this.translations,
this.customerCode,
this.costOfCustomerId,
this.costOfCustomerName,
this.taxId,
this.taxName,
this.custCategoryId,
this.custCategoryName,
this.custTypeId,
this.custTypeName,
this.custGroupId,
this.custGroupName,
this.invCollectionRep,
this.salesRep,
this.cityId,
this.cityName,
this.collectionPeriod1Id,
this.collectionPeriod1Name,
this.collectionPeriod2Id,
this.collectionPeriod2Name,
this.creditLimit,
this.salesSubRepId,
this.salesSubRepName,
this.initialLetterText,
this.assignedEmployeeId,
this.assignedEmployeeUserName,
this.groupLeaderId,
this.groupLeaderUserName,
this.organizationId,
this.orgCode,
this.orgName,
this.orgPostalCode,
this.attachments,
this.buildings,
this.operatingUnitNumber,
this.operatingUnitName,
this.custEndPoints,
this.createdBy,
this.createdDate,
this.modifiedBy,
this.modifiedDate,
}) : super(identifier: id?.toString() ?? '', name: custName);
MappedSite.fromJson(Map<String, dynamic> json) {
id = json['id'];
identifier = id?.toString() ?? ''; // Handle potential null id
custName = json['custName'];
name = custName;
languageId = json['languageId'];
translations = (json['translations'] as List?)?.map((e) => MappedTranslation.fromJson(e)).toList();
customerCode = json['customerCode'];
costOfCustomerId = json['costOfCustomerId'];
costOfCustomerName = json['costOfCustomerName'];
taxId = json['taxId'];
taxName = json['taxName'];
custCategoryId = json['custCategoryId'];
custCategoryName = json['custCategoryName'];
custTypeId = json['custTypeId'];
custTypeName = json['custTypeName'];
custGroupId = json['custGroupId'];
custGroupName = json['custGroupName'];
invCollectionRep = json['invCollectionRep'];
salesRep = json['salesRep'];
cityId = json['cityId'];
cityName = json['cityName'];
collectionPeriod1Id = json['collectionPeriod_1Id'];
collectionPeriod1Name = json['collectionPeriod_1Name'];
collectionPeriod2Id = json['collectionPeriod_2Id'];
collectionPeriod2Name = json['collectionPeriod_2Name'];
creditLimit = json['creditLimit'];
salesSubRepId = json['salesSubRepId'];
salesSubRepName = json['salesSubRepName'];
initialLetterText = json['initialLetterText'];
assignedEmployeeId = json['assignedEmployeeId'];
assignedEmployeeUserName = json['assignedEmployeeUserName'];
groupLeaderId = json['groupLeaderId'];
groupLeaderUserName = json['groupLeaderUserName'];
organizationId = json['organizationId'];
orgCode = json['orgCode'];
orgName = json['orgName'];
orgPostalCode = json['orgPostalCode'];
attachments = json['attachments'];
buildings = (json['buildings'] as List?)?.map((e) => MappedBuilding.fromJson(e)).toList();
operatingUnitNumber = json['operatingUnitNumber'];
operatingUnitName = json['operatingUnitName'];
custEndPoints = json['custEndPoints'];
createdBy = json['createdBy'];
createdDate = json['createdDate'];
modifiedBy = json['modifiedBy'];
modifiedDate = json['modifiedDate'];
}
Map<String, dynamic> toJson() => {
'id': id,
'custName': custName,
'languageId': languageId,
'translations': translations?.map((e) => e.toJson()).toList(),
'customerCode': customerCode,
'costOfCustomerId': costOfCustomerId,
'costOfCustomerName': costOfCustomerName,
'taxId': taxId,
'taxName': taxName,
'custCategoryId': custCategoryId,
'custCategoryName': custCategoryName,
'custTypeId': custTypeId,
'custTypeName': custTypeName,
'custGroupId': custGroupId,
'custGroupName': custGroupName,
'invCollectionRep': invCollectionRep,
'salesRep': salesRep,
'cityId': cityId,
'cityName': cityName,
'collectionPeriod_1Id': collectionPeriod1Id,
'collectionPeriod_1Name': collectionPeriod1Name,
'collectionPeriod_2Id': collectionPeriod2Id,
'collectionPeriod_2Name': collectionPeriod2Name,
'creditLimit': creditLimit,
'salesSubRepId': salesSubRepId,
'salesSubRepName': salesSubRepName,
'initialLetterText': initialLetterText,
'assignedEmployeeId': assignedEmployeeId,
'assignedEmployeeUserName': assignedEmployeeUserName,
'groupLeaderId': groupLeaderId,
'groupLeaderUserName': groupLeaderUserName,
'organizationId': organizationId,
'orgCode': orgCode,
'orgName': orgName,
'orgPostalCode': orgPostalCode,
'attachments': attachments,
'buildings': buildings?.map((e) => e.toJson()).toList(),
'operatingUnitNumber': operatingUnitNumber,
'operatingUnitName': operatingUnitName,
'custEndPoints': custEndPoints,
'createdBy': createdBy,
'createdDate': createdDate,
'modifiedBy': modifiedBy,
'modifiedDate': modifiedDate,
};
}
class MappedTranslation {
int? id;
int? customerId;
int? langId;
String? langName;
String? nameValue;
MappedTranslation();
MappedTranslation.fromJson(Map<String, dynamic> json) {
id = json['id'];
customerId = json['customerId'];
langId = json['langId'];
langName = json['langName'];
nameValue = json['nameValue'];
}
Map<String, dynamic> toJson() => {
'id': id,
'customerId': customerId,
'langId': langId,
'langName': langName,
'nameValue': nameValue,
};
}
class MappedBuilding extends Base {
int? id;
int? customerId;
int? clientBuildingId;
String? clientBuildingName;
List<MappedFloor>? floors;
MappedBuilding({
this.id,
this.customerId,
this.clientBuildingId,
this.clientBuildingName,
this.floors,
}) : super(identifier: id?.toString() ?? '', name: clientBuildingName);
MappedBuilding.fromJson(Map<String, dynamic> json) {
id = json['id'];
identifier = id?.toString() ?? '';
customerId = json['customerId'];
clientBuildingId = json['clientBuildingId'];
clientBuildingName = json['clientBuildingName'];
name = clientBuildingName;
floors = (json['floors'] as List?)?.map((e) => MappedFloor.fromJson(e)).toList();
}
Map<String, dynamic> toJson() => {
'id': id,
'customerId': customerId,
'clientBuildingId': clientBuildingId,
'clientBuildingName': clientBuildingName,
'floors': floors?.map((e) => e.toJson()).toList(),
};
}
class MappedFloor extends Base {
int? id;
int? buildingId;
int? clientFloorId;
String? clientFloorName;
List<MappedDepartment>? departments;
MappedFloor({
this.id,
this.buildingId,
this.clientFloorId,
this.clientFloorName,
this.departments,
}) : super(identifier: id?.toString() ?? '', name: clientFloorName);
MappedFloor.fromJson(Map<String, dynamic> json) {
id = json['id'];
identifier = id?.toString() ?? '';
buildingId = json['buildingId'];
clientFloorId = json['clientFloorId'];
clientFloorName = json['clientFloorName'];
name = clientFloorName;
departments = (json['departments'] as List?)?.map((e) => MappedDepartment.fromJson(e)).toList();
}
Map<String, dynamic> toJson() => {
'id': id,
'buildingId': buildingId,
'clientFloorId': clientFloorId,
'clientFloorName': clientFloorName,
'departments': departments?.map((e) => e.toJson()).toList(),
};
}
class MappedDepartment extends Base {
int? id;
int? floorId;
int? departmentId;
String? departmentName;
List<Rooms>? rooms;
MappedDepartment({
this.id,
this.floorId,
this.departmentId,
this.departmentName,
this.rooms,
}) : super(identifier: id?.toString() ?? '', name: departmentName);
MappedDepartment.fromJson(Map<String, dynamic> json) {
id = json['id'];
identifier = id?.toString() ?? '';
floorId = json['floorId'];
departmentId = json['departmentId'];
departmentName = json['departmentName'];
name = departmentName;
// rooms = json['rooms'];
}
Map<String, dynamic> toJson() => {
'id': id,
'floorId': floorId,
'departmentId': departmentId,
'departmentName': departmentName,
'rooms': rooms,
};
}

@ -3,6 +3,7 @@ import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/new_models/assistant_employee.dart'; import 'package:test_sa/models/new_models/assistant_employee.dart';
import 'package:test_sa/models/new_models/building.dart'; import 'package:test_sa/models/new_models/building.dart';
import 'package:test_sa/models/new_models/floor.dart'; import 'package:test_sa/models/new_models/floor.dart';
import 'package:test_sa/models/new_models/mapped_sites.dart';
import 'package:test_sa/models/new_models/site.dart'; import 'package:test_sa/models/new_models/site.dart';
import 'package:test_sa/models/new_models/department.dart'; import 'package:test_sa/models/new_models/department.dart';
import 'package:test_sa/models/new_models/room_model.dart'; import 'package:test_sa/models/new_models/room_model.dart';
@ -629,10 +630,10 @@ class AddTaskModel {
int? id; int? id;
int? taskTypeId; int? taskTypeId;
List<int>? assetIds = []; List<int>? assetIds = [];
Site? site; MappedSite? site;
Building? building; MappedBuilding? building;
Floor? floor; MappedFloor? floor;
Department? department; MappedDepartment? department;
Rooms? room; Rooms? room;
String? callComment; String? callComment;
Lookup? typeOfAlert; Lookup? typeOfAlert;
@ -673,9 +674,9 @@ class AddTaskModel {
'taskTypeId': taskTypeId, 'taskTypeId': taskTypeId,
'assetIds': assetIds ?? [], 'assetIds': assetIds ?? [],
'siteId': site?.id, 'siteId': site?.id,
'buildingId': building?.id, 'buildingId': building?.clientBuildingId,
'floorId': floor?.id, 'floorId': floor?.clientFloorId,
'departmentId': department?.id, 'departmentId': department?.departmentId,
'roomId': room?.id, 'roomId': room?.id,
'callComment': callComment, 'callComment': callComment,
'typeOfAlertId': typeOfAlert?.id, 'typeOfAlertId': typeOfAlert?.id,

@ -8,7 +8,7 @@
// 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';
// import 'package:test_sa/models/user.dart'; // import 'package:test_sa/models/user.dart';
// import 'package:test_sa/new_views/pages/new_gas_refill_request_page.dart'; // import 'package:test_sa/new_views/pages/gas_refill_request_form.dart';
// import 'package:test_sa/views/pages/device_transfer/create__device_transfer_request.dart'; // import 'package:test_sa/views/pages/device_transfer/create__device_transfer_request.dart';
// import 'package:test_sa/views/pages/user/requests/create_service_request_page.dart'; // import 'package:test_sa/views/pages/user/requests/create_service_request_page.dart';
// // todo @delete file // // todo @delete file

@ -1,7 +1,5 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:developer';
import 'dart:io'; import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart'; import 'package:fluttertoast/fluttertoast.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -12,11 +10,8 @@ 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';
import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/new_models/building.dart';
import 'package:test_sa/models/new_models/department.dart';
import 'package:test_sa/models/new_models/floor.dart';
import 'package:test_sa/models/new_models/gas_refill_model.dart'; import 'package:test_sa/models/new_models/gas_refill_model.dart';
import 'package:test_sa/models/new_models/site.dart'; import 'package:test_sa/models/new_models/mapped_sites.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/new_views/common_widgets/app_text_form_field.dart'; import 'package:test_sa/new_views/common_widgets/app_text_form_field.dart';
@ -29,20 +24,19 @@ import 'package:test_sa/providers/loading_list_notifier.dart';
import 'package:test_sa/service_request_latest/utilities/service_request_utils.dart'; import 'package:test_sa/service_request_latest/utilities/service_request_utils.dart';
import 'package:test_sa/service_request_latest/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/service_request_latest/views/components/action_button/footer_action_button.dart';
import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; import 'package:test_sa/views/widgets/images/multi_image_picker.dart';
import '../../controllers/providers/api/gas_refill_provider.dart'; import '../../controllers/providers/api/gas_refill_provider.dart';
import '../common_widgets/default_app_bar.dart'; import '../common_widgets/default_app_bar.dart';
class NewGasRefillRequestPage extends StatefulWidget { class GasRefillRequestForm extends StatefulWidget {
static const String routeName = "/new_gas_refill_request_page"; static const String routeName = "/gas_refill_request_form";
const NewGasRefillRequestPage({Key? key}) : super(key: key); const GasRefillRequestForm({Key? key}) : super(key: key);
@override @override
State<NewGasRefillRequestPage> createState() => _NewGasRefillRequestPageState(); State<GasRefillRequestForm> createState() => _GasRefillRequestFormState();
} }
class _NewGasRefillRequestPageState extends State<NewGasRefillRequestPage> { class _GasRefillRequestFormState extends State<GasRefillRequestForm> {
late GasRefillDetails _currentDetails; late GasRefillDetails _currentDetails;
late GasRefillModel _gasModel; late GasRefillModel _gasModel;
Lookup? _requestedQuantity; Lookup? _requestedQuantity;
@ -62,7 +56,6 @@ class _NewGasRefillRequestPageState extends State<NewGasRefillRequestPage> {
void initState() { void initState() {
super.initState(); super.initState();
_gasRefillProvider ??= Provider.of<GasRefillProvider>(context, listen: false); _gasRefillProvider ??= Provider.of<GasRefillProvider>(context, listen: false);
_gasModel =GasRefillModel();
_currentDetails = GasRefillDetails(); _currentDetails = GasRefillDetails();
_gasModel = GasRefillModel(gasRefillDetails: []); _gasModel = GasRefillModel(gasRefillDetails: []);
} }
@ -74,7 +67,6 @@ class _NewGasRefillRequestPageState extends State<NewGasRefillRequestPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: DefaultAppBar(title: context.translation.newGasRefillRequest), appBar: DefaultAppBar(title: context.translation.newGasRefillRequest),
body: Column( body: Column(
@ -134,37 +126,37 @@ class _NewGasRefillRequestPageState extends State<NewGasRefillRequestPage> {
8.height, 8.height,
Row( Row(
children: [ children: [
SingleItemDropDownMenu<Site, SiteProvider>( SingleItemDropDownMenu<MappedSite, MappedSiteProvider>(
context: context, context: context,
title: context.translation.site, title: context.translation.site,
initialValue: _gasModel.site, initialValue: _gasModel.mapSite,
showAsBottomSheet: true, showAsBottomSheet: true,
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
showShadow: false, showShadow: false,
onSelect: (value) { onSelect: (value) {
setState(() { setState(() {
_gasModel.site = value; _gasModel.mapSite = value;
_gasModel.building = null; _gasModel.mappedBuilding = null;
_gasModel.floor = null; _gasModel.mappedFloor = null;
_gasModel.department = null; _gasModel.mappedDepartment = null;
}); });
}, },
).expanded, ).expanded,
8.width, 8.width,
SingleItemDropDownMenu<Building, NullableLoadingProvider>( SingleItemDropDownMenu<MappedBuilding, NullableLoadingProvider>(
context: context, context: context,
title: context.translation.building, title: context.translation.building,
initialValue: _gasModel.building, initialValue: _gasModel.mappedBuilding,
enabled: _gasModel.site?.buildings?.isNotEmpty ?? false, enabled: _gasModel.mapSite?.buildings?.isNotEmpty ?? false,
staticData: _gasModel.site?.buildings ?? [], staticData: _gasModel.mapSite?.buildings ?? [],
showAsBottomSheet: true, showAsBottomSheet: true,
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
showShadow: false, showShadow: false,
onSelect: (value) { onSelect: (value) {
setState(() { setState(() {
_gasModel.building = value; _gasModel.mappedBuilding = value;
_gasModel.floor = null; _gasModel.mappedFloor = null;
_gasModel.department = null; _gasModel.mappedDepartment = null;
}); });
}, },
).expanded, ).expanded,
@ -173,34 +165,34 @@ class _NewGasRefillRequestPageState extends State<NewGasRefillRequestPage> {
8.height, 8.height,
Row( Row(
children: [ children: [
SingleItemDropDownMenu<Floor, NullableLoadingProvider>( SingleItemDropDownMenu<MappedFloor, NullableLoadingProvider>(
context: context, context: context,
title: context.translation.floor, title: context.translation.floor,
initialValue: _gasModel.floor, initialValue: _gasModel.mappedFloor,
enabled: _gasModel.building?.floors?.isNotEmpty ?? false, enabled: _gasModel.mappedBuilding?.floors?.isNotEmpty ?? false,
staticData: _gasModel.building?.floors ?? [], staticData: _gasModel.mappedBuilding?.floors ?? [],
showAsBottomSheet: true, showAsBottomSheet: true,
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
showShadow: false, showShadow: false,
onSelect: (value) { onSelect: (value) {
setState(() { setState(() {
_gasModel.floor = value; _gasModel.mappedFloor = value;
_gasModel.department = null; _gasModel.department = null;
}); });
}, },
).expanded, ).expanded,
8.width, 8.width,
SingleItemDropDownMenu<Department, NullableLoadingProvider>( SingleItemDropDownMenu<MappedDepartment, NullableLoadingProvider>(
context: context, context: context,
title: context.translation.department, title: context.translation.department,
initialValue: _gasModel.department, initialValue: _gasModel.mappedDepartment,
enabled: _gasModel.floor?.departments?.isNotEmpty ?? false, enabled: _gasModel.mappedFloor?.departments?.isNotEmpty ?? false,
staticData: _gasModel.floor?.departments ?? [], staticData: _gasModel.mappedFloor?.departments ?? [],
showAsBottomSheet: true, showAsBottomSheet: true,
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
showShadow: false, showShadow: false,
onSelect: (value) { onSelect: (value) {
_gasModel.department = value; _gasModel.mappedDepartment = value;
}, },
).expanded, ).expanded,
], ],
@ -214,7 +206,7 @@ class _NewGasRefillRequestPageState extends State<NewGasRefillRequestPage> {
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
showShadow: false, showShadow: false,
controller: _commentController, controller: _commentController,
onChange: (value){ onChange: (value) {
_gasModel.comment = value; _gasModel.comment = value;
}, },
onSaved: (value) {}, onSaved: (value) {},
@ -222,7 +214,7 @@ class _NewGasRefillRequestPageState extends State<NewGasRefillRequestPage> {
8.height, 8.height,
MultiFilesPicker( MultiFilesPicker(
label: context.translation.attachFiles, label: context.translation.attachFiles,
files:_files, files: _files,
buttonColor: AppColor.black10, buttonColor: AppColor.black10,
onlyImages: false, onlyImages: false,
buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120), buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120),
@ -238,40 +230,49 @@ class _NewGasRefillRequestPageState extends State<NewGasRefillRequestPage> {
} }
Future<void> _submit() async { Future<void> _submit() async {
if (_currentDetails.gasType==null) { if (await validateRequest()) {
Fluttertoast.showToast(msg: context.translation.youHaveToAddRequests); _gasModel.gasRefillDetails = [];
return; _gasModel.gasRefillDetails?.add(_currentDetails);
} _gasModel.gasRefillAttachments = [];
_gasModel.gasRefillDetails=[]; for (var item in _files) {
_gasModel.gasRefillDetails?.add(_currentDetails); _gasModel.gasRefillAttachments?.add(GasRefillAttachments(
_gasModel.gasRefillAttachments = []; id: 0, gasRefillId: _gasModel.id ?? 0, attachmentName: ServiceRequestUtils.isLocalUrl(item.path) ? "${item.path.split("/").last}|${base64Encode(item.readAsBytesSync())}" : item.path));
for (var item in _files) { }
_gasModel.gasRefillAttachments?.add(GasRefillAttachments( await _gasRefillProvider?.addGasRefillRequest(
id: 0, gasRefillId: _gasModel.id ?? 0, attachmentName: ServiceRequestUtils.isLocalUrl(item.path) ? "${item.path.split("/").last}|${base64Encode(item.readAsBytesSync())}" : item.path)); context: context,
} model: _gasModel,
await _gasRefillProvider?.addGasRefillRequest( );
context: context, if (_gasRefillProvider?.stateCode == 200) {
model: _gasModel, DashBoardProvider dashBoardProvider = Provider.of<DashBoardProvider>(context, listen: false);
); dashBoardProvider.refreshDashboard(context: context, userType: UsersTypes.nurse);
if(_gasRefillProvider?.stateCode==200){ }
DashBoardProvider dashBoardProvider = Provider.of<DashBoardProvider>(context,listen: false);
dashBoardProvider.refreshDashboard(context: context,userType: UsersTypes.nurse);
} }
} }
void _add() async { Future<bool> validateRequest() async {
if (_currentDetails.validate(context) && _gasModel.validate(context)) { if (_currentDetails.gasType == null) {
_gasModel.gasRefillDetails!.add(_currentDetails); await Fluttertoast.showToast(msg: "Please Select Gas Type");
_currentDetails = GasRefillDetails(); return false;
_requestedQuantity = null; }
setState(() {}); if (_gasModel.mapSite == null) {
await Fluttertoast.showToast(msg: "Please Select Site");
return false;
}
if (_gasModel.mappedBuilding == null) {
await Fluttertoast.showToast(msg: "Please Select Building");
return false;
} }
if (_gasModel.mappedFloor == null) {
await Fluttertoast.showToast(msg: "Please Select Floor");
return false;
}
if (_gasModel.mappedDepartment == null) {
await Fluttertoast.showToast(msg: "Please Select Department");
return false;
}
return true;
} }
void _delete(index) {
_gasModel.gasRefillDetails!.remove(_gasModel.gasRefillDetails![index]);
setState(() {});
}
//older code.... //older code....
// if (_gasModel.gasRefillDetails?.isEmpty ?? true) // if (_gasModel.gasRefillDetails?.isEmpty ?? true)
// AppFilledButton( // AppFilledButton(

@ -3,7 +3,7 @@ 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/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/pages/new_gas_refill_request_page.dart'; import 'package:test_sa/new_views/pages/gas_refill_request_form.dart';
import 'package:test_sa/service_request_latest/views/nurse/create_new_request_view.dart'; import 'package:test_sa/service_request_latest/views/nurse/create_new_request_view.dart';
import 'package:test_sa/views/pages/device_transfer/create__device_transfer_request.dart'; import 'package:test_sa/views/pages/device_transfer/create__device_transfer_request.dart';
import 'package:test_sa/views/pages/user/tasks_request/create_task_view.dart'; import 'package:test_sa/views/pages/user/tasks_request/create_task_view.dart';
@ -87,7 +87,7 @@ class CreateRequestModel {
list.add(CreateRequestModel(context.translation.task, "add_icon", CreateTaskView.id)); list.add(CreateRequestModel(context.translation.task, "add_icon", CreateTaskView.id));
} else { } else {
list.add(CreateRequestModel(context.translation.correctiveMaintenance, "add_icon", CreateNewRequest.id)); list.add(CreateRequestModel(context.translation.correctiveMaintenance, "add_icon", CreateNewRequest.id));
list.add(CreateRequestModel(context.translation.gasRefill, "add_icon", NewGasRefillRequestPage.routeName)); list.add(CreateRequestModel(context.translation.gasRefill, "add_icon", GasRefillRequestForm.routeName));
list.add(CreateRequestModel(context.translation.deviceTransfer, "add_icon", CreateDeviceTransferRequest.id)); list.add(CreateRequestModel(context.translation.deviceTransfer, "add_icon", CreateDeviceTransferRequest.id));
list.add(CreateRequestModel(context.translation.task, "add_icon", CreateTaskView.id)); list.add(CreateRequestModel(context.translation.task, "add_icon", CreateTaskView.id));
} }

@ -1,6 +1,7 @@
import 'dart:convert'; import 'dart:convert';
import 'package:http/http.dart'; import 'package:http/http.dart';
import 'package:test_sa/models/new_models/mapped_sites.dart';
import 'package:test_sa/models/new_models/site.dart'; import 'package:test_sa/models/new_models/site.dart';
import 'package:test_sa/providers/loading_list_notifier.dart'; import 'package:test_sa/providers/loading_list_notifier.dart';
@ -17,7 +18,6 @@ class SiteProvider extends LoadingListNotifier<Site> {
Response response = await ApiManager.instance.get(URLs.getSiteAutoCompleteWithoutConditionSites); Response response = await ApiManager.instance.get(URLs.getSiteAutoCompleteWithoutConditionSites);
stateCode = response.statusCode; stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
// client's request was successfully received
List categoriesListJson = json.decode(response.body)["data"]; List categoriesListJson = json.decode(response.body)["data"];
items = categoriesListJson.map((item) => Site.fromJson(item)).toList(); items = categoriesListJson.map((item) => Site.fromJson(item)).toList();
} }
@ -32,3 +32,28 @@ class SiteProvider extends LoadingListNotifier<Site> {
} }
} }
} }
class MappedSiteProvider extends LoadingListNotifier<MappedSite> {
@override
Future getDate() async {
if (loading ?? false) return -2;
loading = true;
notifyListeners();
try {
Response response = await ApiManager.instance.post(URLs.getSites, body: {});
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
List categoriesListJson = json.decode(response.body)["data"];
items = categoriesListJson.map((item) => MappedSite.fromJson(item)).toList();
}
loading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
loading = false;
stateCode = -1;
notifyListeners();
return -1;
}
}
}

@ -78,9 +78,7 @@ class _CreateDeviceTransferRequestState extends State<CreateDeviceTransferReques
_formKey.currentState!.save(); _formKey.currentState!.save();
List<AssetTransferAttachment> attachement = []; List<AssetTransferAttachment> attachement = [];
for (var item in _deviceImages) { for (var item in _deviceImages) {
attachement.add(AssetTransferAttachment(id: 0, attachmentName: "${item.path attachement.add(AssetTransferAttachment(id: 0, attachmentName: "${item.path.split("/").last}|${base64Encode(item.readAsBytesSync())}"));
.split("/")
.last}|${base64Encode(item.readAsBytesSync())}"));
} }
_transferModel.attachments = attachement; _transferModel.attachments = attachement;
@ -103,7 +101,6 @@ class _CreateDeviceTransferRequestState extends State<CreateDeviceTransferReques
super.initState(); super.initState();
} }
@override @override
void dispose() { void dispose() {
_deviceTransferProvider.reset(); _deviceTransferProvider.reset();
@ -258,7 +255,6 @@ class _CreateDeviceTransferRequestState extends State<CreateDeviceTransferReques
); );
} }
Widget requestTypeWidget(BuildContext context) { Widget requestTypeWidget(BuildContext context) {
return Consumer<PpmServiceProvider>(builder: (cxt, snapshot, _) { return Consumer<PpmServiceProvider>(builder: (cxt, snapshot, _) {
try { try {
@ -337,4 +333,4 @@ class _CreateDeviceTransferRequestState extends State<CreateDeviceTransferReques
} }
return true; return true;
} }
} }

@ -79,6 +79,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
), ),
_buildTextWidget('${context.translation.requestNo} : ${_model?.transferCode ?? ""}'), _buildTextWidget('${context.translation.requestNo} : ${_model?.transferCode ?? ""}'),
_buildTextWidget('${context.translation.transferType} : ${_model?.transferType?.name ?? ""}'), _buildTextWidget('${context.translation.transferType} : ${_model?.transferType?.name ?? ""}'),
_buildTextWidget('${context.translation.createdBy} : ${_model?.name ?? ""}'),
const Divider().defaultStyle(context), const Divider().defaultStyle(context),
Text( Text(
"Asset Info".addTranslation, "Asset Info".addTranslation,
@ -91,16 +92,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
const Divider().defaultStyle(context), _contactInfo(),
Text(
"Contact Info".addTranslation,
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
if (_model?.receiverEndUserName != null) _buildTextWidget('${context.translation.receiverName} : ${_model?.receiverEndUserName ?? ""}'),
infoText(label: context.translation.employeeId, value: _model?.employeeId),
infoText(label: context.translation.name, value: _model?.name),
// infoText(label: context.translation.telephone, value: _model?.te),
if ((_model?.comment ?? "").isNotEmpty) ...[ if ((_model?.comment ?? "").isNotEmpty) ...[
const Divider().defaultStyle(context), const Divider().defaultStyle(context),
Text( Text(
@ -197,14 +189,13 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
); );
} }
_buildTextWidget(String text) { _buildTextWidget(String text) {
return text.bodyText(context); return text.bodyText(context);
} }
_internalRequestDetailsCard({StatusLabel? statusLabel}) { _internalRequestDetailsCard({StatusLabel? statusLabel}) {
bool isCurrentEngineerEligibleForEdit = _model?.senderAssignedEmployeeId == _userProvider!.user?.userID; bool isCurrentEngineerEligibleForEdit = _model?.senderAssignedEmployeeId == _userProvider!.user?.userID;
bool isCurrentRequestEditAble = (!(_model?.senderMachineStatusValue==3)); bool isCurrentRequestEditAble = (!(_model?.senderMachineStatusValue == 3));
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
@ -216,17 +207,16 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
children: [ children: [
statusLabel ?? Container(), statusLabel ?? Container(),
if (statusLabel != null) 8.height, if (statusLabel != null) 8.height,
], ],
), ),
if ((_userProvider!.user?.type == UsersTypes.engineer)) if ((_userProvider!.user?.type == UsersTypes.engineer))
if (isCurrentEngineerEligibleForEdit && isCurrentRequestEditAble) if (isCurrentEngineerEligibleForEdit && isCurrentRequestEditAble)
"edit".toSvgAsset(height: 40, width: 40).onPress(() async { "edit".toSvgAsset(height: 40, width: 40).onPress(() async {
bool isReload = (await Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model!, isSender: true)))) as bool; bool isReload = (await Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model!, isSender: true)))) as bool;
if (isReload ?? false) { if (isReload ?? false) {
setState(() {}); setState(() {});
} }
}), }),
], ],
), ),
context.translation.details.heading5(context), context.translation.details.heading5(context),
@ -237,14 +227,14 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
infoText(label: "Receiver Building".addTranslation, value: _model?.destBuildingName), infoText(label: "Receiver Building".addTranslation, value: _model?.destBuildingName),
infoText(label: "Receiver Floor".addTranslation, value: _model?.destFloorName), infoText(label: "Receiver Floor".addTranslation, value: _model?.destFloorName),
infoText(label: "Receiver Department".addTranslation, value: _model?.destDepartmentName), infoText(label: "Receiver Department".addTranslation, value: _model?.destDepartmentName),
if (_model!.comment != null && _model!.comment!.isNotEmpty) ...[ if (_model!.senderComment != null && _model!.senderComment!.isNotEmpty) ...[
8.height, 8.height,
const Divider().defaultStyle(context), const Divider().defaultStyle(context),
Text( Text(
"Technical Comments".addTranslation, "Technical Comments".addTranslation,
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
), ),
_buildTextWidget(_model?.comment ?? ''), _buildTextWidget(_model?.senderComment ?? ''),
] ]
], ],
).toShadowContainer(context); ).toShadowContainer(context);
@ -253,8 +243,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
_buildCard({required String site, String? building, String? dept, String? floor, required String comment, required bool isSender, StatusLabel? statusLabel}) { _buildCard({required String site, String? building, String? dept, String? floor, required String comment, required bool isSender, StatusLabel? statusLabel}) {
bool isCurrentEngineerEligibleForEdit = isSender ? _model?.senderAssignedEmployeeId == _userProvider!.user?.userID : _model?.receiverAssignedEmployeeId == _userProvider!.user?.userID; bool isCurrentEngineerEligibleForEdit = isSender ? _model?.senderAssignedEmployeeId == _userProvider!.user?.userID : _model?.receiverAssignedEmployeeId == _userProvider!.user?.userID;
bool isCurrentRequestClosed = bool isCurrentRequestClosed = isSender ? ((_model?.senderMachineStatusValue == 3)) : ((_model?.receiverMachineStatusValue == 3));
isSender ? ((_model?.senderMachineStatusValue==3)) : ((_model?.receiverMachineStatusValue==3));
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
@ -302,6 +291,42 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
).toShadowContainer(context); ).toShadowContainer(context);
} }
Widget _contactInfo() {
if (_model?.assetTransferContactPersons != null && _model!.assetTransferContactPersons!.isNotEmpty) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Divider().defaultStyle(context),
Text(
"Contact Info".addTranslation,
style: AppTextStyles.heading6.copyWith(
color: context.isDark ? AppColor.neutral30 : AppColor.neutral50,
),
),
..._model!.assetTransferContactPersons!.asMap().entries.map((entry) {
final index = entry.key;
final person = entry.value;
final isLast = index == _model!.assetTransferContactPersons!.length - 1;
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const SizedBox(height: 8),
infoText(label: context.translation.employeeId, value: person.employeeNumber),
infoText(label: context.translation.name, value: person.employeeName),
infoText(label: context.translation.email, value: person.email),
infoText(label: context.translation.phoneNumber, value: person.mobileNo),
infoText(label: context.translation.extensionNo, value: person.extension),
if (!isLast && _model!.assetTransferContactPersons!.length > 1) const Divider().defaultStyle(context),
],
);
}).toList(),
],
);
}
return const SizedBox();
}
Widget infoText({ Widget infoText({
String? label, String? label,
String? value, String? value,

@ -11,7 +11,7 @@ import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.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/views/pages/user/gas_refill/gas_refill_form.dart'; import 'package:test_sa/views/pages/user/gas_refill/update_gas_refill_request.dart';
import 'package:test_sa/views/widgets/images/files_list.dart'; import 'package:test_sa/views/widgets/images/files_list.dart';
import 'package:test_sa/views/widgets/loaders/app_loading.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/loaders/no_data_found.dart';
@ -73,14 +73,25 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
padding: const EdgeInsets.all(16), padding: const EdgeInsets.all(16),
child: informationCard(_model), child: informationCard(_model),
).expanded, ).expanded,
if (_userProvider.user!.type == UsersTypes.engineer && (_model.status!.value! != 2))
if (_userProvider.user!.type == UsersTypes.engineer && (_model.status!.value! != 2)) ...[
AppFilledButton( AppFilledButton(
onPressed: () async { onPressed: () async {
await Navigator.of(context).push(MaterialPageRoute(builder: (_) => GasRefillForm(gasRefillModel: _model))); await Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateGasRefillRequest(gasRefillModel: _model)));
// getVisitData(); // getVisitData();
}, },
label: context.translation.updateRequest, label: context.translation.updateRequest,
).paddingAll(16) ).paddingAll(16)
]
// else if(_model.status!.value! == 0)...[
// AppFilledButton(
// onPressed: () async {
// await Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateGasRefillRequest(gasRefillModel: _model)));
// // getVisitData();
// },
// label: context.translation.updateRequest,
// ).paddingAll(16)
// ],
], ],
); );
} }
@ -167,7 +178,7 @@ class _GasRefillDetailsPageState extends State<GasRefillDetailsPage> {
style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), style: AppTextStyles.heading6.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
), ),
8.height, 8.height,
FilesList(images: _model?.gasRefillAttachments?.map((e) => URLs.getFileUrl(e.attachmentName ?? '') ?? '').toList() ?? []), FilesList(images: _model.gasRefillAttachments?.map((e) => URLs.getFileUrl(e.attachmentName ?? '') ?? '').toList() ?? []),
], ],
], ],
).expanded, ).expanded,

@ -12,6 +12,7 @@ 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/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/lookup.dart'; import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/timer_model.dart'; import 'package:test_sa/models/timer_model.dart';
import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/app_style/app_color.dart';
@ -30,25 +31,21 @@ import '../../../../new_views/common_widgets/default_app_bar.dart';
import '../../../../new_views/common_widgets/single_item_drop_down_menu.dart'; import '../../../../new_views/common_widgets/single_item_drop_down_menu.dart';
import '../../../widgets/timer/app_timer.dart'; import '../../../widgets/timer/app_timer.dart';
class GasRefillForm extends StatefulWidget { class UpdateGasRefillRequest extends StatefulWidget {
static const String id = "/gas-refill-form"; static const String id = "/gas-refill-form";
final GasRefillModel? gasRefillModel; final GasRefillModel? gasRefillModel;
const GasRefillForm({this.gasRefillModel, Key? key}) : super(key: key); const UpdateGasRefillRequest({this.gasRefillModel, Key? key}) : super(key: key);
@override @override
State<GasRefillForm> createState() => _GasRefillFormState(); State<UpdateGasRefillRequest> createState() => _UpdateGasRefillRequestState();
} }
class _GasRefillFormState extends State<GasRefillForm> { class _UpdateGasRefillRequestState extends State<UpdateGasRefillRequest> {
final bool _isLoading = false; final bool _isLoading = false;
bool _validate = false;
Uint8List? _engineerSignature;
Uint8List? _nurseSignature;
double totalWorkingHours = 0.0; double totalWorkingHours = 0.0;
late UserProvider _userProvider; late UserProvider _userProvider;
late SettingProvider _settingProvider;
GasRefillProvider? _gasRefillProvider; GasRefillProvider? _gasRefillProvider;
GasRefillDetails _currentDetails = GasRefillDetails(); GasRefillDetails _currentDetails = GasRefillDetails();
final TextEditingController _deliveredQuantityController = TextEditingController(); final TextEditingController _deliveredQuantityController = TextEditingController();
@ -57,7 +54,6 @@ class _GasRefillFormState extends State<GasRefillForm> {
final GasRefillModel _formModel = GasRefillModel(gasRefillDetails: []); final GasRefillModel _formModel = GasRefillModel(gasRefillDetails: []);
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final GlobalKey _DetailsKey = GlobalKey<FormState>();
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>(); final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
bool _firstTime = true; bool _firstTime = true;
@ -164,11 +160,9 @@ class _GasRefillFormState extends State<GasRefillForm> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
_userProvider = Provider.of<UserProvider>(context); _userProvider = Provider.of<UserProvider>(context);
_settingProvider = Provider.of<SettingProvider>(context);
if (_firstTime) { if (_firstTime) {
String? clientName; String? clientName;
if (widget.gasRefillModel != null) { if (widget.gasRefillModel != null) {
//_formModel.status = widget.gasRefillModel?.status ?? Lookup(value: 0);
_gasRefillProvider!.expectedDateTime = DateTime.tryParse(_formModel.expectedDate ?? ""); _gasRefillProvider!.expectedDateTime = DateTime.tryParse(_formModel.expectedDate ?? "");
_formModel.timer = TimerModel(startAt: DateTime.tryParse(widget.gasRefillModel?.startDate ?? ""), endAt: DateTime.tryParse(widget.gasRefillModel?.endDate ?? "")); _formModel.timer = TimerModel(startAt: DateTime.tryParse(widget.gasRefillModel?.startDate ?? ""), endAt: DateTime.tryParse(widget.gasRefillModel?.endDate ?? ""));
clientName = _formModel.site?.custName; clientName = _formModel.site?.custName;
@ -176,15 +170,6 @@ class _GasRefillFormState extends State<GasRefillForm> {
_formModel.timer = null; _formModel.timer = null;
clientName = _userProvider.user?.clientName; clientName = _userProvider.user?.clientName;
} }
// HospitalsProvider().getHospitalsListByVal(searchVal: clientName ?? '').then((value) {
// _gasRefillProvider!.hospital = value.firstWhere((element) => element.name == clientName, orElse: null);
// _gasRefillProvider!.building = _gasRefillProvider!.hospital?.buildings?.firstWhere((element) => element.name == widget.gasRefillModel?.building?.name, orElse: null);
// _gasRefillProvider!.floor = _gasRefillProvider!.building?.floors?.firstWhere((element) => element.name == widget.gasRefillModel?.floor?.name, orElse: null);
// _gasRefillProvider!.department = _gasRefillProvider!.floor?.departments?.firstWhere((element) => element.name == widget.gasRefillModel?.department?.departmentName, orElse: null);
// _firstTime = false;
// setState(() {});
// });
} }
double totalWorkingHours = _formModel.gasRefillTimers?.fold(0.0, (sum, item) => (sum ?? 0) + DateTime.parse(item.endDate!).difference(DateTime.parse(item.startDate!)).inSeconds) ?? 0; double totalWorkingHours = _formModel.gasRefillTimers?.fold(0.0, (sum, item) => (sum ?? 0) + DateTime.parse(item.endDate!).difference(DateTime.parse(item.startDate!)).inSeconds) ?? 0;
@ -212,24 +197,13 @@ class _GasRefillFormState extends State<GasRefillForm> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
// Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// context.translation.gasRefill.heading5(context),
// 8.height,
// '${context.translation.gasRequest}: ${widget.gasRefillModel!.gasRefillDetails![0].gasType!.name}'.bodyText(context),
// '${context.translation.cylinderType}: ${widget.gasRefillModel!.gasRefillDetails![0].cylinderType!.name}'.bodyText(context),
// '${context.translation.cylinderSize}: ${widget.gasRefillModel!.gasRefillDetails![0].cylinderSize!.name}'.bodyText(context),
// '${context.translation.quantity}: ${widget.gasRefillModel!.gasRefillDetails![0].requestedQty ?? 0}'.bodyText(context),
// '${context.translation.site}: ${widget.gasRefillModel!.site?.name}'.bodyText(context),
// ],
// ).toShadowContainer(context),
8.height, 8.height,
SingleItemDropDownMenu<Lookup, NullableLoadingProvider>( SingleItemDropDownMenu<Lookup, NullableLoadingProvider>(
context: context, context: context,
title: context.translation.quantity, title: context.translation.quantity,
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
showShadow: false, showShadow: false,
showAsBottomSheet: true,
initialValue: _deliveredQuantity, initialValue: _deliveredQuantity,
staticData: deliveredQuantity, staticData: deliveredQuantity,
onSelect: (value) { onSelect: (value) {
@ -238,43 +212,8 @@ class _GasRefillFormState extends State<GasRefillForm> {
}, },
), ),
8.height, 8.height,
// AppTextFormField(
// initialValue: _formModel.gasRefillDetails?[0].deliverdQty?.toString() ?? "",
// labelText: context.translation.deliveredQuantity,
// onSaved: (value) {
// _currentDetails.deliverdQty = double.tryParse(value);
// },
// textInputType: TextInputType.number,
// controller: _deliveredQuantityController,
// validator: (value) => value == null || value.isEmpty
// ? context.translation.requiredField
// : Validator.isNumeric(value)
// ? null
// : context.translation.onlyNumbers,
// ),
// 8.height,
_timerWidget(context, totalWorkingHours), _timerWidget(context, totalWorkingHours),
8.height, 8.height,
// SingleItemDropDownMenu<Lookup, GasStatusProvider>(
// context: context,
// title: context.translation.requestStatus,
// initialValue: _formModel.status,
// onSelect: (value) {
// if (value?.value == 0) {
// "Status cannot be change to ${value?.name}.".addTranslation.showToast;
// setState(() {});
// return;
// }
// if (value != null) {
// _formModel.status = value;
// }
// },
// ),
// 8.height,
// 8.height,
/// TBD
AppTextFormField( AppTextFormField(
labelText: context.translation.technicalComment, labelText: context.translation.technicalComment,
textInputType: TextInputType.multiline, textInputType: TextInputType.multiline,
@ -296,29 +235,6 @@ class _GasRefillFormState extends State<GasRefillForm> {
buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120), buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120),
), ),
8.height, 8.height,
// ESignature(
// title: "Engineer Signature",
// oldSignature: widget.gasRefillModel?.engSignature,
// newSignature: _engineerSignature,
// onSaved: (signature) {
// _engineerSignature = signature;
// if (signature == null || signature.isEmpty) return;
// _formModel.engSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}";
// //base64Encode(signature);
// },
// ),
// 8.height,
// ESignature(
// title: "Nurse Signature",
// oldSignature: widget.gasRefillModel?.nurseSignature,
// newSignature: _nurseSignature,
// onSaved: (signature) {
// _nurseSignature = signature;
// if (signature == null || signature.isEmpty) return;
// _formModel.nurseSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}";
// //base64Encode(signature);
// },
// ),
], ],
).toShadowContainer(context), ).toShadowContainer(context),
).expanded, ).expanded,

@ -9,7 +9,7 @@
// 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/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/new_views/pages/new_gas_refill_request_page.dart'; // import 'package:test_sa/new_views/pages/gas_refill_request_form.dart';
// import 'package:test_sa/views/app_style/sizing.dart'; // import 'package:test_sa/views/app_style/sizing.dart';
// import 'package:test_sa/views/pages/device_transfer/track_device_transfer.dart'; // import 'package:test_sa/views/pages/device_transfer/track_device_transfer.dart';
// import 'package:test_sa/views/pages/user/gas_refill/track_gas_refill.dart'; // import 'package:test_sa/views/pages/user/gas_refill/track_gas_refill.dart';

@ -1,6 +1,5 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/dashboard_latest/dashboard_provider.dart'; import 'package:test_sa/dashboard_latest/dashboard_provider.dart';
@ -13,6 +12,7 @@ import 'package:test_sa/models/enums/user_types.dart';
import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/new_models/building.dart'; import 'package:test_sa/models/new_models/building.dart';
import 'package:test_sa/models/new_models/floor.dart'; import 'package:test_sa/models/new_models/floor.dart';
import 'package:test_sa/models/new_models/mapped_sites.dart';
import 'package:test_sa/models/new_models/room_model.dart'; import 'package:test_sa/models/new_models/room_model.dart';
import 'package:test_sa/models/new_models/task_request/task_request_model.dart'; import 'package:test_sa/models/new_models/task_request/task_request_model.dart';
import 'package:test_sa/models/new_models/task_request/task_type_model.dart'; import 'package:test_sa/models/new_models/task_request/task_type_model.dart';
@ -29,7 +29,6 @@ import 'package:test_sa/service_request_latest/views/components/action_button/fo
import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart';
import 'package:test_sa/views/widgets/equipment/asset_picker.dart'; import 'package:test_sa/views/widgets/equipment/asset_picker.dart';
import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; import 'package:test_sa/views/widgets/images/multi_image_picker.dart';
import '../../../../../../new_views/common_widgets/default_app_bar.dart'; import '../../../../../../new_views/common_widgets/default_app_bar.dart';
import '../../../../models/new_models/department.dart'; import '../../../../models/new_models/department.dart';
import '../../../../models/new_models/site.dart'; import '../../../../models/new_models/site.dart';
@ -154,7 +153,7 @@ class _CreateTaskViewState extends State<CreateTaskView> with TickerProviderStat
return Column( return Column(
children: [ children: [
8.height, 8.height,
SingleItemDropDownMenu<Site, SiteProvider>( SingleItemDropDownMenu<MappedSite, MappedSiteProvider>(
context: context, context: context,
title: context.translation.destinationSite, title: context.translation.destinationSite,
initialValue: _addTaskModel?.site, initialValue: _addTaskModel?.site,
@ -170,7 +169,7 @@ class _CreateTaskViewState extends State<CreateTaskView> with TickerProviderStat
}, },
), ),
8.height, 8.height,
SingleItemDropDownMenu<Building, NullableLoadingProvider>( SingleItemDropDownMenu<MappedBuilding, NullableLoadingProvider>(
context: context, context: context,
title: context.translation.building, title: context.translation.building,
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
@ -187,7 +186,7 @@ class _CreateTaskViewState extends State<CreateTaskView> with TickerProviderStat
}, },
), ),
8.height, 8.height,
SingleItemDropDownMenu<Floor, NullableLoadingProvider>( SingleItemDropDownMenu<MappedFloor, NullableLoadingProvider>(
context: context, context: context,
showAsBottomSheet: true, showAsBottomSheet: true,
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
@ -203,7 +202,7 @@ class _CreateTaskViewState extends State<CreateTaskView> with TickerProviderStat
}, },
), ),
8.height, 8.height,
SingleItemDropDownMenu<Department, NullableLoadingProvider>( SingleItemDropDownMenu<MappedDepartment, NullableLoadingProvider>(
context: context, context: context,
title: context.translation.department, title: context.translation.department,
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,

@ -10,7 +10,7 @@ import 'package:test_sa/models/all_requests_and_count_model.dart';
import 'package:test_sa/models/new_models/task_request/task_request_model.dart'; import 'package:test_sa/models/new_models/task_request/task_request_model.dart';
import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
import 'package:test_sa/providers/task_request_provider/task_request_provider.dart'; import 'package:test_sa/providers/task_request_provider/task_request_provider.dart';
import 'package:test_sa/views/pages/user/tasks_request/task_request_form_view.dart'; import 'package:test_sa/views/pages/user/tasks_request/update_task_request_view.dart';
import 'package:test_sa/views/widgets/images/files_list.dart'; import 'package:test_sa/views/widgets/images/files_list.dart';
import 'package:test_sa/views/widgets/loaders/app_loading.dart'; import 'package:test_sa/views/widgets/loaders/app_loading.dart';
@ -141,7 +141,7 @@ class _TaskRequestDetailsViewState extends State<TaskRequestDetailsView> {
if (taskProvider.taskRequestModel?.taskType?.isInstallation == true) { if (taskProvider.taskRequestModel?.taskType?.isInstallation == true) {
taskProvider.getSiteData(siteId: taskProvider.taskRequestModel?.asset?.siteId); taskProvider.getSiteData(siteId: taskProvider.taskRequestModel?.asset?.siteId);
} }
Navigator.of(context).push(MaterialPageRoute(builder: (_) => TaskRequestForm(taskId: widget.taskId))); Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateTaskRequest(taskId: widget.taskId)));
}, },
label: context.translation.updateRequest, label: context.translation.updateRequest,
).paddingAll(16) ).paddingAll(16)

@ -12,7 +12,7 @@ import 'package:test_sa/models/plan_preventive_visit/plan_preventive_visit_model
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/views/pages/user/ppm/ppm_work_order/recurrent_wo/recurrent_work_order_view.dart'; import 'package:test_sa/views/pages/user/ppm/ppm_work_order/recurrent_wo/recurrent_work_order_view.dart';
import 'package:test_sa/views/pages/user/tasks_request/task_request_detail_view.dart'; import 'package:test_sa/views/pages/user/tasks_request/task_request_detail_view.dart';
import 'package:test_sa/views/pages/user/tasks_request/task_request_form_view.dart'; import 'package:test_sa/views/pages/user/tasks_request/update_task_request_view.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart';
class TaskRequestItemView extends StatelessWidget { class TaskRequestItemView extends StatelessWidget {

@ -36,16 +36,16 @@ import 'package:test_sa/views/widgets/timer/app_timer.dart';
import '../../../../models/new_models/site.dart'; import '../../../../models/new_models/site.dart';
import '../../../../models/new_models/work_order_detail_model.dart'; import '../../../../models/new_models/work_order_detail_model.dart';
class TaskRequestForm extends StatefulWidget { class UpdateTaskRequest extends StatefulWidget {
final int taskId; final int taskId;
const TaskRequestForm({Key? key, required this.taskId}) : super(key: key); const UpdateTaskRequest({Key? key, required this.taskId}) : super(key: key);
@override @override
State<TaskRequestForm> createState() => _TaskRequestFormState(); State<UpdateTaskRequest> createState() => _UpdateTaskRequestState();
} }
class _TaskRequestFormState extends State<TaskRequestForm> { class _UpdateTaskRequestState extends State<UpdateTaskRequest> {
TaskRequestProvider? _taskProvider; TaskRequestProvider? _taskProvider;
final TextEditingController _requestedQuantityController = TextEditingController(); final TextEditingController _requestedQuantityController = TextEditingController();
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); final GlobalKey<FormState> _formKey = GlobalKey<FormState>();

@ -1305,10 +1305,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: record_mp3_plus name: record_mp3_plus
sha256: bf0b3f3ed96227a289ddf71605eb5370e5d43b8a2c17429ec55e60ace03d76e9 sha256: "654e2eb4ef028c1eaf73b981e9e2abd3756c61b0ee88dc6bc60416c474fbce5d"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.2.0" version: "1.3.0"
rive: rive:
dependency: "direct main" dependency: "direct main"
description: description:

Loading…
Cancel
Save