diff --git a/assets/images/quotation_icon.svg b/assets/images/quotation_icon.svg
new file mode 100644
index 00000000..3e38ecb2
--- /dev/null
+++ b/assets/images/quotation_icon.svg
@@ -0,0 +1,3 @@
+
diff --git a/lib/controllers/api_routes/urls.dart b/lib/controllers/api_routes/urls.dart
index 69afab47..b9127a43 100644
--- a/lib/controllers/api_routes/urls.dart
+++ b/lib/controllers/api_routes/urls.dart
@@ -27,8 +27,8 @@ class URLs {
static get getSiteAutoCompleteWithoutConditionSites => "$_baseUrl/Customer/GetCustomersAutoCompleteWithoutConditionSites"; // get
static get nurseDashboardCountUrl=> '$_baseUrl/ServiceRequest/GetDashboardNurseCount';
static get nurseDashboardDetailsUrl=> '$_baseUrl/ServiceRequest/GetDashboardNurseDetails';
- static get nurseConfirmReopenUrl=> '$_baseUrl/ServiceRequest/NurseConfirmReopen';
- static get nurseConfirmCloseUrl=> '$_baseUrl/ServiceRequest/NurseConfirmClose';
+ static get nurseRejectUrl=> '$_baseUrl/ServiceRequest/NurseReject';
+ static get nurseConfirmUrl=> '$_baseUrl/ServiceRequest/NurseConfirm';
static get engineerDashboardCountUrl=> '$_baseUrl/ServiceRequest/GetDashboardEngineerCount';
static get engineerDashboardDetailsUrl=> '$_baseUrl/ServiceRequest/GetDashboardEngineerDetails';
static get engineerAcceptUrl=> '$_baseUrl/ServiceRequest/EngineerAccept';
@@ -36,10 +36,13 @@ class URLs {
static get engineerFixRemotlyUrl=> '$_baseUrl/ServiceRequest/EngineerFixRemotly';
static get engineerNeedVisitUrl=> '$_baseUrl/ServiceRequest/EngineerNeedVisit';
static get engineerMarkAsFixUrl=> '$_baseUrl/ServiceRequest/EngineerMarkAsFix';
+ static get engineerConfirmArriveUrl=> '$_baseUrl/ServiceRequest/EngineerConfirmArrive';
+ static get engineerUpdateWorkOrderUrl=> '$_baseUrl/ServiceRequest/EngineerUpdateWorkOrder';
static get getWorkOrderByIdUrl=> '$_baseUrl/ServiceRequest/GetWorkOrderById';
static get deleteActivitySparePartUrl=> '$_baseUrl/ServiceRequest/DeleteActivitySparePart';
static get createActivitySparePartUrl=> '$_baseUrl/ServiceRequest/CreateActivitySparePart';
static get createActivityAssetToBeRetiredUrl=> '$_baseUrl/ServiceRequest/CreateActivityAssetToBeRetired';
+ static get createWorkOrderUrl=> '$_baseUrl/ServiceRequest/CreateWorkOrder';
static get updateActivitySparePartUrl=> '$_baseUrl/ServiceRequest/UpdateActivitySparePart';
static get assignEngineerToWorkOrderUrl=> '$_baseUrl/ServiceRequest/AssignEngineerToWorkOrder';
static get getDepartments => "$_baseUrl/Customer/GetDepartmentLookup"; // get
diff --git a/lib/extensions/text_extensions.dart b/lib/extensions/text_extensions.dart
index 6d1fadfc..e58043ea 100644
--- a/lib/extensions/text_extensions.dart
+++ b/lib/extensions/text_extensions.dart
@@ -134,6 +134,13 @@ abstract class AppTextStyles {
fontStyle: FontStyle.normal,
decoration: TextDecoration.none,
);
+ static final TextStyle textFieldLabelStyle= TextStyle(
+ fontSize: 11.toScreenWidth,
+ fontWeight: FontWeight.w500,
+ color: AppColor.neutral20,
+ fontStyle: FontStyle.normal,
+ decoration: TextDecoration.none,
+ );
static final TextStyle tinyFont2 = TextStyle(
fontSize: 10.toScreenWidth,
fontWeight: FontWeight.w500,
diff --git a/lib/models/helper_data_models/workorder/nurse_action_model.dart b/lib/models/helper_data_models/workorder/nurse_action_model.dart
index 9af3c560..b9a2c231 100644
--- a/lib/models/helper_data_models/workorder/nurse_action_model.dart
+++ b/lib/models/helper_data_models/workorder/nurse_action_model.dart
@@ -5,10 +5,6 @@ class NurseActionModel {
NurseActionModel({this.workOrderId, this.feedback, this.signatureNurse});
- factory NurseActionModel.fromJson(Map json) {
- return NurseActionModel(workOrderId: json['workOrderId'], feedback: json['feedback'], signatureNurse: json['signatureNurse']);
- }
-
Map toJson() {
return {'workOrderId': workOrderId, 'feedback': feedback, 'signatureNurse': signatureNurse};
}
diff --git a/lib/models/helper_data_models/workorder/work_order_model.dart b/lib/models/helper_data_models/workorder/work_order_model.dart
new file mode 100644
index 00000000..cb665d35
--- /dev/null
+++ b/lib/models/helper_data_models/workorder/work_order_model.dart
@@ -0,0 +1,116 @@
+class WorkOrderHModel {
+ int? assetId;
+ int? equipmentStatusId;
+ int? priorityId;
+ int? problemDescriptionId;
+ String? comments;
+ String? voiceNote;
+ List? workOrderAttachments;
+
+ WorkOrderHModel(
+ {this.assetId,
+ this.equipmentStatusId,
+ this.priorityId,
+ this.problemDescriptionId,
+ this.comments,
+ this.voiceNote,
+ this.workOrderAttachments});
+
+ WorkOrderHModel.fromJson(Map json) {
+ assetId = json['assetId'];
+ equipmentStatusId = json['equipmentStatusId'];
+ priorityId = json['priorityId'];
+ problemDescriptionId = json['problemDescriptionId'];
+ comments = json['comments'];
+ voiceNote = json['voiceNote'];
+ if (json['workOrderAttachments'] != null) {
+ workOrderAttachments = [];
+ json['workOrderAttachments'].forEach((v) {
+ workOrderAttachments!.add( WorkOrderAttachments.fromJson(v));
+ });
+ }
+ }
+
+ Map toJson() {
+ final Map data = {};
+ data['assetId'] = assetId;
+ data['equipmentStatusId'] = equipmentStatusId;
+ data['priorityId'] = priorityId;
+ data['problemDescriptionId'] = problemDescriptionId;
+ data['comments'] = comments;
+ data['voiceNote'] = voiceNote;
+ if (workOrderAttachments != null) {
+ data['workOrderAttachments'] =
+ workOrderAttachments!.map((v) => v.toJson()).toList();
+ }
+ return data;
+ }
+}
+
+class WorkOrderAttachments {
+ int? id;
+ String? name;
+
+ WorkOrderAttachments({this.id, this.name});
+
+ WorkOrderAttachments.fromJson(Map json) {
+ id = json['id'];
+ name = json['name'];
+ }
+
+ Map toJson() {
+ final Map data = {};
+ data['id'] = id;
+ data['name'] = name;
+ return data;
+ }
+}
+class EngineerUpdateWorkOrderHModel {
+ int? workOrderId;
+ int? equipmentStatusId;
+ String? returnToService;
+ int? serviceTypeId;
+ int? loanAvailabilityId;
+ int? loanAssetId;
+ int? failureReasonId;
+ int? faultDescriptionId;
+ String? solution;
+
+ EngineerUpdateWorkOrderHModel(
+ {this.workOrderId,
+ this.equipmentStatusId,
+ this.returnToService,
+ this.serviceTypeId,
+ this.loanAvailabilityId,
+ this.loanAssetId,
+ this.failureReasonId,
+ this.faultDescriptionId,
+ this.solution});
+
+ EngineerUpdateWorkOrderHModel.fromJson(Map json) {
+ workOrderId = json['workOrderId'];
+ equipmentStatusId = json['equipmentStatusId'];
+ returnToService = json['returnToService'];
+ serviceTypeId = json['serviceTypeId'];
+ loanAvailabilityId = json['loanAvailabilityId'];
+ loanAssetId = json['loanAssetId'];
+ failureReasonId = json['failureReasonId'];
+ faultDescriptionId = json['faultDescriptionId'];
+ solution = json['solution'];
+ }
+
+ Map toJson() {
+ final Map data = {};
+ data['workOrderId'] = workOrderId;
+ data['equipmentStatusId'] = equipmentStatusId;
+ data['returnToService'] = returnToService;
+ data['serviceTypeId'] = serviceTypeId;
+ data['loanAvailabilityId'] = loanAvailabilityId;
+ data['loanAssetId'] = loanAssetId;
+ data['failureReasonId'] = failureReasonId;
+ data['faultDescriptionId'] = faultDescriptionId;
+ data['solution'] = solution;
+ return data;
+ }
+}
+
diff --git a/lib/new_views/app_style/app_color.dart b/lib/new_views/app_style/app_color.dart
index ddc78079..f181debd 100644
--- a/lib/new_views/app_style/app_color.dart
+++ b/lib/new_views/app_style/app_color.dart
@@ -27,6 +27,7 @@ class AppColor {
static const Color neutral100 = Color(0xffF4F6FC);
static const Color neutral110 = Color(0xffF3F5FB);
static const Color neutral120 = Color(0xff7D859A);
+ static const Color neutral130 = Color(0xffE0E0E0);
//background
diff --git a/lib/new_views/common_widgets/app_text_form_field.dart b/lib/new_views/common_widgets/app_text_form_field.dart
index 45158219..65440d6c 100644
--- a/lib/new_views/common_widgets/app_text_form_field.dart
+++ b/lib/new_views/common_widgets/app_text_form_field.dart
@@ -110,6 +110,7 @@ class _AppTextFormFieldState extends State {
focusedBorder: border,
enabledBorder: border,
errorBorder: border,
+
contentPadding: widget.contentPadding ?? EdgeInsets.symmetric(vertical: 12.toScreenHeight, horizontal: 16.toScreenWidth),
constraints: const BoxConstraints(),
suffixIconConstraints: const BoxConstraints(minWidth: 0),
diff --git a/lib/service_request_latest/request_detail_provider.dart b/lib/service_request_latest/request_detail_provider.dart
index 53149f62..74335463 100644
--- a/lib/service_request_latest/request_detail_provider.dart
+++ b/lib/service_request_latest/request_detail_provider.dart
@@ -6,6 +6,7 @@ import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/helper_data_models/asset_retired/asset_retired_model.dart';
import 'package:test_sa/models/helper_data_models/spare_part/activity_spare_part_model.dart';
+import 'package:test_sa/models/helper_data_models/workorder/work_order_model.dart';
import 'package:test_sa/models/helper_data_models/workorder/fix_remotely_model.dart';
import 'package:test_sa/models/helper_data_models/workorder/mark_as_fixed_model.dart';
import 'package:test_sa/models/helper_data_models/workorder/need_visit_model.dart';
@@ -15,6 +16,7 @@ import 'package:test_sa/models/new_models/workOrderDetail.dart';
class RequestDetailProvider extends ChangeNotifier {
final pageItemNumber = 10;
+
void reset() {
nextPage = true;
stateCode = null;
@@ -57,69 +59,69 @@ class RequestDetailProvider extends ChangeNotifier {
notifyListeners();
}
- WorkOrderDetail ?_currentWorkOrder;
- FixRemotely ?_fixRemotelyModel=FixRemotely();
- NeedVisit ?_needVisitModel=NeedVisit();
- MarkAsFixed ?_markAsFixed=MarkAsFixed();
- ActivitySparePartModel ?_activitySparePartModel= ActivitySparePartModel();
- ActivityAssetRetiredModel ?_activityAssetRetiredModel = ActivityAssetRetiredModel();
+ WorkOrderDetail? _currentWorkOrder;
+ FixRemotely? _fixRemotelyModel = FixRemotely();
+ NeedVisit? _needVisitModel = NeedVisit();
+ MarkAsFixed? _markAsFixed = MarkAsFixed();
+ ActivitySparePartModel? _activitySparePartModel = ActivitySparePartModel();
+ ActivityAssetRetiredModel? _activityAssetRetiredModel = ActivityAssetRetiredModel();
+ WorkOrderHModel _workOrderHModel = WorkOrderHModel();
+
+ WorkOrderHModel get workOrderHModel => _workOrderHModel;
+
+ set workOrderHModel(WorkOrderHModel value) {
+ _workOrderHModel = value;
+ notifyListeners();
+ }
ActivityAssetRetiredModel? get activityAssetRetiredModel => _activityAssetRetiredModel;
- set activityAssetRetiredModel(ActivityAssetRetiredModel ?value) {
+ set activityAssetRetiredModel(ActivityAssetRetiredModel? value) {
_activityAssetRetiredModel = value;
notifyListeners();
}
- ActivitySparePartModel ?get activitySparePartModel => _activitySparePartModel;
+ ActivitySparePartModel? get activitySparePartModel => _activitySparePartModel;
- set activitySparePartModel(ActivitySparePartModel ? value) {
+ set activitySparePartModel(ActivitySparePartModel? value) {
_activitySparePartModel = value;
notifyListeners();
}
- MarkAsFixed ? get markAsFixed => _markAsFixed;
+ MarkAsFixed? get markAsFixed => _markAsFixed;
- set markAsFixed(MarkAsFixed ? value) {
+ set markAsFixed(MarkAsFixed? value) {
_markAsFixed = value;
notifyListeners();
}
- NurseActionModel ?_nurseActionModel;
-
- NurseActionModel? get nurseActionModel => _nurseActionModel;
-
- set nurseActionModel(NurseActionModel? value) {
- _nurseActionModel = value;
- notifyListeners();
- }
-
- NeedVisit ?get needVisitModel => _needVisitModel;
+ NeedVisit? get needVisitModel => _needVisitModel;
set needVisitModel(NeedVisit? value) {
_needVisitModel = value;
notifyListeners();
}
- FixRemotely ?get fixRemotelyModel => _fixRemotelyModel;
+ FixRemotely? get fixRemotelyModel => _fixRemotelyModel;
set fixRemotelyModel(FixRemotely? value) {
_fixRemotelyModel = value;
notifyListeners();
}
- WorkOrderDetail ?get currentWorkOrder => _currentWorkOrder;
+ WorkOrderDetail? get currentWorkOrder => _currentWorkOrder;
set currentWorkOrder(WorkOrderDetail? value) {
_currentWorkOrder = value;
notifyListeners();
}
- int ?stateCode;
+ int? stateCode;
+
// true if there is next page in product list and false if not
bool nextPage = true;
- TimeOfDay? _selectedTime ;
+ TimeOfDay? _selectedTime;
TimeOfDay? get selectedTime => _selectedTime;
@@ -127,6 +129,7 @@ class RequestDetailProvider extends ChangeNotifier {
_selectedTime = value;
notifyListeners();
} // list of user requests
+
int _selectedListIndex = 0;
int get selectedListIndex => _selectedListIndex;
@@ -135,149 +138,197 @@ class RequestDetailProvider extends ChangeNotifier {
_selectedListIndex = value;
notifyListeners();
}
+
+ //create workOrder nurse .....
+ Future createWorkOrder({required WorkOrderHModel workOrderHModel}) async {
+ isLoading = true;
+ try {
+ final response = await ApiManager.instance.post(
+ URLs.createWorkOrderUrl,
+ body: workOrderHModel.toJson(),
+ );
+ stateCode = response.statusCode;
+ if (response.statusCode >= 200 && response.statusCode < 300) {
+ // request.engineerName = employee.name;
+ notifyListeners();
+ }
+ isLoading = false;
+ notifyListeners();
+ return response.statusCode;
+ } catch (error) {
+ isLoading = false;
+ notifyListeners();
+ return -1;
+ }
+ }
+
//getWorkOrderById......
Future getWorkOrderById({required String id}) async {
try {
- isLoading = true;
- final response = await ApiManager.instance.get(URLs.getWorkOrderByIdUrl+"?workOrderId=$id");
+ isLoading = true;
+ final response = await ApiManager.instance.get(URLs.getWorkOrderByIdUrl + "?workOrderId=$id");
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
- currentWorkOrder = WorkOrderDetail.fromJson(json.decode(response.body));
+ currentWorkOrder = WorkOrderDetail.fromJson(json.decode(response.body));
notifyListeners();
isLoading = false;
- return currentWorkOrder;
+ return currentWorkOrder;
}
- isLoading= false;
- notifyListeners();
+ isLoading = false;
+ notifyListeners();
return null;
- }
- catch (e) {
+ } catch (e) {
log("getSubWorkOrderDetails [error] : $e");
isLoading = false;
notifyListeners();
return null;
}
}
+
//engineerAcceptWorkOrder......
Future engineerAcceptWorkOrder({required String id}) async {
try {
final body = {
"workOrderId": id,
};
- isLoading = true;
- final response = await ApiManager.instance.post(URLs.engineerAcceptUrl,body: body);
+ isLoading = true;
+ final response = await ApiManager.instance.post(URLs.engineerAcceptUrl, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
- CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
+ CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
print('response of Engineer accept workorder ${commonResponseModel.toJson()}');
notifyListeners();
isLoading = false;
- return commonResponseModel;
+ return commonResponseModel;
}
- isLoading= false;
- notifyListeners();
+ isLoading = false;
+ notifyListeners();
return CommonResponseModel();
- }
- catch (e) {
+ } catch (e) {
log("engineer accept [error] : $e");
isLoading = false;
notifyListeners();
return CommonResponseModel();
}
}
+
//engineerRejectWorkOrder......
- Future engineerRejectWorkOrder({required String id,String? feedBack}) async {
+ Future engineerRejectWorkOrder({required String id, String? feedBack}) async {
try {
final body = {
"workOrderId": id,
- "feedback": feedBack??'',
+ "feedback": feedBack ?? '',
};
- isLoading = true;
- final response = await ApiManager.instance.post(URLs.engineerRejectUrl,body: body);
+ isLoading = true;
+ final response = await ApiManager.instance.post(URLs.engineerRejectUrl, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
- CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
+ CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
print('response of Engineer reject workorder ${commonResponseModel.toJson()}');
notifyListeners();
isLoading = false;
- return commonResponseModel;
+ return commonResponseModel;
}
- isLoading= false;
- notifyListeners();
+ isLoading = false;
+ notifyListeners();
return CommonResponseModel();
- }
- catch (e) {
+ } catch (e) {
log("engineer accept [error] : $e");
isLoading = false;
notifyListeners();
return CommonResponseModel();
}
}
+
//engineerFixRemotelyWorkOrder......
Future engineerFixRemotely() async {
try {
isLoading = true;
- final response = await ApiManager.instance.post(URLs.engineerFixRemotlyUrl,body: fixRemotelyModel!.toJson());
+ final response = await ApiManager.instance.post(URLs.engineerFixRemotlyUrl, body: fixRemotelyModel!.toJson());
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
- CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
+ CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
notifyListeners();
isLoading = false;
- return commonResponseModel;
+ return commonResponseModel;
}
- isLoading= false;
+ isLoading = false;
notifyListeners();
return CommonResponseModel();
- }
- catch (e) {
+ } catch (e) {
log("engineer accept [error] : $e");
isLoading = false;
notifyListeners();
return CommonResponseModel();
}
}
+
//engineerNeedAVisitWorkOrder......
Future engineerNeedVisit() async {
try {
isLoading = true;
- final response = await ApiManager.instance.post(URLs.engineerNeedVisitUrl,body: needVisitModel!.toJson());
+ final response = await ApiManager.instance.post(URLs.engineerNeedVisitUrl, body: needVisitModel!.toJson());
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
- CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
+ CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
print('response of Engineer fixremotely workorder ${commonResponseModel.toJson()}');
notifyListeners();
isLoading = false;
- return commonResponseModel;
+ return commonResponseModel;
}
- isLoading= false;
+ isLoading = false;
notifyListeners();
return CommonResponseModel();
- }
- catch (e) {
+ } catch (e) {
log("engineer accept [error] : $e");
isLoading = false;
notifyListeners();
return CommonResponseModel();
}
}
+
//engineerMarkAsFixed......
Future engineerMarkAsFixed() async {
try {
isLoading = true;
- final response = await ApiManager.instance.post(URLs.engineerMarkAsFixUrl,body: markAsFixed!.toJson());
+ final response = await ApiManager.instance.post(URLs.engineerMarkAsFixUrl, body: markAsFixed!.toJson());
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
- CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
+ CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
print('response of Engineer mark as fixed ${commonResponseModel.toJson()}');
notifyListeners();
isLoading = false;
- return commonResponseModel;
+ return commonResponseModel;
}
- isLoading= false;
+ isLoading = false;
+ notifyListeners();
+ return CommonResponseModel();
+ } catch (e) {
+ log("engineer accept [error] : $e");
+ isLoading = false;
notifyListeners();
return CommonResponseModel();
}
- catch (e) {
+ }
+
+ //engineer Confirm Arrive......
+ Future engineerConfirmArrive({required int workOrderId, required int verificationTypeId, required String photoInfo, required String otp}) async {
+ try {
+ Map body = {"workOrderId": workOrderId, "verificationTypeId": verificationTypeId, "photoInfo": photoInfo, "otp": otp};
+ isLoading = true;
+ final response = await ApiManager.instance.post(URLs.engineerConfirmArriveUrl, body: body);
+ stateCode = response.statusCode;
+ if (response.statusCode >= 200 && response.statusCode < 300) {
+ CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
+ print('response of Engineer mark as fixed ${commonResponseModel.toJson()}');
+ notifyListeners();
+ isLoading = false;
+ return commonResponseModel;
+ }
+ isLoading = false;
+ notifyListeners();
+ return CommonResponseModel();
+ } catch (e) {
log("engineer accept [error] : $e");
isLoading = false;
notifyListeners();
@@ -285,83 +336,107 @@ class RequestDetailProvider extends ChangeNotifier {
}
}
//assignEngineerToWorkOrder......
- Future assignEngineerWorkOrder({required String workOrderId,required String engineerId}) async {
+ Future assignEngineerWorkOrder({required String workOrderId, required String engineerId}) async {
try {
final body = {
"workOrderId": workOrderId,
"assignedEngineerId": engineerId,
};
isLoading = true;
- final response = await ApiManager.instance.post(URLs.assignEngineerToWorkOrderUrl,body: body);
+ final response = await ApiManager.instance.post(URLs.assignEngineerToWorkOrderUrl, body: body);
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
- CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
+ CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
notifyListeners();
isLoading = false;
- return commonResponseModel;
+ return commonResponseModel;
}
- isLoading= false;
+ isLoading = false;
+ notifyListeners();
+ return CommonResponseModel();
+ } catch (e) {
+ log("engineer accept [error] : $e");
+ isLoading = false;
notifyListeners();
return CommonResponseModel();
}
- catch (e) {
+ }
+
+ //engineerUpdateWorkOrder......
+ Future engineerUpdateWorkOrder({required EngineerUpdateWorkOrderHModel model}) async {
+ try {
+ isLoading = true;
+ final response = await ApiManager.instance.post(URLs.engineerUpdateWorkOrderUrl, body: model.toJson());
+ stateCode = response.statusCode;
+ if (response.statusCode >= 200 && response.statusCode < 300) {
+ CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
+ notifyListeners();
+ isLoading = false;
+ return commonResponseModel;
+ }
+ isLoading = false;
+ notifyListeners();
+ return CommonResponseModel();
+ } catch (e) {
log("engineer accept [error] : $e");
isLoading = false;
notifyListeners();
return CommonResponseModel();
}
}
+
//Nurse confirm reopen
- Future nurseReopen() async {
+ Future nurseReject({required NurseActionModel model}) async {
try {
isLoading = true;
- final response = await ApiManager.instance.post(URLs.nurseConfirmReopenUrl,body: nurseActionModel!.toJson());
+ final response = await ApiManager.instance.post(URLs.nurseRejectUrl, body: model.toJson());
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
- CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
+ CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
notifyListeners();
isLoading = false;
- return commonResponseModel;
+ return commonResponseModel;
}
- isLoading= false;
+ isLoading = false;
notifyListeners();
return CommonResponseModel();
- }
- catch (e) {
+ } catch (e) {
log("engineer accept [error] : $e");
isLoading = false;
notifyListeners();
return CommonResponseModel();
}
}
+
//Nurse confirm close
- Future nurseClose() async {
+ Future nurseConfirm({required NurseActionModel model}) async {
try {
isLoading = true;
- final response = await ApiManager.instance.post(URLs.nurseConfirmCloseUrl,body: nurseActionModel!.toJson());
+ final response = await ApiManager.instance.post(URLs.nurseConfirmUrl, body: model.toJson());
+ print('response i got is ${response.body}');
+
stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
- CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
- print('response of nurse confirmreopen workorder ${commonResponseModel.toJson()}');
+ CommonResponseModel commonResponseModel = CommonResponseModel.fromJson(json.decode(response.body));
notifyListeners();
isLoading = false;
- return commonResponseModel;
+ return commonResponseModel;
}
- isLoading= false;
+ isLoading = false;
notifyListeners();
return CommonResponseModel();
- }
- catch (e) {
+ } catch (e) {
log("engineer accept [error] : $e");
isLoading = false;
notifyListeners();
return CommonResponseModel();
}
}
+
Future updateActivitySparePart({required ActivitySparePartModel activitySparePartModel}) async {
isLoading = true;
try {
- final response = await ApiManager.instance.put(
+ final response = await ApiManager.instance.post(
URLs.updateActivitySparePartUrl,
body: activitySparePartModel.toJson(),
);
@@ -379,11 +454,12 @@ class RequestDetailProvider extends ChangeNotifier {
return -1;
}
}
- Future deleteActivitySparePart({required int id,required int workOrderId}) async {
+
+ Future deleteActivitySparePart({required int id, required int workOrderId}) async {
isLoading = true;
var body = {
- 'id':id,
- 'workOrderId':workOrderId,
+ 'id': id,
+ 'workOrderId': workOrderId,
};
try {
final response = await ApiManager.instance.post(
@@ -404,10 +480,11 @@ class RequestDetailProvider extends ChangeNotifier {
return -1;
}
}
+
Future createActivitySparePart({required ActivitySparePartModel activitySparePartModel}) async {
isLoading = true;
try {
- final response = await ApiManager.instance.put(
+ final response = await ApiManager.instance.post(
URLs.createActivitySparePartUrl,
body: activitySparePartModel.toJson(),
);
@@ -425,10 +502,11 @@ class RequestDetailProvider extends ChangeNotifier {
return -1;
}
}
+
Future createActivityAssetToBeRetired({required ActivityAssetRetiredModel activityAssetRetiredModel}) async {
isLoading = true;
try {
- final response = await ApiManager.instance.put(
+ final response = await ApiManager.instance.post(
URLs.createActivityAssetToBeRetiredUrl,
body: activityAssetRetiredModel.toJson(),
);
diff --git a/lib/service_request_latest/views/components/action_button/footer_action_button.dart b/lib/service_request_latest/views/components/action_button/footer_action_button.dart
index 6629b79f..0df361f6 100644
--- a/lib/service_request_latest/views/components/action_button/footer_action_button.dart
+++ b/lib/service_request_latest/views/components/action_button/footer_action_button.dart
@@ -20,7 +20,7 @@ class FooterActionButton {
);
}
- static Widget footerWidget({required int status,required BuildContext context}){
+ static Widget requestDetailsFooterWidget({required int status,required BuildContext context}){
switch(status){
//accept reject...
case 1:
@@ -151,7 +151,7 @@ class FooterActionButton {
// maxWidth: true,
buttonColor: AppColor.primary10,
onPressed: () async {
-
+ ServiceRequestBottomSheet.nurseTakeActionBottomSheet(context: context);
},
)
);
diff --git a/lib/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart b/lib/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart
index dc78b181..e15a7df0 100644
--- a/lib/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart
+++ b/lib/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart
@@ -1,3 +1,5 @@
+import 'dart:convert';
+
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/flutter_svg.dart';
@@ -9,11 +11,13 @@ import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
+import 'package:test_sa/models/helper_data_models/workorder/nurse_action_model.dart';
import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/service_request/service_request.dart';
import 'package:test_sa/models/timer_model.dart';
import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.dart';
import 'package:test_sa/providers/service_request_providers/first_action_provider.dart';
+import 'package:test_sa/service_request_latest/request_detail_provider.dart';
import 'package:test_sa/service_request_latest/views/forms/spare_part/spare_part_request.dart';
import 'package:test_sa/service_request_latest/views/components/verify_arrival_view.dart';
import 'package:test_sa/views/widgets/date_and_time/date_picker.dart';
@@ -58,7 +62,7 @@ class ServiceRequestBottomSheet {
ADatePicker(
label: context.translation.date,
hideShadow: true,
- height: 80.toScreenHeight,
+ // height: 60.toScreenHeight,
backgroundColor: AppColor.neutral100,
date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest?.startDate ?? ""),
formatDateWithTime: true,
@@ -95,7 +99,7 @@ class ServiceRequestBottomSheet {
8.height,
SizedBox(
width: double.infinity,
- height: 80.toScreenHeight,
+ height: 56.toScreenHeight,
// padding: EdgeInsets.symmetric(horizontal: 20.toScreenWidth, vertical: 10.toScreenHeight),
child: AppTimer(
label: context.translation.workingHours,
@@ -117,6 +121,7 @@ class ServiceRequestBottomSheet {
AppTextFormField(
labelText: context.translation.comments,
textInputType: TextInputType.multiline,
+ labelStyle: AppTextStyles.textFieldLabelStyle,
showWithoutDecoration: true,
backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral100,
alignLabelWithHint: true,
@@ -191,7 +196,6 @@ class ServiceRequestBottomSheet {
label: context.translation.visitDate,
hideShadow: true,
backgroundColor: AppColor.neutral100,
- height: 70.toScreenHeight,
date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest?.visitDate ?? ""),
formatDateWithTime: true,
onDatePicker: (selectedDate) {
@@ -256,34 +260,30 @@ class ServiceRequestBottomSheet {
date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest?.endDate ?? ""),
formatDateWithTime: true,
onDatePicker: (selectedDate) {
- if (selectedDate != null) {
- showTimePicker(
- context: context,
- initialTime: TimeOfDay.now(),
- ).then((selectedTime) {
- // Handle the selected date and time here.
- if (selectedTime != null) {
- DateTime selectedDateTime = DateTime(
- selectedDate.year,
- selectedDate.month,
- selectedDate.day,
- selectedTime.hour,
- selectedTime.minute,
- );
- if (selectedDateTime != null) {
- serviceRequestProvider.currentSelectedRequest?.endDate = selectedDateTime?.toIso8601String();
- serviceRequestProvider.currentSelectedRequest?.workingHours = (((DateTime.parse(serviceRequestProvider.currentSelectedRequest!.endDate!)
- .difference(DateTime.parse(serviceRequestProvider.currentSelectedRequest!.startDate!))
- .inSeconds ??
- 0) /
- 60) /
- 60)
- .toStringAsFixed(2);
- }
- }
- });
- }
- },
+ showTimePicker(
+ context: context,
+ initialTime: TimeOfDay.now(),
+ ).then((selectedTime) {
+ // Handle the selected date and time here.
+ if (selectedTime != null) {
+ DateTime selectedDateTime = DateTime(
+ selectedDate.year,
+ selectedDate.month,
+ selectedDate.day,
+ selectedTime.hour,
+ selectedTime.minute,
+ );
+ serviceRequestProvider.currentSelectedRequest?.endDate = selectedDateTime?.toIso8601String();
+ serviceRequestProvider.currentSelectedRequest?.workingHours = (((DateTime.parse(serviceRequestProvider.currentSelectedRequest!.endDate!)
+ .difference(DateTime.parse(serviceRequestProvider.currentSelectedRequest!.startDate!))
+ .inSeconds ??
+ 0) /
+ 60) /
+ 60)
+ .toStringAsFixed(2);
+ }
+ });
+ },
).expanded,
],
)
@@ -292,6 +292,7 @@ class ServiceRequestBottomSheet {
AppTextFormField(
labelText: context.translation.comments,
backgroundColor: AppColor.neutral100,
+ labelStyle: AppTextStyles.textFieldLabelStyle,
showShadow: false,
textInputType: TextInputType.multiline,
alignLabelWithHint: true,
@@ -345,8 +346,8 @@ class ServiceRequestBottomSheet {
SingleItemDropDownMenu(
context: context,
backgroundColor: AppColor.neutral100,
- height: 70.toScreenHeight,
- title: context.translation.rejectionReason,
+ height: 56.toScreenHeight,
+ title: context.translation.reason,
initialValue: serviceRequestProvider.currentSelectedRequest?.firstAction,
//_serviceRequest.firstAction,
onSelect: (value) {
@@ -362,6 +363,7 @@ class ServiceRequestBottomSheet {
labelText: context.translation.comments,
textInputType: TextInputType.multiline,
alignLabelWithHint: true,
+ labelStyle: AppTextStyles.textFieldLabelStyle,
onChange: (text) {
serviceRequestProvider.currentSelectedRequest?.comments = text;
},
@@ -591,6 +593,7 @@ class ServiceRequestBottomSheet {
AppTextFormField(
labelText: context.translation.comments,
textInputType: TextInputType.multiline,
+ labelStyle: AppTextStyles.textFieldLabelStyle,
showWithoutDecoration: true,
backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral100,
alignLabelWithHint: true,
@@ -620,6 +623,8 @@ class ServiceRequestBottomSheet {
static Future nurseTakeActionBottomSheet({required BuildContext context}) {
bool acknowledge = false;
final GlobalKey _formKey = GlobalKey();
+ Uint8List? newSignature;
+ String ?nurseSignature;
return showModalBottomSheet(
context: context,
useSafeArea: true,
@@ -630,7 +635,7 @@ class ServiceRequestBottomSheet {
key: _formKey,
child: SingleChildScrollView(
child: StatefulBuilder(builder: (context, setState) {
- Uint8List? newSignature;
+
return Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
@@ -671,13 +676,9 @@ class ServiceRequestBottomSheet {
backgroundColor: AppColor.neutral100,
showShadow: false,
onSaved: (signature) {
- // if (signature == null || signature.isEmpty) {
- // setState(() {});
- // return;
- // }
if (signature == null || signature.isEmpty) return;
newSignature = signature;
- // _subWorkOrders.nurseSignature = signature != null ? "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}" : null;
+ nurseSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}";
},
),
36.height,
@@ -692,6 +693,16 @@ class ServiceRequestBottomSheet {
textColor: AppColor.red30,
showBorder: true,
onPressed: () async {
+ _formKey.currentState?.save();
+ if(newSignature!=null&&acknowledge){
+ //TODO replace provider with new provider and also check workorder id is not correct.
+ Provider.of(context,listen: false).nurseReject(model: NurseActionModel(
+ workOrderId: int.parse(serviceRequestProvider.currentSelectedRequest!.id!),
+ signatureNurse: nurseSignature,
+ ));
+ Navigator.pop(context);
+
+ }
},
).expanded,
@@ -702,7 +713,17 @@ class ServiceRequestBottomSheet {
label: context.translation.confirm,
maxWidth: true,
buttonColor: AppColor.green70,
- onPressed: () async {},
+ onPressed: () async {
+ _formKey.currentState?.save();
+ if(newSignature!=null&&acknowledge){
+ //TODO replace provider with new provider and also check workorder id is not correct.
+ Provider.of(context,listen: false).nurseConfirm(model: NurseActionModel(
+ workOrderId: int.parse(serviceRequestProvider.currentSelectedRequest!.id!),
+ signatureNurse: nurseSignature,
+ ));
+ Navigator.pop(context);
+ }
+ },
).expanded,
],
)
diff --git a/lib/service_request_latest/views/components/request_detail_view.dart b/lib/service_request_latest/views/components/request_detail_view.dart
index 0414fa81..2b2d06c0 100644
--- a/lib/service_request_latest/views/components/request_detail_view.dart
+++ b/lib/service_request_latest/views/components/request_detail_view.dart
@@ -18,6 +18,9 @@ import 'package:test_sa/service_request_latest/views/components/action_button/fo
import 'package:test_sa/service_request_latest/views/components/initial_visit_card.dart';
import 'package:test_sa/service_request_latest/views/components/timer_widget.dart';
import 'package:test_sa/service_request_latest/views/forms/asset_retired/asset_retired.dart';
+import 'package:test_sa/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart';
+import 'package:test_sa/service_request_latest/views/forms/maintenance_request/maintenance_request_main.dart';
+import 'package:test_sa/service_request_latest/views/nurse/create_new_request_view.dart';
import 'package:test_sa/views/pages/user/requests/comments_bottom_sheet.dart';
import 'package:test_sa/views/pages/user/requests/update_service_request_page.dart';
import 'package:test_sa/views/widgets/images/files_list.dart';
@@ -25,6 +28,8 @@ import 'package:test_sa/views/widgets/loaders/app_loading.dart';
import 'package:test_sa/views/widgets/requests/request_status.dart';
import 'package:test_sa/views/widgets/sound/sound_player.dart';
+import '../forms/spare_part/spare_part_request.dart';
+
class RequestDetailView extends StatefulWidget {
static const String id = "/call-details";
@@ -103,7 +108,7 @@ class _RequestDetailViewState extends State {
],
),
),
- FooterActionButton.footerWidget(status: 1, context: context),
+ FooterActionButton.requestDetailsFooterWidget(status: 7, context: context),
TimerWidget(),
],
),
@@ -325,8 +330,8 @@ class _RequestDetailViewState extends State {
textColor: AppColor.red30,
showBorder: true,
onPressed: () async {
- Navigator.push(context, MaterialPageRoute(builder: (context) => AssetRetired()));
- // Navigator.push(context, MaterialPageRoute(builder: (context) => CreateNewRequest()));
+ // Navigator.push(context, MaterialPageRoute(builder: (context) => AssetRetired()));
+ Navigator.push(context, MaterialPageRoute(builder: (context) => const CreateNewRequest()));
}),
);
}
diff --git a/lib/service_request_latest/views/components/verify_assets_details.dart b/lib/service_request_latest/views/components/verify_assets_details.dart
index b59a08bf..dca67b81 100644
--- a/lib/service_request_latest/views/components/verify_assets_details.dart
+++ b/lib/service_request_latest/views/components/verify_assets_details.dart
@@ -17,6 +17,7 @@ import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.dart';
import 'package:test_sa/providers/loading_list_notifier.dart';
import 'package:test_sa/providers/work_order/reason_provider.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/bottom_sheets/service_request_bottomsheet.dart';
import 'package:test_sa/views/widgets/images/multi_image_picker.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
@@ -29,16 +30,16 @@ import '../../../../../new_views/common_widgets/app_text_form_field.dart';
import '../../../../../new_views/common_widgets/default_app_bar.dart';
import '../../../controllers/validator/validator.dart';
-class SparePartRequest extends StatefulWidget {
+class VerifyAssetDetail extends StatefulWidget {
static const String id = "/verify-assets-detail";
- const SparePartRequest({Key? key}) : super(key: key);
+ const VerifyAssetDetail({Key? key}) : super(key: key);
@override
- _SparePartRequestState createState() => _SparePartRequestState();
+ _VerifyAssetDetailState createState() => _VerifyAssetDetailState();
}
-class _SparePartRequestState extends State with TickerProviderStateMixin {
+class _VerifyAssetDetailState extends State with TickerProviderStateMixin {
late UserProvider _userProvider;
late SettingProvider _settingProvider;
late ServiceRequestsProvider _serviceRequestsProvider;
@@ -114,7 +115,7 @@ class _SparePartRequestState extends State with TickerProvider
return Scaffold(
key: _scaffoldKey,
- appBar: DefaultAppBar(title: context.translation.sparePartRequest),
+ appBar: DefaultAppBar(title: context.translation.verify_asset_details),
body: Consumer(builder: (context, serviceRequestProvider, child) {
return SafeArea(
child: LoadingManager(
@@ -171,10 +172,9 @@ class _SparePartRequestState extends State with TickerProvider
controller: _oracleNoController,
labelText: context.translation.oracleNo,
textInputType: TextInputType.number,
- contentPadding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 20.toScreenHeight),
showWithoutDecoration: true,
backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral90,
- enable: serviceRequestProvider.initialSelectedSparePart != null && serviceRequestProvider.initialSelectedSparePart.sparePart?.id != null,
+ enable: serviceRequestProvider.initialSelectedSparePart.sparePart?.id != null,
validator: (value) => value == null || value.isEmpty
? context.translation.requiredField
: Validator.isNumeric(value)
@@ -187,10 +187,11 @@ class _SparePartRequestState extends State with TickerProvider
),
15.height,
AppTextFormField(
- initialValue: _serviceReport?.comment,
+ initialValue: _serviceReport.comment,
backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral90,
labelText: context.translation.description,
alignLabelWithHint: true,
+ labelStyle: AppTextStyles.tinyFont.copyWith(color: AppColor.black10),
showWithoutDecoration: true,
textInputType: TextInputType.multiline,
onSaved: (value) {
@@ -200,13 +201,13 @@ class _SparePartRequestState extends State with TickerProvider
15.height,
MultiFilesPicker(label: context.translation.attachQuotation, files: _files),
],
- ).paddingAll(16),
+ ).paddingAll(12),
),
8.height,
],
),
- ).expanded,
- AppFilledButton(
+ ).paddingAll(16).expanded,
+ FooterActionButton.footerContainer(child: AppFilledButton(
label: context.translation.addSparePartActivity,
buttonColor: AppColor.green70,
onPressed: () async {
@@ -234,9 +235,9 @@ class _SparePartRequestState extends State with TickerProvider
// final user = Provider.of(context, listen: false).user;
// await _serviceRequestsProvider.createServiceReport(context, report: _serviceReport, request: serviceRequestProvider.serviceRequest, user: user);
},
- ),
+ )),
],
- ).paddingAll(16),
+ ),
),
),
);
diff --git a/lib/service_request_latest/views/forms/asset_retired/asset_retired.dart b/lib/service_request_latest/views/forms/asset_retired/asset_retired.dart
index 26d6e0bb..302bc3af 100644
--- a/lib/service_request_latest/views/forms/asset_retired/asset_retired.dart
+++ b/lib/service_request_latest/views/forms/asset_retired/asset_retired.dart
@@ -109,7 +109,7 @@ class _AssetRetiredState extends State with TickerProviderStateMix
context: context,
title: context.translation.failureReason,
backgroundColor: AppColor.neutral100,
- height: 70.toScreenHeight,
+ height: 56.toScreenHeight,
showShadow: false,
// initialValue: _subWorkOrders.reason,
onSelect: (value) {
@@ -123,6 +123,7 @@ class _AssetRetiredState extends State with TickerProviderStateMix
labelText: context.translation.comments,
textInputType: TextInputType.multiline,
showWithoutDecoration: true,
+ labelStyle: AppTextStyles.textFieldLabelStyle,
backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral100,
alignLabelWithHint: true,
onChange: (text) {
@@ -135,12 +136,10 @@ class _AssetRetiredState extends State with TickerProviderStateMix
23.height,
MultiFilesPicker(label: context.translation.attachFiles,
files: _files,
- buttonIcon: 'image-plus'?.toSvgAsset(),
+ buttonIcon: 'image-plus'.toSvgAsset(),
),
-
-
],
- ).paddingOnly(start:13,end: 13,top: 16,bottom: 16),
+ ).paddingOnly(start:13,end: 13,top: 14,bottom: 16),
).paddingAll(16),
).expanded,
FooterActionButton.footerContainer(
diff --git a/lib/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart b/lib/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart
index 656b8a65..d2c053e0 100644
--- a/lib/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart
+++ b/lib/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart
@@ -113,7 +113,6 @@ class _VerifyAssetDetailsState extends State with TickerProv
ADatePicker(
label: context.translation.returnToService,
hideShadow: true,
- height: 70.toScreenHeight,
backgroundColor: AppColor.neutral100,
date: DateTime.tryParse(serviceRequestProvider.currentSelectedRequest?.startDate ?? ""),
formatDateWithTime: true,
@@ -152,6 +151,7 @@ class _VerifyAssetDetailsState extends State with TickerProv
SingleItemDropDownMenu(
context: context,
title: context.translation.loanAvailability,
+ height: 56.toScreenHeight,
initialValue: _serviceReport?.loanAvailablity,
onSelect: (status) {
if (status != null) {
@@ -183,7 +183,7 @@ class _VerifyAssetDetailsState extends State with TickerProv
context: context,
title: context.translation.failureReason,
backgroundColor: AppColor.neutral100,
- height: 70.toScreenHeight,
+ height: 56.toScreenHeight,
showShadow: false,
// initialValue: _subWorkOrders.reason,
onSelect: (value) {
@@ -197,7 +197,7 @@ class _VerifyAssetDetailsState extends State with TickerProv
context: context,
title: context.translation.faultDescription,
backgroundColor: AppColor.neutral100,
- height: 70.toScreenHeight,
+ height: 56.toScreenHeight,
showShadow: false,
// initialValue: _subWorkOrders.reason,
onSelect: (value) {
@@ -214,7 +214,7 @@ class _VerifyAssetDetailsState extends State with TickerProv
],
).paddingOnly(start:13,end: 13,top: 16,bottom: 16),
- ).paddingAll(16),
+ ).paddingOnly(top: 17,start: 14,end: 14),
).expanded,
Container(
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth,vertical: 16.toScreenHeight),
@@ -254,10 +254,17 @@ class _VerifyAssetDetailsState extends State with TickerProv
width: 20.toScreenWidth,
height: 40.toScreenHeight,
//TODO use the type required according data..
- child: Radio(
- activeColor: AppColor.primary10,
+ child:Radio(
value: value,
groupValue: _selectedValue,
+ fillColor: WidgetStateProperty.resolveWith((states) {
+ // active
+ if (states.contains(WidgetState.selected)) {
+ return AppColor.primary10;
+ }
+ // inactive
+ return AppColor.neutral130;
+ }),
onChanged: (int ?value) {
setState(() {
_selectedValue = value!;
@@ -268,7 +275,7 @@ class _VerifyAssetDetailsState extends State with TickerProv
8.width,
Text(
label,
- style: AppTextStyles.tinyFont,
+ style: AppTextStyles.tinyFont.copyWith(color: AppColor.neutral120),
),
13.width,
],
diff --git a/lib/service_request_latest/views/forms/maintenance_request/components/external_request.dart b/lib/service_request_latest/views/forms/maintenance_request/components/external_request.dart
index 67569da8..eab0f519 100644
--- a/lib/service_request_latest/views/forms/maintenance_request/components/external_request.dart
+++ b/lib/service_request_latest/views/forms/maintenance_request/components/external_request.dart
@@ -116,10 +116,9 @@ class _ExternalMaintenanceRequestState extends State
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
- 8.height,
SingleItemDropDownMenu(
context: context,
- height: 70.toScreenHeight,
+ height: 56.toScreenHeight,
title: context.translation.supplier,
showShadow: false,
backgroundColor: AppColor.neutral100,
@@ -129,35 +128,16 @@ class _ExternalMaintenanceRequestState extends State
_serviceReport?.calllastSituation = status;
},
),
- // Container(
- // height: 60.toScreenHeight,
- // width: 60.toScreenWidth,
- // decoration: BoxDecoration(
- // color: _subWorkOrders.supplier?.suppliername == null ? AppColor.neutral40 : AppColor.background(context),
- // borderRadius: BorderRadius.circular(10),
- // boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],
- // ),
- // child: Icon(
- // Icons.add,
- // color: context.isDark ? null : AppColor.neutral60,
- // ),
- // ).onPress(_subWorkOrders.supplier?.suppliername == null
- // ? null
- // : () async {
- // SuppEngineerWorkOrders suppEngineer = (await showModalBottomSheet(
- // context: context,
- // useSafeArea: true,
- // isScrollControlled: true,
- // backgroundColor: Colors.transparent,
- // builder: (context) => AddSupplierEngineerBottomSheet(_subWorkOrders.supplier.id),
- // )) as SuppEngineerWorkOrders;
- // if (suppEngineer != null) {
- // _subWorkOrders?.supplier?.suppPersons ??= [];
- // _subWorkOrders?.supplier?.suppPersons?.add(SuppPersons.fromJson(suppEngineer.toJson()));
- // engineer = suppEngineer;
- // setState(() {});
- // }
- // }),
+ 8.height,
+ AppTextFormField(
+ labelText: context.translation.engineerName,
+ backgroundColor: AppColor.neutral100,
+ initialValue: _serviceReport?.assignedEmployee?.name.toString(),
+ textAlign: TextAlign.center,
+ labelStyle: AppTextStyles.textFieldLabelStyle,
+ showShadow: false,
+ style: Theme.of(context).textTheme.titleMedium,
+ ),
8.height,
Row(
mainAxisSize: MainAxisSize.min,
@@ -169,7 +149,7 @@ class _ExternalMaintenanceRequestState extends State
icon: 'clock',
withIcon: true,
backgroundColor: AppColor.neutral100,
- height: 70.toScreenHeight,
+ height: 56.toScreenHeight,
time: _startTime,
onTimePicker: (selectedTime) {
if (selectedTime != null) {
@@ -188,7 +168,7 @@ class _ExternalMaintenanceRequestState extends State
withIcon: true,
backgroundColor: AppColor.neutral100,
withBorder: false,
- height: 70.toScreenHeight,
+ height: 56.toScreenHeight,
time: _endTime,
onTimePicker: (selectedTime) {
if (selectedTime != null) {
@@ -204,8 +184,8 @@ class _ExternalMaintenanceRequestState extends State
AppTextFormField(
labelText: context.translation.workingHours,
backgroundColor: AppColor.neutral80,
+ labelStyle: AppTextStyles.textFieldLabelStyle,
suffixIcon: "clock".toSvgAsset(width: 20, color: context.isDark ? AppColor.neutral10 : null).paddingOnly(end: 16),
- contentPadding: EdgeInsets.symmetric(vertical: 18.toScreenHeight, horizontal: 16.toScreenWidth),
initialValue: _serviceReport?.workingHours.toString(),
textAlign: TextAlign.center,
showShadow: false,
diff --git a/lib/service_request_latest/views/forms/maintenance_request/components/internal_request.dart b/lib/service_request_latest/views/forms/maintenance_request/components/internal_request.dart
index 103114f9..fedce3ed 100644
--- a/lib/service_request_latest/views/forms/maintenance_request/components/internal_request.dart
+++ b/lib/service_request_latest/views/forms/maintenance_request/components/internal_request.dart
@@ -115,10 +115,9 @@ class _InternalMaintenanceRequestState extends State
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
- 8.height,
SingleItemDropDownMenu(
context: context,
- height: 70.toScreenHeight,
+ height: 56.toScreenHeight,
title: context.translation.activityStatus,
showShadow: false,
backgroundColor: AppColor.neutral100,
@@ -139,7 +138,7 @@ class _InternalMaintenanceRequestState extends State
icon: 'clock',
withIcon: true,
backgroundColor: AppColor.neutral100,
- height: 70.toScreenHeight,
+ height: 56.toScreenHeight,
time: _startTime,
onTimePicker: (selectedTime) {
if (selectedTime != null) {
@@ -158,7 +157,7 @@ class _InternalMaintenanceRequestState extends State
withIcon: true,
backgroundColor: AppColor.neutral100,
withBorder: false,
- height: 70.toScreenHeight,
+ height: 56.toScreenHeight,
time: _endTime,
onTimePicker: (selectedTime) {
if (selectedTime != null) {
@@ -175,11 +174,12 @@ class _InternalMaintenanceRequestState extends State
labelText: context.translation.workingHours,
backgroundColor: AppColor.neutral80,
suffixIcon: "clock".toSvgAsset(width: 20, color: context.isDark ? AppColor.neutral10 : null).paddingOnly(end: 16),
- contentPadding: EdgeInsets.symmetric(vertical: 18.toScreenHeight, horizontal: 16.toScreenWidth),
+ // contentPadding: EdgeInsets.symmetric(vertical: 18.toScreenHeight, horizontal: 16.toScreenWidth),
initialValue: _serviceReport?.workingHours.toString(),
textAlign: TextAlign.center,
- showShadow: false,
+ labelStyle: AppTextStyles.textFieldLabelStyle,
enable: false,
+ showShadow: false,
style: Theme.of(context).textTheme.titleMedium,
),
8.height,
@@ -199,11 +199,12 @@ class _InternalMaintenanceRequestState extends State
AppTextFormField(
labelText: context.translation.travelingHours,
backgroundColor: AppColor.neutral100,
+ showShadow: false,
+ labelStyle: AppTextStyles.textFieldLabelStyle,
suffixIcon: "clock".toSvgAsset(width: 20, color: context.isDark ? AppColor.neutral10 : null).paddingOnly(end: 16),
initialValue: _serviceReport?.travelingHours?.toString(),
textInputType: TextInputType.number,
- contentPadding: EdgeInsets.symmetric(vertical: 18.toScreenHeight, horizontal: 16.toScreenWidth),
- showShadow: false,
+ // contentPadding: EdgeInsets.symmetric(vertical: 18.toScreenHeight, horizontal: 16.toScreenWidth),
onSaved: (value) {
_serviceReport?.travelingHours = double.tryParse(value) ?? 0.0;
},
@@ -216,9 +217,9 @@ class _InternalMaintenanceRequestState extends State
AppTextFormField(
labelText: context.translation.assignedEmployee,
backgroundColor: AppColor.neutral80,
- contentPadding: EdgeInsets.symmetric(vertical: 18.toScreenHeight, horizontal: 16.toScreenWidth),
- initialValue: _serviceReport?.workingHours.toString(),
+ initialValue: _serviceReport?.assignedEmployee?.name.toString(),
textAlign: TextAlign.center,
+ labelStyle: AppTextStyles.textFieldLabelStyle,
showShadow: false,
enable: false,
style: Theme.of(context).textTheme.titleMedium,
@@ -229,6 +230,7 @@ class _InternalMaintenanceRequestState extends State
labelText: context.translation.technicalComment,
backgroundColor: AppColor.neutral100,
showShadow: false,
+ labelStyle: AppTextStyles.textFieldLabelStyle,
alignLabelWithHint: true,
textInputType: TextInputType.multiline,
onSaved: (value) {
@@ -238,7 +240,7 @@ class _InternalMaintenanceRequestState extends State
],
),
),
- ).toShadowContainer(context).paddingOnly(start: 16, end: 16, top: 12),
+ ).toShadowContainer(context).paddingOnly(start: 13, end: 14, top: 12),
FooterActionButton.footerContainer(
child: AppFilledButton(
@@ -274,7 +276,14 @@ class _InternalMaintenanceRequestState extends State
height: 40.toScreenHeight,
//TODO use the type required according data..
child: Radio(
- activeColor: AppColor.primary10,
+ fillColor: WidgetStateProperty.resolveWith((states) {
+ // active
+ if (states.contains(WidgetState.selected)) {
+ return AppColor.primary10;
+ }
+ // inactive
+ return AppColor.neutral130;
+ }),
value: value,
groupValue: _selectedValue,
onChanged: (int ?value) {
diff --git a/lib/service_request_latest/views/forms/maintenance_request/maintenance_request_main.dart b/lib/service_request_latest/views/forms/maintenance_request/maintenance_request_main.dart
index a4b37723..0fb38fc0 100644
--- a/lib/service_request_latest/views/forms/maintenance_request/maintenance_request_main.dart
+++ b/lib/service_request_latest/views/forms/maintenance_request/maintenance_request_main.dart
@@ -27,7 +27,7 @@ class _MaintenanceRequestFormState extends State with Si
@override
Widget build(BuildContext context) {
return Scaffold(
- backgroundColor: AppColor.neutral100,
+ backgroundColor: AppColor.neutral110,
appBar: DefaultAppBar(title: context.translation.maintenanceRequest),
body: DefaultTabController(
length: 2,
@@ -47,6 +47,8 @@ class _MaintenanceRequestFormState extends State with Si
unselectedLabelStyle: AppTextStyles.bodyText,
labelStyle: AppTextStyles.bodyText,
indicatorPadding: EdgeInsets.zero,
+ indicatorSize: TabBarIndicatorSize.tab,
+ dividerColor: Colors.transparent,
indicator: BoxDecoration(
color: context.isDark ? AppColor.neutral60 : AppColor.neutral110,
borderRadius: BorderRadius.circular(7),
diff --git a/lib/service_request_latest/views/forms/spare_part/spare_part_request.dart b/lib/service_request_latest/views/forms/spare_part/spare_part_request.dart
index de8465ee..ae2a4918 100644
--- a/lib/service_request_latest/views/forms/spare_part/spare_part_request.dart
+++ b/lib/service_request_latest/views/forms/spare_part/spare_part_request.dart
@@ -10,13 +10,13 @@ import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
-import 'package:test_sa/models/device/asset.dart';
import 'package:test_sa/models/service_request/service_report.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/single_item_drop_down_menu.dart';
import 'package:test_sa/providers/loading_list_notifier.dart';
import 'package:test_sa/providers/work_order/reason_provider.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/bottom_sheets/service_request_bottomsheet.dart';
import 'package:test_sa/views/widgets/images/multi_image_picker.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
@@ -136,7 +136,6 @@ class _SparePartRequestState extends State with TickerProvider
context: context,
title: context.translation.partNo,
staticData: _spareParts,
- height: 80.toScreenHeight,
showShadow: false,
initialValue: serviceRequestProvider.initialSelectedSparePart.sparePart,
backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral90,
@@ -144,15 +143,15 @@ class _SparePartRequestState extends State with TickerProvider
serviceRequestProvider.initialSelectedSparePart = SparePartsWorkOrders(id: 0, sparePart: part, qty: 0);
},
),
- 15.height,
+ 12.height,
AppTextFormField(
controller: _partQtyController,
labelText: context.translation.quantity,
textInputType: TextInputType.number,
- contentPadding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 20.toScreenHeight),
+ labelStyle: AppTextStyles.textFieldLabelStyle,
showWithoutDecoration: true,
backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral90,
- enable: serviceRequestProvider.initialSelectedSparePart != null && serviceRequestProvider.initialSelectedSparePart.sparePart?.id != null,
+ enable: serviceRequestProvider.initialSelectedSparePart.sparePart?.id != null,
validator: (value) => value == null || value.isEmpty
? context.translation.requiredField
: Validator.isNumeric(value)
@@ -162,15 +161,15 @@ class _SparePartRequestState extends State with TickerProvider
serviceRequestProvider.initialSelectedSparePart.qty = num.tryParse(text ?? "");
},
),
- 15.height,
+ 12.height,
AppTextFormField(
controller: _oracleNoController,
+ labelStyle: AppTextStyles.textFieldLabelStyle,
labelText: context.translation.oracleNo,
textInputType: TextInputType.number,
- contentPadding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 20.toScreenHeight),
showWithoutDecoration: true,
backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral90,
- enable: serviceRequestProvider.initialSelectedSparePart != null && serviceRequestProvider.initialSelectedSparePart.sparePart?.id != null,
+ enable: serviceRequestProvider.initialSelectedSparePart.sparePart?.id != null,
validator: (value) => value == null || value.isEmpty
? context.translation.requiredField
: Validator.isNumeric(value)
@@ -181,9 +180,10 @@ class _SparePartRequestState extends State with TickerProvider
// serviceRequestProvider.initialSelectedSparePart. = num.tryParse(text ?? "");
},
),
- 15.height,
+ 12.height,
AppTextFormField(
initialValue: _serviceReport?.comment,
+ labelStyle: AppTextStyles.textFieldLabelStyle,
backgroundColor: context.isDark ? AppColor.neutral20 : AppColor.neutral90,
labelText: context.translation.description,
alignLabelWithHint: true,
@@ -193,16 +193,20 @@ class _SparePartRequestState extends State with TickerProvider
_serviceReport?.comment = value;
},
),
- 15.height,
- MultiFilesPicker(label: context.translation.attachQuotation, files: _files),
+ 12.height,
+ MultiFilesPicker(label: context.translation.attachQuotation, files: _files,
+ buttonIcon: 'quotation_icon'.toSvgAsset(),
+ buttonColor: AppColor.primary10,
+ ),
],
).paddingAll(16),
),
8.height,
],
),
- ).expanded,
- AppFilledButton(
+ ).paddingAll(12).expanded,
+
+ FooterActionButton.footerContainer(child: AppFilledButton(
label: context.translation.addSparePartActivity,
buttonColor: AppColor.green70,
onPressed: () async {
@@ -230,9 +234,9 @@ class _SparePartRequestState extends State with TickerProvider
// final user = Provider.of(context, listen: false).user;
// await _serviceRequestsProvider.createServiceReport(context, report: _serviceReport, request: serviceRequestProvider.serviceRequest, user: user);
},
- ),
+ )),
],
- ).paddingAll(16),
+ ),
),
),
);
diff --git a/lib/service_request_latest/views/nurse/create_new_request_view.dart b/lib/service_request_latest/views/nurse/create_new_request_view.dart
index 6ef846ab..de594a53 100644
--- a/lib/service_request_latest/views/nurse/create_new_request_view.dart
+++ b/lib/service_request_latest/views/nurse/create_new_request_view.dart
@@ -12,7 +12,7 @@ import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
-import 'package:test_sa/models/device/asset_search.dart';
+import 'package:test_sa/models/helper_data_models/workorder/work_order_model.dart';
import 'package:test_sa/models/service_request/pending_service_request_model.dart';
import 'package:test_sa/models/service_request/service_request.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
@@ -21,16 +21,14 @@ import 'package:test_sa/providers/service_request_providers/equipment_status_pro
import 'package:test_sa/providers/service_request_providers/priority_provider.dart';
import 'package:test_sa/providers/service_request_providers/requested_through_provider.dart';
import 'package:test_sa/providers/service_request_providers/type_of_request_provider.dart';
-import 'package:test_sa/providers/work_order/reason_provider.dart';
+import 'package:test_sa/service_request_latest/request_detail_provider.dart';
import 'package:test_sa/service_request_latest/views/components/action_button/footer_action_button.dart';
import 'package:test_sa/views/pages/user/requests/pending_requests_screen.dart';
import 'package:test_sa/views/widgets/bottom_sheets/pending_request_bottom_sheet.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/loaders/loading_manager.dart';
-import 'package:test_sa/views/widgets/qr/scan_qr.dart';
import 'package:test_sa/views/widgets/sound/TextSpeechRecordWidget.dart';
-import '../../../../../../controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart';
import '../../../../../../new_views/common_widgets/default_app_bar.dart';
class CreateNewRequest extends StatefulWidget {
@@ -41,6 +39,7 @@ class CreateNewRequest extends StatefulWidget {
@override
_CreateNewRequestState createState() => _CreateNewRequestState();
}
+//TODO remove unnecessary code
class _CreateNewRequestState extends State with TickerProviderStateMixin {
AssetProvider? _devicesProvider;
@@ -48,6 +47,7 @@ class _CreateNewRequestState extends State with TickerProvider
late UserProvider _userProvider;
late SettingProvider _settingProvider;
late ServiceRequestsProvider _serviceRequestsProvider;
+ late RequestDetailProvider _requestDetailProvider;
late ServiceRequest _serviceRequest;
final List _deviceImages = [];
final bool _isLoading = false;
@@ -63,10 +63,10 @@ class _CreateNewRequestState extends State with TickerProvider
void initState() {
super.initState();
_commentController = TextEditingController();
- _serviceRequestsProvider = Provider.of(context, listen: false);
_userProvider = Provider.of(context, listen: false);
_serviceRequestsProvider = Provider.of(context, listen: false);
-
+ _requestDetailProvider = Provider.of(context, listen: false);
+ getInitialData();
if (_serviceRequestsProvider.currentSelectedRequest != null) {
_serviceRequest = _serviceRequestsProvider.currentSelectedRequest!;
_deviceImages.addAll(_serviceRequest.devicePhotos!.map((e) => File(e)).toList());
@@ -80,6 +80,16 @@ class _CreateNewRequestState extends State with TickerProvider
isFirstActionSubmitted = _serviceRequest.firstAction != null;
// _isLoading = true;
}
+ Future getInitialData() async {
+ WidgetsBinding.instance.addPostFrameCallback((_) async{
+ await Provider.of(context,listen: false).getDate();
+ await Provider.of(context,listen: false).getDate();
+ await Provider.of(context,listen: false).getDate();
+ await Provider.of(context,listen: false).getDate();
+
+ });
+
+ }
@override
void dispose() {
@@ -140,14 +150,14 @@ class _CreateNewRequestState extends State with TickerProvider
MultiFilesPicker(
label: context.translation.attachImage,
files: _deviceImages,
- buttonColor: AppColor.primary10,
+ buttonColor: AppColor.black10,
onlyImages: true,
- buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.primary10),
+ buttonIcon: 'image-plus'.toSvgAsset(color: AppColor.neutral120),
),
],
).paddingOnly(start: 13, end: 13, top: 15, bottom: 16),
).paddingAll(16),
- commentWidget(serviceRequest: ServiceRequest()),
+ commentWidget(serviceRequest: _serviceRequest),
],
),
).expanded,
@@ -200,8 +210,8 @@ class _CreateNewRequestState extends State with TickerProvider
value: element,
activeColor: Colors.red,
fillColor: WidgetStateColor.resolveWith((states) {
- if (states.contains(WidgetState.selected)) return const Color(0xff3DA5E5);
- return const Color(0xffE0E0E0);
+ if (states.contains(WidgetState.selected)) return AppColor.primary10;
+ return AppColor.neutral130;
}),
groupValue: _serviceRequest.defectType,
onChanged: (state) {
@@ -211,7 +221,7 @@ class _CreateNewRequestState extends State with TickerProvider
}),
),
8.width,
- Text(element.name!, style: Theme.of(context).textTheme.bodySmall),
+ Text(element.name??'', style: AppTextStyles.tinyFont.copyWith(color:AppColor.neutral120)),
],
)
],
@@ -327,12 +337,9 @@ class _CreateNewRequestState extends State with TickerProvider
_serviceRequest.requestedThrough = Provider.of(context, listen: false).items.firstWhere((element) => element.value == 3, orElse: null);
_serviceRequest.type = Provider.of(context, listen: false).items.firstWhere((element) => element.value == 1, orElse: null);
- // print("_serviceRequest?.requestedThrough:${_serviceRequest?.requestedThrough.toJson()}");
- // print("_serviceRequest?.type:${_serviceRequest?.type.toJson()}");
- // print("_serviceRequest?.priority:${_serviceRequest?.priority.toJson()}");
- // return;
- if (_formKey.currentState!.validate() && await _serviceRequest.validateNewRequest(context)) {
+ print('comments value is ${_serviceRequest.callComments}');
+ if (_formKey.currentState!.validate() && await _serviceRequest.validateNewRequest(context)) {
_formKey.currentState!.save();
// bool canSubmitRequest = await checkAssetForPendingServiceRequest(_serviceRequest.device.id);
@@ -340,19 +347,33 @@ class _CreateNewRequestState extends State with TickerProvider
// return;
// }
- _serviceRequest.devicePhotos = _deviceImages.map((e) => _isLocalUrl(e.path) ? "${e.path.split("/").last}|${base64Encode(e.readAsBytesSync())}" : e.path).toList();
+ _serviceRequest.devicePhotos = _deviceImages.map((e) => _isLocalUrl(e.path) ? "${e.path.split("/").last}|${base64Encode(e.readAsBytesSync())}" : e.path).toList();
if (_serviceRequest.audio != null) {
if (_isLocalUrl(_serviceRequest.audio!)) {
final File file = File(_serviceRequest.audio!);
_serviceRequest.audio = "${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}";
}
}
- await _serviceRequestsProvider.createRequest(
- context: context,
- user: _userProvider.user!,
- host: _settingProvider.host!,
- serviceRequest: _serviceRequest,
- );
+ List attachement = [];
+ for (var url in _deviceImages) {
+
+ }
+
+ await _requestDetailProvider.createWorkOrder(workOrderHModel: WorkOrderHModel(
+ assetId: _serviceRequest.deviceId,
+ priorityId: _serviceRequest.priority?.id,
+ equipmentStatusId: _serviceRequest.defectType?.id,
+ voiceNote: _serviceRequest.audio,
+ comments: _serviceRequest.callComments,
+ //add attachments also...
+ ));
+
+ // await _serviceRequestsProvider.createRequest(
+ // context: context,
+ // user: _userProvider.user!,
+ // host: _settingProvider.host!,
+ // serviceRequest: _serviceRequest,
+ // );
}
}
}
diff --git a/lib/service_request_latest/views/request_detail_main_view.dart b/lib/service_request_latest/views/request_detail_main_view.dart
index 6939287f..3c2e39c6 100644
--- a/lib/service_request_latest/views/request_detail_main_view.dart
+++ b/lib/service_request_latest/views/request_detail_main_view.dart
@@ -7,7 +7,6 @@ import 'package:test_sa/models/service_request/service_request.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
import 'package:test_sa/service_request_latest/views/components/history_log_view.dart';
-import 'package:test_sa/service_request_latest/views/components/initial_visit_card.dart';
import 'components/request_detail_view.dart';
@@ -29,13 +28,13 @@ class RequestDetailMain extends StatelessWidget {
margin: EdgeInsets.only(left: 16.toScreenWidth, right: 16.toScreenWidth,top: 12.toScreenHeight),
decoration: BoxDecoration(color: context.isDark ? AppColor.neutral50 : AppColor.white10, borderRadius: BorderRadius.circular(10)),
child: TabBar(
- //controller: _tabController,
padding: EdgeInsets.symmetric(vertical: 4.toScreenHeight,horizontal: 4.toScreenWidth),
labelColor: context.isDark ? AppColor.neutral30 : AppColor.black20,
unselectedLabelColor: context.isDark ? AppColor.neutral30 : AppColor.black20,
unselectedLabelStyle: AppTextStyles.bodyText,
labelStyle: AppTextStyles.bodyText,
- indicatorPadding: EdgeInsets.zero,
+ indicatorSize: TabBarIndicatorSize.tab,
+ dividerColor: Colors.transparent,
indicator: BoxDecoration(color: context.isDark ? AppColor.neutral60 : AppColor.neutral110, borderRadius: BorderRadius.circular(7)),
onTap: (index) {
// setState(() {});