Merge branch 'main_latest_merged' into zaid_development_new

# Conflicts:
#	assets/subtitles/ar_subtitle.json
#	assets/subtitles/en_subtitle.json
#	lib/models/subtitle.dart
pull/2/head
Sikander Saleem 3 years ago
commit b9263ae1d8

@ -192,6 +192,7 @@
"assignedEmployee": "الموظف المعين", "assignedEmployee": "الموظف المعين",
"assetSN": "رقم تسلسلي للاصل ", "assetSN": "رقم تسلسلي للاصل ",
"assetName": "اسم الاصل", "assetName": "اسم الاصل",
"assetNumber": "رقم الاصل",
"site": "الموقع", "site": "الموقع",
"maintenanceSituation": "موقع الصيانه", "maintenanceSituation": "موقع الصيانه",
"currentSituation": "الموقع الحالي", "currentSituation": "الموقع الحالي",
@ -200,7 +201,13 @@
"repairLocation" : "موقع الإصلاح", "repairLocation" : "موقع الإصلاح",
"travelingExpense" : "مصاريف التنقل", "travelingExpense" : "مصاريف التنقل",
"startDate" : "وقت البدء", "startDate" : "وقت البدء",
"endDate" : "وقت الانتهاء",
"requestedQuantity" : "الكمية المطلوبة", "requestedQuantity" : "الكمية المطلوبة",
"deliveredQuantity" : "الكمية المسلّمة" "deliveredQuantity" : "الكمية المسلّمة"
"endDate" : "وقت الانتهاء",
"destinationSite": "موقع الوجهه",
"building": "بناء",
"floor": "طابق",
"department": "قسم",
"room": "غرفه",
"actions": "اجراءات"
} }

@ -187,6 +187,7 @@
"assignedEmployee": "Assigned Employee", "assignedEmployee": "Assigned Employee",
"assetSN": "Asset S.N", "assetSN": "Asset S.N",
"assetName": "Asset Name", "assetName": "Asset Name",
"assetNumber": "Asset Number",
"site": "Site", "site": "Site",
"maintenanceSituation": "Maintenance Situation", "maintenanceSituation": "Maintenance Situation",
"currentSituation": "Current Situation", "currentSituation": "Current Situation",
@ -200,7 +201,15 @@
"repairLocation" : "Repair Location", "repairLocation" : "Repair Location",
"travelingExpense": "Traveling Expense", "travelingExpense": "Traveling Expense",
"startDate" : "Start Date", "startDate" : "Start Date",
"endDate" : "End Date",
"requestedQuantity" : "Requested Quantity", "requestedQuantity" : "Requested Quantity",
"deliveredQuantity" : "Delivered Quantity" "deliveredQuantity" : "Delivered Quantity"
"endDate" : "End Date",
"destinationSite": "Destination Site",
"building": "Building",
"floor": "Floor",
"department": "Department",
"room": "Room",
"actions": "Actions"
} }

@ -8,6 +8,8 @@ import 'package:test_sa/models/device/device_transfer.dart';
import 'package:test_sa/models/device/device_transfer_info.dart'; import 'package:test_sa/models/device/device_transfer_info.dart';
import 'package:test_sa/models/user.dart'; import 'package:test_sa/models/user.dart';
import '../../../models/hospital.dart';
class DeviceTransferProvider extends ChangeNotifier { class DeviceTransferProvider extends ChangeNotifier {
// number of items call in each request // number of items call in each request
final pageItemNumber = 12; final pageItemNumber = 12;
@ -17,6 +19,13 @@ class DeviceTransferProvider extends ChangeNotifier {
items = null; items = null;
nextPage = true; nextPage = true;
stateCode = null; stateCode = null;
hospital = null;
building = null;
floor = null;
department = null;
room="";
startDate = null;
endDate = null;
} }
// state code of current request to defied error message // state code of current request to defied error message
@ -35,6 +44,15 @@ class DeviceTransferProvider extends ChangeNotifier {
// failed _loading = false // failed _loading = false
bool isLoading; bool isLoading;
Hospital hospital;
Buildings building;
Floors floor;
Departments department;
String room;
DateTime startDate;
DateTime endDate;
/// return -2 if request in progress /// return -2 if request in progress
/// return -1 if error happen when sending request /// return -1 if error happen when sending request
/// return state code if request complete may be 200, 404 or 403 /// return state code if request complete may be 200, 404 or 403
@ -46,21 +64,6 @@ class DeviceTransferProvider extends ChangeNotifier {
}) async { }) async {
if (isLoading == true) return -2; if (isLoading == true) return -2;
isLoading = true; isLoading = true;
// isLoading = false;
// stateCode = 200;
// items = [];
// items.addAll(List.generate(20, (index) => DeviceTransfer(
// title: "ddddd",
// id: "5",
// device: Device(id: "1",brand: "brand",model: "model"),
// destinationClient: Hospital(name: "hospital name",id: "1"),
// destinationDepartment: Department(id: "5",name: "destination Department"),
// senderDepartment: Department(id: "5",name: "sender Department"),
// userId: "5"
// )));
// notifyListeners();
// return 200;
Response response; Response response;
try { try {
Map<String, dynamic> body = {}; Map<String, dynamic> body = {};
@ -103,12 +106,36 @@ class DeviceTransferProvider extends ChangeNotifier {
@required DeviceTransfer model, @required DeviceTransfer model,
}) async { }) async {
Map<String, dynamic> body = { Map<String, dynamic> body = {
// "uid": user.id.toString(), "id": 0,
// "token": user.token ?? "",
"assetId": model.device.id ?? "", "assetId": model.device.id ?? "",
"destSiteId": model.receiver.client.id ?? "", "destSiteId": model.receiver.client.id ?? "",
"destDepartmentId": model.receiver.department.id ?? "", "destDepartmentId": model.receiver.department.id ?? "",
"senderSiteId": model.receiver.client.id ?? "", "senderSiteId": model.receiver.client.id ?? "",
// "transferNo": 0,
// "transferCode": "string",
"destBuildingId": building?.id,
"destFloorId": floor.id,
"destRoom": room,
// "senderBuildingId": 0,
// "senderFloorId": 0,
// "senderDepartmentId": 0,
// "senderRoom": "string",
// "senderAssignedEmployeeId": "string",
// "senderMachineStatusId": 0,
// "senderComment": "string",
// "senderStartDate": "2023-06-11T09:21:56.453Z",
// "senderEndDate": "2023-06-11T09:21:56.453Z",
// "senderWorkingHours": "string",
// "senderTravelingHours": "string",
// "senderAttachmentName": "string",
// "receiverAssignedEmployeeId": "string",
// "receiverMachineStatusId": 0,
// "receiverComment": "string",
// "receiverStartDate": "2023-06-11T09:21:56.453Z",
// "receiverEndDate": "2023-06-11T09:21:56.453Z",
// "receiverWorkingHours": "string",
// "receiverTravelingHours": "string",
// "receiverAttachmentName": "string"
}; };
Response response; Response response;
@ -118,6 +145,7 @@ class DeviceTransferProvider extends ChangeNotifier {
if (response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
if (items != null) { if (items != null) {
items.insert(0, DeviceTransfer.fromJson(json.decode(utf8.decode(response.bodyBytes))[0])); items.insert(0, DeviceTransfer.fromJson(json.decode(utf8.decode(response.bodyBytes))[0]));
reset();
notifyListeners(); notifyListeners();
} }
} }
@ -151,6 +179,8 @@ class DeviceTransferProvider extends ChangeNotifier {
"senderMachineStatusId": newModel.status.id, "senderMachineStatusId": newModel.status.id,
"senderComment": newModel.comment, "senderComment": newModel.comment,
"senderWorkingHours": newModel.workingHours, "senderWorkingHours": newModel.workingHours,
"senderStartDate": newModel.startDate?.toIso8601String(),
"senderEndDate": newModel.endDate?.toIso8601String(),
"senderTravelingHours": newModel.travelingHours, "senderTravelingHours": newModel.travelingHours,
"senderAttachmentName": "${newModel.signature}.png", "senderAttachmentName": "${newModel.signature}.png",
"destSiteId": oldModel.receiver.client.id, "destSiteId": oldModel.receiver.client.id,
@ -159,6 +189,8 @@ class DeviceTransferProvider extends ChangeNotifier {
"receiverMachineStatusId": oldModel.receiver.status.id ?? "", "receiverMachineStatusId": oldModel.receiver.status.id ?? "",
"receiverComment": oldModel.receiver.comment, "receiverComment": oldModel.receiver.comment,
"receiverWorkingHours": oldModel.receiver.workingHours, "receiverWorkingHours": oldModel.receiver.workingHours,
"receiverStartDate": oldModel.receiver.startDate?.toIso8601String(),
"receiverEndDate": oldModel.receiver.endDate?.toIso8601String(),
"receiverTravelingHours": oldModel.receiver.travelingHours, "receiverTravelingHours": oldModel.receiver.travelingHours,
"receiverAttachmentName": "${oldModel.receiver.signature}.png", "receiverAttachmentName": "${oldModel.receiver.signature}.png",
}); });
@ -170,6 +202,8 @@ class DeviceTransferProvider extends ChangeNotifier {
"senderMachineStatusId": oldModel.sender.status.id, "senderMachineStatusId": oldModel.sender.status.id,
"senderComment": oldModel.sender.comment, "senderComment": oldModel.sender.comment,
"senderWorkingHours": oldModel.sender.workingHours, "senderWorkingHours": oldModel.sender.workingHours,
"senderStartDate": oldModel.sender.startDate?.toIso8601String(),
"senderEndDate": oldModel.sender.endDate?.toIso8601String(),
"senderTravelingHours": oldModel.sender.travelingHours, "senderTravelingHours": oldModel.sender.travelingHours,
"senderAttachmentName": "${oldModel.sender.signature}.png", "senderAttachmentName": "${oldModel.sender.signature}.png",
"destSiteId": newModel.client.id, "destSiteId": newModel.client.id,
@ -178,13 +212,13 @@ class DeviceTransferProvider extends ChangeNotifier {
"receiverMachineStatusId": newModel.status?.id ?? "", "receiverMachineStatusId": newModel.status?.id ?? "",
"receiverComment": newModel.comment, "receiverComment": newModel.comment,
"receiverWorkingHours": newModel.workingHours, "receiverWorkingHours": newModel.workingHours,
"receiverStartDate": newModel.startDate?.toIso8601String(),
"receiverEndDate": newModel.endDate?.toIso8601String(),
"receiverTravelingHours": newModel.travelingHours, "receiverTravelingHours": newModel.travelingHours,
"receiverAttachmentName": "${newModel.signature}.png", "receiverAttachmentName": "${newModel.signature}.png",
}); });
} }
print(body["senderWorkingHours"]);
body.addAll(newModel.toJson(isSender)); body.addAll(newModel.toJson(isSender));
print(body); print(body);
Response response; Response response;
@ -213,4 +247,5 @@ class DeviceTransferProvider extends ChangeNotifier {
return -1; return -1;
} }
} }
} }

@ -7,6 +7,11 @@ class Device {
int id; int id;
String serialNumber; String serialNumber;
String number; String number;
String destBuildingName;
String destDepartmentName;
String destRoom;
String destFloor;
String destSiteName;
// String brand; // String brand;
// String model; // String model;
ModelDefinition modelDefinition; ModelDefinition modelDefinition;
@ -17,6 +22,11 @@ class Device {
this.serialNumber, this.serialNumber,
this.number, this.number,
this.hospital, this.hospital,
this.destBuildingName,
this.destDepartmentName,
this.destRoom,
this.destFloor,
this.destSiteName,
// this.brand, // this.brand,
// this.model, // this.model,
this.modelDefinition, this.modelDefinition,
@ -29,6 +39,11 @@ class Device {
number: parsedJson["assetNumber"], number: parsedJson["assetNumber"],
modelDefinition: ModelDefinition.fromJson(parsedJson["modelDefinition"]), modelDefinition: ModelDefinition.fromJson(parsedJson["modelDefinition"]),
hospital: Hospital.fromJson(parsedJson["site"]), hospital: Hospital.fromJson(parsedJson["site"]),
destBuildingName: parsedJson["destBuildingName"],
destDepartmentName: parsedJson["destDepartmentName"],
destRoom: parsedJson["destRoom"],
destFloor: parsedJson["destFloor"],
destSiteName:parsedJson['destSiteName']
// parsedJson["modelDefinition"] == null ? "" : // parsedJson["modelDefinition"] == null ? "" :
// parsedJson["modelDefinition"]["manufacturerName"], // parsedJson["modelDefinition"]["manufacturerName"],
// model: parsedJson["modelDefinition"] == null ? "" : // model: parsedJson["modelDefinition"] == null ? "" :

@ -49,13 +49,21 @@ class DeviceTransfer {
id: parsedJson["assetId"], id: parsedJson["assetId"],
number: parsedJson["assetNumber"], number: parsedJson["assetNumber"],
serialNumber: parsedJson["assetSerialNo"], serialNumber: parsedJson["assetSerialNo"],
destBuildingName: parsedJson["destBuildingName"],
destDepartmentName: parsedJson["destDepartmentName"],
destFloor: parsedJson["destFloor"],
destRoom: parsedJson["destRoom"],
destSiteName: parsedJson["destSiteName"]
), ),
sender: DeviceTransferInfo( sender: DeviceTransferInfo(
travelingHours: parsedJson["senderTravelingHours"], travelingHours: parsedJson["senderTravelingHours"],
comment: parsedJson["senderComment"], comment: parsedJson["senderComment"],
workingHours: parsedJson["senderWorkingHours"], workingHours: parsedJson["senderWorkingHours"],
startDate: parsedJson["senderStartDate"]==null ? null:DateTime.parse(parsedJson["senderStartDate"]),
endDate: parsedJson["senderEndDate"]==null ? null:DateTime.parse(parsedJson["senderEndDate"]),
userId: parsedJson["senderAssignedEmployeeId"], userId: parsedJson["senderAssignedEmployeeId"],
userName: parsedJson["senderAssignedEmployeeName"], userName: parsedJson["senderAssignedEmployeeName"],
assignedEmployeeName: parsedJson["senderAssignedEmployeeName"],
client: Hospital(id: parsedJson["senderSiteId"], name: parsedJson["senderSiteName"]), client: Hospital(id: parsedJson["senderSiteId"], name: parsedJson["senderSiteName"]),
department: Department( department: Department(
id: parsedJson["senderDepartmentId"], id: parsedJson["senderDepartmentId"],
@ -72,8 +80,11 @@ class DeviceTransfer {
travelingHours: parsedJson["receiverTravelingHours"], travelingHours: parsedJson["receiverTravelingHours"],
comment: parsedJson["receiverComment"], comment: parsedJson["receiverComment"],
workingHours: parsedJson["receiverWorkingHours"], workingHours: parsedJson["receiverWorkingHours"],
startDate: parsedJson["receiverStartDate"]==null ? null:DateTime.parse(parsedJson["receiverStartDate"]),
endDate: parsedJson["receiverEndDate"]==null ? null:DateTime.parse(parsedJson["receiverEndDate"]),
userId: parsedJson["receiverAssignedEmployeeId"], userId: parsedJson["receiverAssignedEmployeeId"],
userName: parsedJson["receiverAssignedEmployeeName"], userName: parsedJson["receiverAssignedEmployeeName"],
assignedEmployeeName: parsedJson["receiverAssignedEmployeeName"],
client: Hospital(id: parsedJson["destSiteId"], name: parsedJson["destSiteName"]), client: Hospital(id: parsedJson["destSiteId"], name: parsedJson["destSiteName"]),
department: Department( department: Department(
id: parsedJson["destDepartmentId"], id: parsedJson["destDepartmentId"],

@ -8,9 +8,12 @@ class DeviceTransferInfo {
Hospital client; Hospital client;
Department department; Department department;
String workingHours; String workingHours;
DateTime startDate;
DateTime endDate;
String travelingHours; String travelingHours;
String userName; String userName;
String signature; String signature;
String assignedEmployeeName;
Lookup status; Lookup status;
DeviceTransferInfo({ DeviceTransferInfo({
@ -20,9 +23,12 @@ class DeviceTransferInfo {
this.client, this.client,
this.userName, this.userName,
this.travelingHours, this.travelingHours,
this.startDate,
this.endDate,
this.workingHours, this.workingHours,
this.signature, this.signature,
this.status, this.status,
this.assignedEmployeeName
}); });
Map<String, String> toJson(bool isSender) { Map<String, String> toJson(bool isSender) {
@ -31,6 +37,8 @@ class DeviceTransferInfo {
if (comment != null && comment.isNotEmpty) body["${baseKey}comment"] = comment; if (comment != null && comment.isNotEmpty) body["${baseKey}comment"] = comment;
if (workingHours != null && workingHours.isNotEmpty) body["${baseKey}working_hours"] = workingHours; if (workingHours != null && workingHours.isNotEmpty) body["${baseKey}working_hours"] = workingHours;
if (startDate != null) body["${baseKey}start_date"] = startDate?.toIso8601String();
if (endDate != null) body["${baseKey}end_date"] = endDate?.toIso8601String();
if (travelingHours != null && travelingHours.isNotEmpty) body["${baseKey}travel_hours"] = travelingHours; if (travelingHours != null && travelingHours.isNotEmpty) body["${baseKey}travel_hours"] = travelingHours;
if (status != null) body["${baseKey}status"] = status.id.toString(); if (status != null) body["${baseKey}status"] = status.id.toString();
if (signature != null && signature.isNotEmpty) body["${baseKey}image"] = signature; if (signature != null && signature.isNotEmpty) body["${baseKey}image"] = signature;
@ -49,6 +57,8 @@ class DeviceTransferInfo {
client = Hospital.fromHospital(old.client); client = Hospital.fromHospital(old.client);
department = Department.fromDepartment(old.department); department = Department.fromDepartment(old.department);
workingHours = old.workingHours; workingHours = old.workingHours;
startDate = old.startDate;
endDate = old.endDate;
travelingHours = old.travelingHours; travelingHours = old.travelingHours;
comment = old.comment; comment = old.comment;
if (withSignature) signature = old.signature; if (withSignature) signature = old.signature;
@ -58,11 +68,14 @@ class DeviceTransferInfo {
factory DeviceTransferInfo.fromJson(Map<String, dynamic> parsedJson, String key) { factory DeviceTransferInfo.fromJson(Map<String, dynamic> parsedJson, String key) {
return DeviceTransferInfo( return DeviceTransferInfo(
workingHours: parsedJson["${key}working_hours"], workingHours: parsedJson["${key}working_hours"],
startDate: parsedJson["${key}start_date"],
endDate: parsedJson["${key}end_date"],
travelingHours: parsedJson["${key}travel_hours"], travelingHours: parsedJson["${key}travel_hours"],
userName: parsedJson["${key}name"], userName: parsedJson["${key}name"],
signature: parsedJson["${key}image"], signature: parsedJson["${key}image"],
userId: parsedJson["${key}id"], userId: parsedJson["${key}id"],
comment: parsedJson["${key}comment"], comment: parsedJson["${key}comment"],
assignedEmployeeName:parsedJson["${key}AssignedEmployeeName"],
client: Hospital(id: parsedJson["${key}SiteId"], name: parsedJson["${key}SiteName"]), client: Hospital(id: parsedJson["${key}SiteId"], name: parsedJson["${key}SiteName"]),
department: Department( department: Department(
id: parsedJson["${key}DepartmentId"], id: parsedJson["${key}DepartmentId"],

@ -8,8 +8,9 @@ class Engineer {
}); });
factory Engineer.fromJson(Map<String, dynamic> parsedJson) { factory Engineer.fromJson(Map<String, dynamic> parsedJson) {
if(parsedJson==null) return Engineer();
return Engineer( return Engineer(
id: parsedJson["userId"] ?? parsedJson["id"], id: parsedJson["userId"] ?? parsedJson["id"],
name: parsedJson["userName"] ?? parsedJson["name"], name: parsedJson["userName"] ?? parsedJson["name"],
); );
} }

@ -213,6 +213,7 @@ class Subtitle {
String assignedEmployee; String assignedEmployee;
String assetSN; String assetSN;
String assetName; String assetName;
String assetNumber;
String site; String site;
String maintenanceSituation; String maintenanceSituation;
String currentSituation; String currentSituation;
@ -230,6 +231,13 @@ class Subtitle {
String endDate; String endDate;
String requestedQuantity; String requestedQuantity;
String deliveredQuantity; String deliveredQuantity;
String destinationSite;
String building;
String floor;
String department;
String room;
String actions;
void setIssues(List<String> issues) { void setIssues(List<String> issues) {
issues.clear(); issues.clear();
@ -435,6 +443,13 @@ class Subtitle {
@required this.endDate, @required this.endDate,
@required this.requestedQuantity, @required this.requestedQuantity,
@required this.deliveredQuantity, @required this.deliveredQuantity,
@required this.assetNumber,
@required this.destinationSite,
@required this.building,
@required this.floor,
@required this.department,
@required this.room,
@required this.actions,
}); });
factory Subtitle.fromJson(Map<String, dynamic> parsedJson) { factory Subtitle.fromJson(Map<String, dynamic> parsedJson) {
@ -624,6 +639,7 @@ class Subtitle {
assignedEmployee: parsedJson["assignedEmployee"], assignedEmployee: parsedJson["assignedEmployee"],
assetSN: parsedJson["assetSN"], assetSN: parsedJson["assetSN"],
assetName: parsedJson["assetName"], assetName: parsedJson["assetName"],
assetNumber: parsedJson["assetNumber"],
site: parsedJson["site"], site: parsedJson["site"],
maintenanceSituation: parsedJson["maintenanceSituation"], maintenanceSituation: parsedJson["maintenanceSituation"],
currentSituation: parsedJson["currentSituation"], currentSituation: parsedJson["currentSituation"],
@ -633,6 +649,12 @@ class Subtitle {
endDate: parsedJson["endDate"], endDate: parsedJson["endDate"],
requestedQuantity: parsedJson["requestedQuantity"], requestedQuantity: parsedJson["requestedQuantity"],
deliveredQuantity: parsedJson["deliveredQuantity"], deliveredQuantity: parsedJson["deliveredQuantity"],
destinationSite: parsedJson["destinationSite"],
building: parsedJson["building"],
floor: parsedJson["floor"],
department: parsedJson["department"],
room: parsedJson["room"],
actions: parsedJson["actions"],
); );
} }
} }

@ -93,6 +93,34 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
title: _subtitle.device, title: _subtitle.device,
info: widget.model.device.serialNumber, info: widget.model.device.serialNumber,
), ),
RequestInfoRow(
title: _subtitle.assetNumber,
info: widget.model.device.number,
),
RequestInfoRow(
title: _subtitle.destinationSite,
info: widget.model.device.destSiteName,
),
RequestInfoRow(
title: _subtitle.building,
info: widget.model.device.destBuildingName,
),
RequestInfoRow(
title: _subtitle.floor,
info: widget.model.device.destFloor,
),
RequestInfoRow(
title: _subtitle.department,
info: widget.model.device.destDepartmentName,
),
RequestInfoRow(
title: _subtitle.room,
info: widget.model.device.destRoom,
),
RequestInfoRow(
title: _subtitle.actions,
info: "",
),
const SizedBox(height: 8), const SizedBox(height: 8),
Row( Row(
children: [ children: [

@ -6,6 +6,7 @@ import 'package:test_sa/controllers/providers/api/device_transfer_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/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/models/department.dart';
import 'package:test_sa/models/device/device_transfer.dart'; import 'package:test_sa/models/device/device_transfer.dart';
import 'package:test_sa/models/device/device_transfer_info.dart'; import 'package:test_sa/models/device/device_transfer_info.dart';
import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/models/subtitle.dart';
@ -18,6 +19,12 @@ import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; import 'package:test_sa/views/widgets/titles/app_sub_title.dart';
import '../../../../controllers/localization/localization.dart'; import '../../../../controllers/localization/localization.dart';
import '../../../controllers/validator/validator.dart';
import '../../widgets/app_text_form_field.dart';
import '../../widgets/gas_refill/building_type_menu.dart';
import '../../widgets/gas_refill/department_type_menu.dart';
import '../../widgets/gas_refill/floor_type_menu.dart';
import '../../widgets/hospitals/hospital_auto_complete_field_new.dart';
class RequestDeviceTransfer extends StatefulWidget { class RequestDeviceTransfer extends StatefulWidget {
static const String id = "/request-device-transfer"; static const String id = "/request-device-transfer";
@ -84,6 +91,7 @@ class _RequestDeviceTransferState extends State<RequestDeviceTransfer> {
@override @override
void dispose() { void dispose() {
_requestedQuantityController.dispose(); _requestedQuantityController.dispose();
_deviceTransferProvider.reset();
super.dispose(); super.dispose();
} }
@ -158,36 +166,104 @@ class _RequestDeviceTransferState extends State<RequestDeviceTransfer> {
// setState(() {}); // setState(() {});
// }, // },
// ), // ),
12.height, // 12.height,
const ASubTitle("Destination Client"), // const ASubTitle("Destination Client"),
if (_validate && _formModel.receiver.client == null) // if (_validate && _formModel.receiver.client == null)
ASubTitle( // ASubTitle(
_subtitle.requiredWord, // _subtitle.requiredWord,
color: Colors.red, // color: Colors.red,
), // ),
6.height, // 6.height,
HospitalButton( // HospitalButton(
hospital: _formModel.receiver.client, // hospital: _formModel.receiver.client,
onHospitalPick: (hospital) { // onHospitalPick: (hospital) {
_formModel.receiver.client = hospital; // _formModel.receiver.client = hospital;
// setState(() {});
// },
// ),
// 12.height,
// const ASubTitle("Destination Department"),
// if (_validate && _formModel.receiver.department == null)
// ASubTitle(
// _subtitle.requiredWord,
// color: Colors.red,
// ),
// 6.height,
// DepartmentButton(
// department: _formModel.receiver.department,
// onDepartmentPick: (department) {
// _formModel.receiver.department = department;
// setState(() {});
// },
// ),
const SizedBox(
height: 4,
),
Divider(
color: Theme.of(context).colorScheme.primary,
),
const SizedBox(
height: 4,
),
HospitalAutoCompleteField(
initialValue: _deviceTransferProvider.hospital?.name,
// onSave: (value){
// _search.hospital = value;
// },
onSearch: (value) {
_deviceTransferProvider.hospital = value;
_deviceTransferProvider.building = null;
_deviceTransferProvider.floor = null;
_deviceTransferProvider.department = null;
_formModel.receiver.client = value;
setState(() {}); setState(() {});
}, },
), ),
12.height, const SizedBox(
const ASubTitle("Destination Department"), height: 8,
if (_validate && _formModel.receiver.department == null) ),
ASubTitle( BuildingTypeMenu(
_subtitle.requiredWord, initialValue: _deviceTransferProvider?.building,
color: Colors.red, building: _deviceTransferProvider?.hospital?.buildings,
), onSelect: (status) {
6.height, _deviceTransferProvider.building = status;
DepartmentButton(
department: _formModel.receiver.department,
onDepartmentPick: (department) {
_formModel.receiver.department = department;
setState(() {}); setState(() {});
}, },
), ),
const SizedBox(height: 8),
FloorTypeMenu(
initialValue: _deviceTransferProvider?.floor,
floors: _deviceTransferProvider?.building?.floors,
onSelect: (status) {
_deviceTransferProvider.floor = status;
setState(() {});
},
),
const SizedBox(height: 8),
DepartmentTypeMenu(
initialValue: _deviceTransferProvider?.department,
departments: _deviceTransferProvider?.floor?.departments,
onSelect: (status) {
_deviceTransferProvider.department = status;
_formModel.receiver.department = Department(id: status.id, name: status.name) ;
setState(() {});
},
),
const SizedBox(height: 8),
ASubTitle("Room"),
SizedBox(
height: 4,
),
ATextFormField(
textAlign: TextAlign.center,
controller: _requestedQuantityController,
style: Theme.of(context).textTheme.subtitle1,
validator: (value) => Validator.isNumeric(value) ? null : "allow numbers only",
textInputType: TextInputType.number,
onSaved: (value) {
_deviceTransferProvider.room=value;
},
),
12.height, 12.height,
AButton( AButton(
text: _subtitle.submit, text: _subtitle.submit,

@ -19,10 +19,13 @@ import 'package:test_sa/views/widgets/status/gas_refill/gas_status.dart';
import 'package:test_sa/views/widgets/titles/app_sub_title.dart'; import 'package:test_sa/views/widgets/titles/app_sub_title.dart';
import '../../../../controllers/localization/localization.dart'; import '../../../../controllers/localization/localization.dart';
import '../../../controllers/validator/validator.dart';
import '../../widgets/date_and_time/time_picker.dart';
class UpdateDeviceTransfer extends StatefulWidget { class UpdateDeviceTransfer extends StatefulWidget {
final DeviceTransfer model; final DeviceTransfer model;
final bool isSender; final bool isSender;
const UpdateDeviceTransfer({Key key, this.model, this.isSender}) : super(key: key); const UpdateDeviceTransfer({Key key, this.model, this.isSender}) : super(key: key);
@override @override
@ -66,10 +69,10 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
} }
} }
@override // @override
void setState(VoidCallback fn) { // void setState(VoidCallback fn) {
if (!mounted) super.setState(() {}); // if (!mounted) super.setState(() {});
} // }
@override @override
void initState() { void initState() {
@ -147,21 +150,83 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
}, },
), ),
const SizedBox( const SizedBox(
height: 8, height: 16,
), ),
ASubTitle(_subtitle.workingHours), Row(
const SizedBox( children: [
height: 4, Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const ASubTitle("Start of Work"),
SizedBox(
height: 8 * AppStyle.getScaleFactor(context),
),
ADateTimePicker(
date: _formModel.startDate,
from: DateTime.now().subtract(const Duration(days: 365)),
to: DateTime.now().add(const Duration(days: 365)),
onDateTimePicker: (date) {
_formModel.startDate = date;
_formModel.workingHours = ((_formModel.endDate?.difference(_formModel.startDate)?.inMinutes ?? 0) / 60)?.toStringAsFixed(2)?.toString() ?? 0;
setState(() {});
},
),
],
),
),
const SizedBox(width: 8),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const ASubTitle("End of Work"),
SizedBox(
height: 8 * AppStyle.getScaleFactor(context),
),
ADateTimePicker(
date: _formModel.endDate,
from: DateTime.now().subtract(const Duration(days: 365)),
to: DateTime.now().add(const Duration(days: 365)),
onDateTimePicker: (date) {
_formModel.endDate = date;
_formModel.workingHours = ((_formModel.endDate?.difference(_formModel.startDate)?.inMinutes ?? 0) / 60)?.toStringAsFixed(2)?.toString() ?? 0;
setState(() {});
},
),
],
),
),
],
), ),
const SizedBox(height: 4),
ASubTitle(_subtitle.workingHours),
const SizedBox(height: 4),
ATextFormField( ATextFormField(
initialValue: _formModel?.workingHours, initialValue: null,
textAlign: TextAlign.center, textAlign: TextAlign.center,
hintText: _formModel.startDate == null ? "0" : ((_formModel.endDate?.difference(_formModel.startDate)?.inMinutes ?? 0) / 60)?.toStringAsFixed(2)?.toString() ?? "0",
enable: false,
style: Theme.of(context).textTheme.subtitle1, style: Theme.of(context).textTheme.subtitle1,
//validator: (value) => Validator.isNumeric(value) ? null : _subtitle.requiredWord,
textInputType: TextInputType.number, textInputType: TextInputType.number,
onSaved: (value) { onSaved: (value) {
_formModel.workingHours = value; // _serviceReport.workHours = value;
}, },
), ),
// ASubTitle(_subtitle.workingHours),
// const SizedBox(
// height: 4,
// ),
// ATextFormField(
// initialValue: _formModel?.workingHours,
// textAlign: TextAlign.center,
// style: Theme.of(context).textTheme.subtitle1,
// textInputType: TextInputType.number,
// onSaved: (value) {
// _formModel.workingHours = value;
// },
// ),
// const SizedBox(height: 8,), // const SizedBox(height: 8,),
// const ASubTitle("Sender Department"), // const ASubTitle("Sender Department"),
// if(_validate && _formModel.senderDepartment == null) // if(_validate && _formModel.senderDepartment == null)

@ -94,7 +94,7 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
_isLoading = true; _isLoading = true;
setState(() {}); setState(() {});
_callRequestForWorkOrder = await _serviceRequestsProvider.getCallRequestForWorkOrder(callId: widget.request.id); _callRequestForWorkOrder = await _serviceRequestsProvider.getCallRequestForWorkOrder(callId: widget.request.id);
_serviceReport.engineer = Engineer.fromJson(_callRequestForWorkOrder.assignedEmployee?.toJson()); _serviceReport.engineer = Engineer.fromJson(_callRequestForWorkOrder?.assignedEmployee?.toJson());
await _assetTypeProvider.getTypes(user: _userProvider.user, host: _settingProvider.host); await _assetTypeProvider.getTypes(user: _userProvider.user, host: _settingProvider.host);
_isLoading = false; _isLoading = false;
setState(() {}); setState(() {});

@ -40,6 +40,10 @@ class DeviceTransferInfoSection extends StatelessWidget {
title: "Comment", title: "Comment",
info: info.comment, info: info.comment,
), ),
RequestInfoRow(
title: "Assigned FE",
info: info.assignedEmployeeName,
),
RequestInfoRow( RequestInfoRow(
title: "Signature", title: "Signature",
info: info.signature?.isEmpty != false ? subtitle.noDateFound : null, info: info.signature?.isEmpty != false ? subtitle.noDateFound : null,

Loading…
Cancel
Save