Add New Service Body Changed

merge-requests/27/head
zaid_daoud 1 year ago
parent 93f2378ec5
commit bdfa26411b

@ -188,5 +188,6 @@
"alert": "تنبيه",
"duplicateAlert": "تنبيه التكرار",
"duplicateAlertMessage": "هل أنت متأكد أنك تريد تكرار الطلب؟",
"duplicateRequest": "تكرار الطلب"
"duplicateRequest": "تكرار الطلب",
"comment" : "تعليق"
}

@ -188,5 +188,6 @@
"alert": "Alert",
"duplicateAlert": "Duplicate Alert",
"duplicateAlertMessage": "Are you sure you want to duplicate request?",
"duplicateRequest": "Duplicate Request"
"duplicateRequest": "Duplicate Request",
"comment" : "Comment"
}

@ -133,6 +133,8 @@ class ServiceRequestsProvider extends ChangeNotifier {
@required ServiceRequest serviceRequest,
}) async {
var body = {
"id": 0,
"calNo": "",
"callCreatedBy": {"id": user.id, "name": user.userName},
"assets": serviceRequest.deviceId == null ? [] : [serviceRequest.deviceId],
"requestedDate": DateTime.now().toIso8601String(),
@ -144,7 +146,29 @@ class ServiceRequestsProvider extends ChangeNotifier {
"defectType": serviceRequest.defectType.toMap(),
"typeofRequest": serviceRequest.type.toMap(),
"requestedThrough": serviceRequest.type.toMap(),
"reviewComment": "",
"reviewComment": serviceRequest.comment,
"voiceNote": serviceRequest.audio,
"noofFollowup": 0,
"callSiteContactPerson": [
{
"id": 0,
"employeeCode": "string",
"name": "",
"telephone": "",
"job": "",
"email": "",
"land": "",
"contactUserId": "66e4235d-2527-471d-bbef-f29625fde43d ",
},
],
"status": null,
"callLastSituation": null,
"firstAction": null,
"loanAvailablity": null,
"comments": null,
"firstActionDate": null,
"visitDate": null,
"callReview": null,
};
if (serviceRequest.audio != null) {
body["voiceNote"] = serviceRequest.audio;

@ -2,7 +2,7 @@ import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/device/device.dart';
import 'package:test_sa/models/lookup.dart';
class ServiceRequest{
class ServiceRequest {
String id;
String requestCode;
String deviceSerialNumber;
@ -19,6 +19,7 @@ class ServiceRequest{
String audio;
int statusValue;
String statusLabel;
String comment;
bool viewReport;
String engineerMobile;
@ -53,7 +54,6 @@ class ServiceRequest{
this.deviceId,
this.audio,
this.engineerName,
this.viewReport = false,
this.deviceModel,
this.engineerMobile,
@ -69,11 +69,12 @@ class ServiceRequest{
this.type,
this.requestedThrough,
this.device,
this.comment,
});
factory ServiceRequest.fromJson(Map<String,dynamic> parsedJson){
factory ServiceRequest.fromJson(Map<String, dynamic> parsedJson) {
List<String> images = [];
if(parsedJson["attachmentsCallRequest"] is List){
if (parsedJson["attachmentsCallRequest"] is List) {
List list = parsedJson["attachmentsCallRequest"];
images = list.map((e) => URLs.getFileUrl(e["attachmentsCallRequest"])).toList();
}
@ -85,35 +86,27 @@ class ServiceRequest{
deviceId: parsedJson["asset"]["id"],
audio: URLs.getFileUrl(parsedJson["voiceNote"] ?? ""),
deviceArName: parsedJson["asset"]["modelDefinition"]["assetName"] ?? "",
deviceEnName: parsedJson["asset"]["modelDefinition"]["assetName"] ?? "",
deviceEnName: parsedJson["asset"]["modelDefinition"]["assetName"] ?? "",
devicePhotos: images,
deviceSerialNumber: parsedJson["asset"]["assetSerialNo"],
date: DateTime.tryParse(parsedJson["requestedDate"] ?? "").toString().split(" ").first,
maintenanceIssue: parsedJson["comments"],
statusLabel: parsedJson["status"] == null ? null :
parsedJson["status"]["name"],
statusValue: parsedJson["status"] == null ? null :
parsedJson["status"]["value"],
departmentName: parsedJson["asset"]["department"] != null ?
parsedJson["asset"]["department"]["name"] : "",
engineerName: parsedJson["assignedEmployee"] == null ? null :
parsedJson["assignedEmployee"]["name"],
statusLabel: parsedJson["status"] == null ? null : parsedJson["status"]["name"],
statusValue: parsedJson["status"] == null ? null : parsedJson["status"]["value"],
departmentName: parsedJson["asset"]["department"] != null ? parsedJson["asset"]["department"]["name"] : "",
engineerName: parsedJson["assignedEmployee"] == null ? null : parsedJson["assignedEmployee"]["name"],
hospitalId: parsedJson["asset"]["site"]["id"],
reportID: parsedJson["workOrder"] != null ?
parsedJson["workOrder"]["workOrderId"] : null,
reportID: parsedJson["workOrder"] != null ? parsedJson["workOrder"]["workOrderId"] : null,
viewReport: parsedJson["workOrder"] != null,
deviceModel: parsedJson["asset"]["modelDefinition"]["modelName"],
engineerMobile: parsedJson["assignedEmployee"] == null ? null :
parsedJson["assignedEmployee"]["phone"],
faultDescription: parsedJson["workOrder"] != null ?
parsedJson["workOrder"]["faultDescription"] : null,
jobSheetNumber: parsedJson["workOrder"] != null ?
parsedJson["workOrder"]["jobSheetNumber"] :null,
engineerMobile: parsedJson["assignedEmployee"] == null ? null : parsedJson["assignedEmployee"]["phone"],
faultDescription: parsedJson["workOrder"] != null ? parsedJson["workOrder"]["faultDescription"] : null,
jobSheetNumber: parsedJson["workOrder"] != null ? parsedJson["workOrder"]["jobSheetNumber"] : null,
visitDate: DateTime.tryParse(parsedJson["visitDate"] ?? "").toString().split(" ").first,
nextVisitDate: DateTime.tryParse(parsedJson["nextVisitDate"] ?? ""),
workPerformed: parsedJson["workOrder"] != null ?
parsedJson["workOrder"]["workPerformed"] : null,
device: Device.fromJson(parsedJson["asset"])
workPerformed: parsedJson["workOrder"] != null ? parsedJson["workOrder"]["workPerformed"] : null,
device: Device.fromJson(parsedJson["asset"]),
comment: parsedJson["reviewComment"],
);
}
}
}

@ -1,6 +1,6 @@
import 'package:meta/meta.dart';
class Subtitle{
class Subtitle {
// http requests status messages
String currentlyServiceNotAvailable;
String waitUntilYourRequestComplete;
@ -215,8 +215,9 @@ class Subtitle{
String duplicateAlert;
String duplicateAlertMessage;
String alert;
String comment;
void setIssues(List<String> issues){
void setIssues(List<String> issues) {
issues.clear();
issues.add(reason1);
issues.add(reason2);
@ -226,6 +227,7 @@ class Subtitle{
}
Subtitle({
@required this.comment,
@required this.currentlyServiceNotAvailable,
@required this.waitUntilYourRequestComplete,
@required this.requestCompleteSuccessfully,
@ -278,7 +280,6 @@ class Subtitle{
@required this.titleValidateMessage,
@required this.to,
@required this.urlNotFound,
@required this.nameExist,
@required this.unitRequired,
@required this.unite,
@ -384,7 +385,6 @@ class Subtitle{
@required this.pickImage,
@required this.requiredImage,
@required this.activationAlert,
@required this.callId,
@required this.requiredWord,
@required this.quantity,
@ -409,8 +409,9 @@ class Subtitle{
@required this.duplicateRequest,
});
factory Subtitle.fromJson(Map<String,dynamic> parsedJson){
factory Subtitle.fromJson(Map<String, dynamic> parsedJson) {
return Subtitle(
comment: parsedJson["comment"],
currentlyServiceNotAvailable: parsedJson["server_error_message"],
failedToCompleteRequest: parsedJson["failed_request_message"],
requestCompleteSuccessfully: parsedJson["successful_request_message"],
@ -423,7 +424,6 @@ class Subtitle{
signOut: parsedJson["sign_out"],
signOutAlert: parsedJson["logout_alert"],
language: parsedJson["language"],
name: parsedJson["name"],
email: parsedJson["email"],
phoneNumber: parsedJson["phone_number"],
@ -437,7 +437,6 @@ class Subtitle{
passwordValidateMessage: parsedJson["password_validate_message"],
confirmPasswordValidateMessage: parsedJson["confirm_password_validate_message"],
phoneNumberValidateMessage: parsedJson["phone_number_validate_message"],
forgetPasswordWithMark: parsedJson["forget_password_with_mark"],
showPassword: parsedJson["show_password"],
wrongEmailOrPassword: parsedJson["wrong_email_or_password"],
@ -447,7 +446,6 @@ class Subtitle{
back: parsedJson["back"],
search: parsedJson["search"],
searchByName: parsedJson["search_by_name"],
address: parsedJson["address"],
addressNotFound: parsedJson["address_not_found"],
addressValidateMessage: parsedJson["address_validate_message"],
@ -466,7 +464,6 @@ class Subtitle{
titleNotFound: parsedJson["title_not_found"],
titleValidateMessage: parsedJson["title_validate_message"],
urlNotFound: parsedJson["url_not_found"],
date: parsedJson["date"],
status: parsedJson["status"],
code: parsedJson["code"],
@ -542,7 +539,6 @@ class Subtitle{
visitDate: parsedJson["visitDate"],
whatsApp: parsedJson["whatsApp"],
workPerformed: parsedJson["workPerformed"],
actualDate: parsedJson["actualDate"],
done: parsedJson["done"],
expectDate: parsedJson["expectDate"],
@ -573,7 +569,6 @@ class Subtitle{
requiredImage: parsedJson["requiredImage"],
taskStatus: parsedJson["taskStatus"],
activationAlert: parsedJson["activationAlert"],
attachImage: parsedJson["attachImage"],
callLastSituation: parsedJson["callLastSituation"],
customer: parsedJson["customer"],
@ -592,12 +587,10 @@ class Subtitle{
requiredWord: parsedJson["requiredWord"],
serviceType: parsedJson["serviceType"],
workPreformed: parsedJson["workPreformed"],
alert: parsedJson["alert"],
duplicateAlert: parsedJson["duplicateAlert"],
duplicateAlertMessage: parsedJson["duplicateAlertMessage"],
duplicateRequest: parsedJson["duplicateRequest"],
);
}
}
}

@ -31,6 +31,7 @@ import 'package:test_sa/views/widgets/status/service_request/service_request_pri
import 'package:test_sa/views/widgets/status/service_request/service_request_through_mune.dart';
import 'package:test_sa/views/widgets/status/service_request/service_request_types_mune.dart';
import 'package:test_sa/views/widgets/titles/app_sub_title.dart';
class CreateRequestPage extends StatefulWidget {
static final String id = "/create-request";
@ -50,17 +51,19 @@ class _CreateRequestPageState extends State<CreateRequestPage> {
Subtitle _subtitle;
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
TextEditingController _controller;
TextEditingController _maintenanceController, _commentController;
@override
void initState() {
_controller = TextEditingController();
_maintenanceController = TextEditingController();
_commentController = TextEditingController();
super.initState();
}
@override
void dispose() {
_controller.dispose();
_maintenanceController.dispose();
_commentController.dispose();
super.dispose();
}
@ -136,40 +139,56 @@ class _CreateRequestPageState extends State<CreateRequestPage> {
setState(() {});
},
),
const SizedBox(height: 8,),
const SizedBox(
height: 8,
),
const ASubTitle("Priority"),
const SizedBox(height: 4,),
const SizedBox(
height: 4,
),
ServiceRequestPriorityMenu(
initialValue: _serviceRequest.priority,
onSelect: (status){
onSelect: (status) {
_serviceRequest.priority = status;
},
),
const SizedBox(height: 8,),
const SizedBox(
height: 8,
),
const ASubTitle("Defect Type"),
const SizedBox(height: 4,),
const SizedBox(
height: 4,
),
ServiceRequestDefectTypesMenu(
initialValue: _serviceRequest.defectType,
onSelect: (status){
onSelect: (status) {
_serviceRequest.defectType = status;
},
),
12.height,
const SizedBox(height: 8,),
const SizedBox(
height: 8,
),
const ASubTitle("Type"),
const SizedBox(height: 4,),
const SizedBox(
height: 4,
),
ServiceRequestTypesMenu(
initialValue: _serviceRequest.type,
onSelect: (status){
onSelect: (status) {
_serviceRequest.type = status;
},
),
const SizedBox(height: 8,),
const SizedBox(
height: 8,
),
const ASubTitle("Through"),
const SizedBox(height: 4,),
const SizedBox(
height: 4,
),
ServiceRequestedThroughMenu(
initialValue: const Lookup(name: "App",value: 3),
onSelect: (status){
initialValue: const Lookup(name: "App", value: 3),
onSelect: (status) {
_serviceRequest.requestedThrough = status;
},
),
@ -179,10 +198,10 @@ class _CreateRequestPageState extends State<CreateRequestPage> {
images: _deviceImages,
),
12.height,
SpeechToTextButton(controller: _controller),
SpeechToTextButton(controller: _maintenanceController),
12.height,
ATextFormField(
controller: _controller,
controller: _maintenanceController,
initialValue: _serviceRequest.maintenanceIssue,
hintText: _subtitle.maintenanceIssue,
prefixIconData: FontAwesomeIcons.triangleExclamation,
@ -198,6 +217,16 @@ class _CreateRequestPageState extends State<CreateRequestPage> {
_serviceRequest.audio = audio;
}),
12.height,
ATextFormField(
controller: _commentController,
initialValue: _serviceRequest.comment,
hintText: _subtitle.comment,
style: Theme.of(context).textTheme.titleMedium,
textInputType: TextInputType.multiline,
onSaved: (value) {
_serviceRequest.comment = value;
},
),
],
).paddingOnly(left: 20, right: 20),
Padding(
@ -210,9 +239,8 @@ class _CreateRequestPageState extends State<CreateRequestPage> {
_serviceRequest.deviceId = _device?.id ?? "";
_isLoading = true;
setState(() {});
_serviceRequest.devicePhotos = _deviceImages.map(
(e) => "${e.path.split("/").last}|${base64Encode(e.readAsBytesSync())}").toList();
if(_serviceRequest.audio != null){
_serviceRequest.devicePhotos = _deviceImages.map((e) => "${e.path.split("/").last}|${base64Encode(e.readAsBytesSync())}").toList();
if (_serviceRequest.audio != null) {
final file = File(_serviceRequest.audio);
_serviceRequest.audio = "${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}";
}

Loading…
Cancel
Save