Merge branch 'majd_development_new' into 'main_latest_merged'

Majd development new

See merge request haroon6138/cloudsolutions-atoms!32
main_latest_merged
Sikander Saleem 1 year ago
commit 14473e3ae6

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

@ -187,6 +187,7 @@
"assignedEmployee": "Assigned Employee",
"assetSN": "Asset S.N",
"assetName": "Asset Name",
"assetNumber": "Asset Number",
"site": "Site",
"maintenanceSituation": "Maintenance Situation",
"currentSituation": "Current Situation",
@ -200,5 +201,13 @@
"repairLocation" : "Repair Location",
"travelingExpense": "Traveling Expense",
"startDate" : "Start Date",
"endDate" : "End Date"
"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/user.dart';
import '../../../models/hospital.dart';
class DeviceTransferProvider extends ChangeNotifier {
// number of items call in each request
final pageItemNumber = 12;
@ -17,6 +19,13 @@ class DeviceTransferProvider extends ChangeNotifier {
items = null;
nextPage = true;
stateCode = null;
hospital = null;
building = null;
floor = null;
department = null;
room="";
startDate = null;
endDate = null;
}
// state code of current request to defied error message
@ -35,6 +44,15 @@ class DeviceTransferProvider extends ChangeNotifier {
// failed _loading = false
bool isLoading;
Hospital hospital;
Buildings building;
Floors floor;
Departments department;
String room;
DateTime startDate;
DateTime endDate;
/// return -2 if request in progress
/// return -1 if error happen when sending request
/// return state code if request complete may be 200, 404 or 403
@ -46,21 +64,6 @@ class DeviceTransferProvider extends ChangeNotifier {
}) async {
if (isLoading == true) return -2;
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;
try {
Map<String, dynamic> body = {};
@ -103,12 +106,36 @@ class DeviceTransferProvider extends ChangeNotifier {
@required DeviceTransfer model,
}) async {
Map<String, dynamic> body = {
// "uid": user.id.toString(),
// "token": user.token ?? "",
"id": 0,
"assetId": model.device.id ?? "",
"destSiteId": model.receiver.client.id ?? "",
"destDepartmentId": model.receiver.department.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;
@ -118,6 +145,7 @@ class DeviceTransferProvider extends ChangeNotifier {
if (response.statusCode >= 200 && response.statusCode < 300) {
if (items != null) {
items.insert(0, DeviceTransfer.fromJson(json.decode(utf8.decode(response.bodyBytes))[0]));
reset();
notifyListeners();
}
}
@ -151,6 +179,8 @@ class DeviceTransferProvider extends ChangeNotifier {
"senderMachineStatusId": newModel.status.id,
"senderComment": newModel.comment,
"senderWorkingHours": newModel.workingHours,
"senderStartDate": newModel.startDate?.toIso8601String(),
"senderEndDate": newModel.endDate?.toIso8601String(),
"senderTravelingHours": newModel.travelingHours,
"senderAttachmentName": "${newModel.signature}.png",
"destSiteId": oldModel.receiver.client.id,
@ -159,6 +189,8 @@ class DeviceTransferProvider extends ChangeNotifier {
"receiverMachineStatusId": oldModel.receiver.status.id ?? "",
"receiverComment": oldModel.receiver.comment,
"receiverWorkingHours": oldModel.receiver.workingHours,
"receiverStartDate": oldModel.receiver.startDate?.toIso8601String(),
"receiverEndDate": oldModel.receiver.endDate?.toIso8601String(),
"receiverTravelingHours": oldModel.receiver.travelingHours,
"receiverAttachmentName": "${oldModel.receiver.signature}.png",
});
@ -170,6 +202,8 @@ class DeviceTransferProvider extends ChangeNotifier {
"senderMachineStatusId": oldModel.sender.status.id,
"senderComment": oldModel.sender.comment,
"senderWorkingHours": oldModel.sender.workingHours,
"senderStartDate": oldModel.sender.startDate?.toIso8601String(),
"senderEndDate": oldModel.sender.endDate?.toIso8601String(),
"senderTravelingHours": oldModel.sender.travelingHours,
"senderAttachmentName": "${oldModel.sender.signature}.png",
"destSiteId": newModel.client.id,
@ -178,13 +212,13 @@ class DeviceTransferProvider extends ChangeNotifier {
"receiverMachineStatusId": newModel.status?.id ?? "",
"receiverComment": newModel.comment,
"receiverWorkingHours": newModel.workingHours,
"receiverStartDate": newModel.startDate?.toIso8601String(),
"receiverEndDate": newModel.endDate?.toIso8601String(),
"receiverTravelingHours": newModel.travelingHours,
"receiverAttachmentName": "${newModel.signature}.png",
});
}
print(body["senderWorkingHours"]);
body.addAll(newModel.toJson(isSender));
print(body);
Response response;
@ -213,4 +247,5 @@ class DeviceTransferProvider extends ChangeNotifier {
return -1;
}
}
}

@ -96,8 +96,12 @@ class GasRefillProvider extends ChangeNotifier {
"token": user.token ?? "",
"building": {"id": building?.id, "name": building?.name, "value": building?.value},
"floor": {"id": floor.id, "name": floor.name, "value": floor.value},
"expectedDate": "2023-06-08T07:03:07.866Z",
"expectedTime": "2023-06-08T07:03:07.866Z",
if (expectedDateTime != null) "expectedDate": expectedDateTime,
if (expectedDateTime != null) "expectedTime": expectedDateTime,
if (startDate != null) "startDate": startDate,
if (startDate != null) "startTime": startDate,
if (endDate != null) "endDate": endDate,
if (endDate != null) "endTime": endDate,
"department": {"id": department.id, "departmentName": department.name, "departmentCode": "", "ntCode": ""},
"GazRefillNo": "GR-${DateTime.now().toString().split(" ").first}",
"status": model.status.toMap(),
@ -174,4 +178,6 @@ class GasRefillProvider extends ChangeNotifier {
Floors floor;
Departments department;
DateTime expectedDateTime;
DateTime startDate;
DateTime endDate;
}

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

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

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

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

@ -213,6 +213,7 @@ class Subtitle {
String assignedEmployee;
String assetSN;
String assetName;
String assetNumber;
String site;
String maintenanceSituation;
String currentSituation;
@ -228,6 +229,13 @@ class Subtitle {
String travelingExpense;
String startDate;
String endDate;
String destinationSite;
String building;
String floor;
String department;
String room;
String actions;
void setIssues(List<String> issues) {
issues.clear();
@ -431,6 +439,13 @@ class Subtitle {
@required this.travelingExpense,
@required this.startDate,
@required this.endDate,
@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) {
@ -620,6 +635,7 @@ class Subtitle {
assignedEmployee: parsedJson["assignedEmployee"],
assetSN: parsedJson["assetSN"],
assetName: parsedJson["assetName"],
assetNumber: parsedJson["assetNumber"],
site: parsedJson["site"],
maintenanceSituation: parsedJson["maintenanceSituation"],
currentSituation: parsedJson["currentSituation"],
@ -627,6 +643,12 @@ class Subtitle {
travelingExpense: parsedJson["travelingExpense"],
startDate: parsedJson["startDate"],
endDate: parsedJson["endDate"],
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,
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),
Row(
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/settings/setting_provider.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_info.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 '../../../../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 {
static const String id = "/request-device-transfer";
@ -84,6 +91,7 @@ class _RequestDeviceTransferState extends State<RequestDeviceTransfer> {
@override
void dispose() {
_requestedQuantityController.dispose();
_deviceTransferProvider.reset();
super.dispose();
}
@ -158,36 +166,104 @@ class _RequestDeviceTransferState extends State<RequestDeviceTransfer> {
// setState(() {});
// },
// ),
12.height,
const ASubTitle("Destination Client"),
if (_validate && _formModel.receiver.client == null)
ASubTitle(
_subtitle.requiredWord,
color: Colors.red,
),
6.height,
HospitalButton(
hospital: _formModel.receiver.client,
onHospitalPick: (hospital) {
_formModel.receiver.client = hospital;
// 12.height,
// const ASubTitle("Destination Client"),
// if (_validate && _formModel.receiver.client == null)
// ASubTitle(
// _subtitle.requiredWord,
// color: Colors.red,
// ),
// 6.height,
// HospitalButton(
// hospital: _formModel.receiver.client,
// onHospitalPick: (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(() {});
},
),
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;
const SizedBox(
height: 8,
),
BuildingTypeMenu(
initialValue: _deviceTransferProvider?.building,
building: _deviceTransferProvider?.hospital?.buildings,
onSelect: (status) {
_deviceTransferProvider.building = status;
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,
AButton(
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 '../../../../controllers/localization/localization.dart';
import '../../../controllers/validator/validator.dart';
import '../../widgets/date_and_time/time_picker.dart';
class UpdateDeviceTransfer extends StatefulWidget {
final DeviceTransfer model;
final bool isSender;
const UpdateDeviceTransfer({Key key, this.model, this.isSender}) : super(key: key);
@override
@ -66,10 +69,10 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
}
}
@override
void setState(VoidCallback fn) {
if (!mounted) super.setState(() {});
}
// @override
// void setState(VoidCallback fn) {
// if (!mounted) super.setState(() {});
// }
@override
void initState() {
@ -147,21 +150,83 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
},
),
const SizedBox(
height: 8,
height: 16,
),
ASubTitle(_subtitle.workingHours),
const SizedBox(
height: 4,
Row(
children: [
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(
initialValue: _formModel?.workingHours,
initialValue: null,
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,
//validator: (value) => Validator.isNumeric(value) ? null : _subtitle.requiredWord,
textInputType: TextInputType.number,
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 ASubTitle("Sender Department"),
// if(_validate && _formModel.senderDepartment == null)

@ -27,6 +27,7 @@ import 'package:test_sa/views/widgets/status/gas_refill/gas_type.dart';
import 'package:test_sa/views/widgets/titles/app_sub_title.dart';
import '../../../../controllers/localization/localization.dart';
import '../../../../models/enums/user_types.dart';
class RequestGasRefill extends StatefulWidget {
static const String id = "/request-gas-refill";
@ -227,24 +228,89 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
},
),
const SizedBox(height: 8),
Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const ASubTitle("Expected Date Time"),
SizedBox(
height: 8 * AppStyle.getScaleFactor(context),
),
ADateTimePicker(
date: _gasRefillProvider.expectedDateTime,
from: DateTime.now().subtract(const Duration(days: 365)),
to: DateTime.now().add(const Duration(days: 365)),
onDateTimePicker: (date) {
_gasRefillProvider.expectedDateTime = date;
setState(() {});
},
),
],
),
if (_userProvider.user?.type == UsersTypes.normal_user)
Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const ASubTitle("Expected Date Time"),
SizedBox(
height: 8 * AppStyle.getScaleFactor(context),
),
ADateTimePicker(
date: _gasRefillProvider.expectedDateTime,
from: DateTime.now().subtract(const Duration(days: 365)),
to: DateTime.now().add(const Duration(days: 365)),
onDateTimePicker: (date) {
_gasRefillProvider.expectedDateTime = date;
setState(() {});
},
),
],
),
if (_userProvider.user?.type == UsersTypes.engineer)
Row(
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const ASubTitle("Start of Work"),
SizedBox(
height: 8 * AppStyle.getScaleFactor(context),
),
ADateTimePicker(
date: _gasRefillProvider.startDate,
from: DateTime.now().subtract(const Duration(days: 365)),
to: DateTime.now().add(const Duration(days: 365)),
onDateTimePicker: (date) {
_gasRefillProvider.startDate = date;
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: _gasRefillProvider.endDate,
from: DateTime.now().subtract(const Duration(days: 365)),
to: DateTime.now().add(const Duration(days: 365)),
onDateTimePicker: (date) {
_gasRefillProvider.endDate = date;
setState(() {});
},
),
],
),
),
],
),
if (_userProvider.user?.type == UsersTypes.engineer) const SizedBox(height: 8),
if (_userProvider.user?.type == UsersTypes.engineer) ASubTitle(_subtitle.workingHours),
if (_userProvider.user?.type == UsersTypes.engineer) const SizedBox(height: 4),
if (_userProvider.user?.type == UsersTypes.engineer)
ATextFormField(
initialValue: null,
textAlign: TextAlign.center,
hintText: _gasRefillProvider.startDate == null
? "0"
: ((_gasRefillProvider.endDate?.difference(_gasRefillProvider.startDate)?.inMinutes ?? 0) / 60)?.toStringAsFixed(2)?.toString() ?? "0",
enable: false,
style: Theme.of(context).textTheme.subtitle1,
validator: (value) => Validator.isNumeric(value) ? null : _subtitle.requiredWord,
textInputType: TextInputType.number,
onSaved: (value) {
// _serviceReport.workHours = value;
},
),
const SizedBox(height: 8),
Divider(color: Theme.of(context).colorScheme.primary),
const SizedBox(height: 4),

@ -94,7 +94,7 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
_isLoading = true;
setState(() {});
_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);
_isLoading = false;
setState(() {});

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

Loading…
Cancel
Save