Add New Service Body Changed

merge-requests/27/head
zaid_daoud 2 years ago
parent 93f2378ec5
commit bdfa26411b

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

@ -188,5 +188,6 @@
"alert": "Alert", "alert": "Alert",
"duplicateAlert": "Duplicate Alert", "duplicateAlert": "Duplicate Alert",
"duplicateAlertMessage": "Are you sure you want to duplicate request?", "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, @required ServiceRequest serviceRequest,
}) async { }) async {
var body = { var body = {
"id": 0,
"calNo": "",
"callCreatedBy": {"id": user.id, "name": user.userName}, "callCreatedBy": {"id": user.id, "name": user.userName},
"assets": serviceRequest.deviceId == null ? [] : [serviceRequest.deviceId], "assets": serviceRequest.deviceId == null ? [] : [serviceRequest.deviceId],
"requestedDate": DateTime.now().toIso8601String(), "requestedDate": DateTime.now().toIso8601String(),
@ -144,7 +146,29 @@ class ServiceRequestsProvider extends ChangeNotifier {
"defectType": serviceRequest.defectType.toMap(), "defectType": serviceRequest.defectType.toMap(),
"typeofRequest": serviceRequest.type.toMap(), "typeofRequest": serviceRequest.type.toMap(),
"requestedThrough": 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) { if (serviceRequest.audio != null) {
body["voiceNote"] = serviceRequest.audio; 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/device/device.dart';
import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/lookup.dart';
class ServiceRequest{ class ServiceRequest {
String id; String id;
String requestCode; String requestCode;
String deviceSerialNumber; String deviceSerialNumber;
@ -19,6 +19,7 @@ class ServiceRequest{
String audio; String audio;
int statusValue; int statusValue;
String statusLabel; String statusLabel;
String comment;
bool viewReport; bool viewReport;
String engineerMobile; String engineerMobile;
@ -53,7 +54,6 @@ class ServiceRequest{
this.deviceId, this.deviceId,
this.audio, this.audio,
this.engineerName, this.engineerName,
this.viewReport = false, this.viewReport = false,
this.deviceModel, this.deviceModel,
this.engineerMobile, this.engineerMobile,
@ -69,11 +69,12 @@ class ServiceRequest{
this.type, this.type,
this.requestedThrough, this.requestedThrough,
this.device, this.device,
this.comment,
}); });
factory ServiceRequest.fromJson(Map<String,dynamic> parsedJson){ factory ServiceRequest.fromJson(Map<String, dynamic> parsedJson) {
List<String> images = []; List<String> images = [];
if(parsedJson["attachmentsCallRequest"] is List){ if (parsedJson["attachmentsCallRequest"] is List) {
List list = parsedJson["attachmentsCallRequest"]; List list = parsedJson["attachmentsCallRequest"];
images = list.map((e) => URLs.getFileUrl(e["attachmentsCallRequest"])).toList(); images = list.map((e) => URLs.getFileUrl(e["attachmentsCallRequest"])).toList();
} }
@ -85,35 +86,27 @@ class ServiceRequest{
deviceId: parsedJson["asset"]["id"], deviceId: parsedJson["asset"]["id"],
audio: URLs.getFileUrl(parsedJson["voiceNote"] ?? ""), audio: URLs.getFileUrl(parsedJson["voiceNote"] ?? ""),
deviceArName: parsedJson["asset"]["modelDefinition"]["assetName"] ?? "", deviceArName: parsedJson["asset"]["modelDefinition"]["assetName"] ?? "",
deviceEnName: parsedJson["asset"]["modelDefinition"]["assetName"] ?? "", deviceEnName: parsedJson["asset"]["modelDefinition"]["assetName"] ?? "",
devicePhotos: images, devicePhotos: images,
deviceSerialNumber: parsedJson["asset"]["assetSerialNo"], deviceSerialNumber: parsedJson["asset"]["assetSerialNo"],
date: DateTime.tryParse(parsedJson["requestedDate"] ?? "").toString().split(" ").first, date: DateTime.tryParse(parsedJson["requestedDate"] ?? "").toString().split(" ").first,
maintenanceIssue: parsedJson["comments"], maintenanceIssue: parsedJson["comments"],
statusLabel: parsedJson["status"] == null ? null : statusLabel: parsedJson["status"] == null ? null : parsedJson["status"]["name"],
parsedJson["status"]["name"], statusValue: parsedJson["status"] == null ? null : parsedJson["status"]["value"],
statusValue: parsedJson["status"] == null ? null : departmentName: parsedJson["asset"]["department"] != null ? parsedJson["asset"]["department"]["name"] : "",
parsedJson["status"]["value"], engineerName: parsedJson["assignedEmployee"] == null ? null : parsedJson["assignedEmployee"]["name"],
departmentName: parsedJson["asset"]["department"] != null ?
parsedJson["asset"]["department"]["name"] : "",
engineerName: parsedJson["assignedEmployee"] == null ? null :
parsedJson["assignedEmployee"]["name"],
hospitalId: parsedJson["asset"]["site"]["id"], hospitalId: parsedJson["asset"]["site"]["id"],
reportID: parsedJson["workOrder"] != null ? reportID: parsedJson["workOrder"] != null ? parsedJson["workOrder"]["workOrderId"] : null,
parsedJson["workOrder"]["workOrderId"] : null,
viewReport: parsedJson["workOrder"] != null, viewReport: parsedJson["workOrder"] != null,
deviceModel: parsedJson["asset"]["modelDefinition"]["modelName"], deviceModel: parsedJson["asset"]["modelDefinition"]["modelName"],
engineerMobile: parsedJson["assignedEmployee"] == null ? null : engineerMobile: parsedJson["assignedEmployee"] == null ? null : parsedJson["assignedEmployee"]["phone"],
parsedJson["assignedEmployee"]["phone"], faultDescription: parsedJson["workOrder"] != null ? parsedJson["workOrder"]["faultDescription"] : null,
faultDescription: parsedJson["workOrder"] != null ? jobSheetNumber: parsedJson["workOrder"] != null ? parsedJson["workOrder"]["jobSheetNumber"] : null,
parsedJson["workOrder"]["faultDescription"] : null,
jobSheetNumber: parsedJson["workOrder"] != null ?
parsedJson["workOrder"]["jobSheetNumber"] :null,
visitDate: DateTime.tryParse(parsedJson["visitDate"] ?? "").toString().split(" ").first, visitDate: DateTime.tryParse(parsedJson["visitDate"] ?? "").toString().split(" ").first,
nextVisitDate: DateTime.tryParse(parsedJson["nextVisitDate"] ?? ""), nextVisitDate: DateTime.tryParse(parsedJson["nextVisitDate"] ?? ""),
workPerformed: parsedJson["workOrder"] != null ? workPerformed: parsedJson["workOrder"] != null ? parsedJson["workOrder"]["workPerformed"] : null,
parsedJson["workOrder"]["workPerformed"] : null, device: Device.fromJson(parsedJson["asset"]),
device: Device.fromJson(parsedJson["asset"]) comment: parsedJson["reviewComment"],
); );
} }
} }

@ -1,6 +1,6 @@
import 'package:meta/meta.dart'; import 'package:meta/meta.dart';
class Subtitle{ class Subtitle {
// http requests status messages // http requests status messages
String currentlyServiceNotAvailable; String currentlyServiceNotAvailable;
String waitUntilYourRequestComplete; String waitUntilYourRequestComplete;
@ -215,8 +215,9 @@ class Subtitle{
String duplicateAlert; String duplicateAlert;
String duplicateAlertMessage; String duplicateAlertMessage;
String alert; String alert;
String comment;
void setIssues(List<String> issues){ void setIssues(List<String> issues) {
issues.clear(); issues.clear();
issues.add(reason1); issues.add(reason1);
issues.add(reason2); issues.add(reason2);
@ -226,6 +227,7 @@ class Subtitle{
} }
Subtitle({ Subtitle({
@required this.comment,
@required this.currentlyServiceNotAvailable, @required this.currentlyServiceNotAvailable,
@required this.waitUntilYourRequestComplete, @required this.waitUntilYourRequestComplete,
@required this.requestCompleteSuccessfully, @required this.requestCompleteSuccessfully,
@ -278,7 +280,6 @@ class Subtitle{
@required this.titleValidateMessage, @required this.titleValidateMessage,
@required this.to, @required this.to,
@required this.urlNotFound, @required this.urlNotFound,
@required this.nameExist, @required this.nameExist,
@required this.unitRequired, @required this.unitRequired,
@required this.unite, @required this.unite,
@ -384,7 +385,6 @@ class Subtitle{
@required this.pickImage, @required this.pickImage,
@required this.requiredImage, @required this.requiredImage,
@required this.activationAlert, @required this.activationAlert,
@required this.callId, @required this.callId,
@required this.requiredWord, @required this.requiredWord,
@required this.quantity, @required this.quantity,
@ -409,8 +409,9 @@ class Subtitle{
@required this.duplicateRequest, @required this.duplicateRequest,
}); });
factory Subtitle.fromJson(Map<String,dynamic> parsedJson){ factory Subtitle.fromJson(Map<String, dynamic> parsedJson) {
return Subtitle( return Subtitle(
comment: parsedJson["comment"],
currentlyServiceNotAvailable: parsedJson["server_error_message"], currentlyServiceNotAvailable: parsedJson["server_error_message"],
failedToCompleteRequest: parsedJson["failed_request_message"], failedToCompleteRequest: parsedJson["failed_request_message"],
requestCompleteSuccessfully: parsedJson["successful_request_message"], requestCompleteSuccessfully: parsedJson["successful_request_message"],
@ -423,7 +424,6 @@ class Subtitle{
signOut: parsedJson["sign_out"], signOut: parsedJson["sign_out"],
signOutAlert: parsedJson["logout_alert"], signOutAlert: parsedJson["logout_alert"],
language: parsedJson["language"], language: parsedJson["language"],
name: parsedJson["name"], name: parsedJson["name"],
email: parsedJson["email"], email: parsedJson["email"],
phoneNumber: parsedJson["phone_number"], phoneNumber: parsedJson["phone_number"],
@ -437,7 +437,6 @@ class Subtitle{
passwordValidateMessage: parsedJson["password_validate_message"], passwordValidateMessage: parsedJson["password_validate_message"],
confirmPasswordValidateMessage: parsedJson["confirm_password_validate_message"], confirmPasswordValidateMessage: parsedJson["confirm_password_validate_message"],
phoneNumberValidateMessage: parsedJson["phone_number_validate_message"], phoneNumberValidateMessage: parsedJson["phone_number_validate_message"],
forgetPasswordWithMark: parsedJson["forget_password_with_mark"], forgetPasswordWithMark: parsedJson["forget_password_with_mark"],
showPassword: parsedJson["show_password"], showPassword: parsedJson["show_password"],
wrongEmailOrPassword: parsedJson["wrong_email_or_password"], wrongEmailOrPassword: parsedJson["wrong_email_or_password"],
@ -447,7 +446,6 @@ class Subtitle{
back: parsedJson["back"], back: parsedJson["back"],
search: parsedJson["search"], search: parsedJson["search"],
searchByName: parsedJson["search_by_name"], searchByName: parsedJson["search_by_name"],
address: parsedJson["address"], address: parsedJson["address"],
addressNotFound: parsedJson["address_not_found"], addressNotFound: parsedJson["address_not_found"],
addressValidateMessage: parsedJson["address_validate_message"], addressValidateMessage: parsedJson["address_validate_message"],
@ -466,7 +464,6 @@ class Subtitle{
titleNotFound: parsedJson["title_not_found"], titleNotFound: parsedJson["title_not_found"],
titleValidateMessage: parsedJson["title_validate_message"], titleValidateMessage: parsedJson["title_validate_message"],
urlNotFound: parsedJson["url_not_found"], urlNotFound: parsedJson["url_not_found"],
date: parsedJson["date"], date: parsedJson["date"],
status: parsedJson["status"], status: parsedJson["status"],
code: parsedJson["code"], code: parsedJson["code"],
@ -542,7 +539,6 @@ class Subtitle{
visitDate: parsedJson["visitDate"], visitDate: parsedJson["visitDate"],
whatsApp: parsedJson["whatsApp"], whatsApp: parsedJson["whatsApp"],
workPerformed: parsedJson["workPerformed"], workPerformed: parsedJson["workPerformed"],
actualDate: parsedJson["actualDate"], actualDate: parsedJson["actualDate"],
done: parsedJson["done"], done: parsedJson["done"],
expectDate: parsedJson["expectDate"], expectDate: parsedJson["expectDate"],
@ -573,7 +569,6 @@ class Subtitle{
requiredImage: parsedJson["requiredImage"], requiredImage: parsedJson["requiredImage"],
taskStatus: parsedJson["taskStatus"], taskStatus: parsedJson["taskStatus"],
activationAlert: parsedJson["activationAlert"], activationAlert: parsedJson["activationAlert"],
attachImage: parsedJson["attachImage"], attachImage: parsedJson["attachImage"],
callLastSituation: parsedJson["callLastSituation"], callLastSituation: parsedJson["callLastSituation"],
customer: parsedJson["customer"], customer: parsedJson["customer"],
@ -592,12 +587,10 @@ class Subtitle{
requiredWord: parsedJson["requiredWord"], requiredWord: parsedJson["requiredWord"],
serviceType: parsedJson["serviceType"], serviceType: parsedJson["serviceType"],
workPreformed: parsedJson["workPreformed"], workPreformed: parsedJson["workPreformed"],
alert: parsedJson["alert"], alert: parsedJson["alert"],
duplicateAlert: parsedJson["duplicateAlert"], duplicateAlert: parsedJson["duplicateAlert"],
duplicateAlertMessage: parsedJson["duplicateAlertMessage"], duplicateAlertMessage: parsedJson["duplicateAlertMessage"],
duplicateRequest: parsedJson["duplicateRequest"], 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_through_mune.dart';
import 'package:test_sa/views/widgets/status/service_request/service_request_types_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'; import 'package:test_sa/views/widgets/titles/app_sub_title.dart';
class CreateRequestPage extends StatefulWidget { class CreateRequestPage extends StatefulWidget {
static final String id = "/create-request"; static final String id = "/create-request";
@ -50,17 +51,19 @@ class _CreateRequestPageState extends State<CreateRequestPage> {
Subtitle _subtitle; Subtitle _subtitle;
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>(); final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
TextEditingController _controller; TextEditingController _maintenanceController, _commentController;
@override @override
void initState() { void initState() {
_controller = TextEditingController(); _maintenanceController = TextEditingController();
_commentController = TextEditingController();
super.initState(); super.initState();
} }
@override @override
void dispose() { void dispose() {
_controller.dispose(); _maintenanceController.dispose();
_commentController.dispose();
super.dispose(); super.dispose();
} }
@ -136,40 +139,56 @@ class _CreateRequestPageState extends State<CreateRequestPage> {
setState(() {}); setState(() {});
}, },
), ),
const SizedBox(height: 8,), const SizedBox(
height: 8,
),
const ASubTitle("Priority"), const ASubTitle("Priority"),
const SizedBox(height: 4,), const SizedBox(
height: 4,
),
ServiceRequestPriorityMenu( ServiceRequestPriorityMenu(
initialValue: _serviceRequest.priority, initialValue: _serviceRequest.priority,
onSelect: (status){ onSelect: (status) {
_serviceRequest.priority = status; _serviceRequest.priority = status;
}, },
), ),
const SizedBox(height: 8,), const SizedBox(
height: 8,
),
const ASubTitle("Defect Type"), const ASubTitle("Defect Type"),
const SizedBox(height: 4,), const SizedBox(
height: 4,
),
ServiceRequestDefectTypesMenu( ServiceRequestDefectTypesMenu(
initialValue: _serviceRequest.defectType, initialValue: _serviceRequest.defectType,
onSelect: (status){ onSelect: (status) {
_serviceRequest.defectType = status; _serviceRequest.defectType = status;
}, },
), ),
12.height, 12.height,
const SizedBox(height: 8,), const SizedBox(
height: 8,
),
const ASubTitle("Type"), const ASubTitle("Type"),
const SizedBox(height: 4,), const SizedBox(
height: 4,
),
ServiceRequestTypesMenu( ServiceRequestTypesMenu(
initialValue: _serviceRequest.type, initialValue: _serviceRequest.type,
onSelect: (status){ onSelect: (status) {
_serviceRequest.type = status; _serviceRequest.type = status;
}, },
), ),
const SizedBox(height: 8,), const SizedBox(
height: 8,
),
const ASubTitle("Through"), const ASubTitle("Through"),
const SizedBox(height: 4,), const SizedBox(
height: 4,
),
ServiceRequestedThroughMenu( ServiceRequestedThroughMenu(
initialValue: const Lookup(name: "App",value: 3), initialValue: const Lookup(name: "App", value: 3),
onSelect: (status){ onSelect: (status) {
_serviceRequest.requestedThrough = status; _serviceRequest.requestedThrough = status;
}, },
), ),
@ -179,10 +198,10 @@ class _CreateRequestPageState extends State<CreateRequestPage> {
images: _deviceImages, images: _deviceImages,
), ),
12.height, 12.height,
SpeechToTextButton(controller: _controller), SpeechToTextButton(controller: _maintenanceController),
12.height, 12.height,
ATextFormField( ATextFormField(
controller: _controller, controller: _maintenanceController,
initialValue: _serviceRequest.maintenanceIssue, initialValue: _serviceRequest.maintenanceIssue,
hintText: _subtitle.maintenanceIssue, hintText: _subtitle.maintenanceIssue,
prefixIconData: FontAwesomeIcons.triangleExclamation, prefixIconData: FontAwesomeIcons.triangleExclamation,
@ -198,6 +217,16 @@ class _CreateRequestPageState extends State<CreateRequestPage> {
_serviceRequest.audio = audio; _serviceRequest.audio = audio;
}), }),
12.height, 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), ).paddingOnly(left: 20, right: 20),
Padding( Padding(
@ -210,9 +239,8 @@ class _CreateRequestPageState extends State<CreateRequestPage> {
_serviceRequest.deviceId = _device?.id ?? ""; _serviceRequest.deviceId = _device?.id ?? "";
_isLoading = true; _isLoading = true;
setState(() {}); setState(() {});
_serviceRequest.devicePhotos = _deviceImages.map( _serviceRequest.devicePhotos = _deviceImages.map((e) => "${e.path.split("/").last}|${base64Encode(e.readAsBytesSync())}").toList();
(e) => "${e.path.split("/").last}|${base64Encode(e.readAsBytesSync())}").toList(); if (_serviceRequest.audio != null) {
if(_serviceRequest.audio != null){
final file = File(_serviceRequest.audio); final file = File(_serviceRequest.audio);
_serviceRequest.audio = "${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}"; _serviceRequest.audio = "${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}";
} }

Loading…
Cancel
Save