Merge branch 'zaid-development' into 'master'

Zaid development

See merge request haroon6138/cloudsolutions-atoms!21
master
Sikander Saleem 3 years ago
commit 7350184656

@ -142,8 +142,8 @@ class ApiClient {
} }
} }
if(!kReleaseMode) if (!kReleaseMode) {
{ print("url:$url"); print("url:$url");
print("requestBody:$requestBody"); print("requestBody:$requestBody");
} }
@ -192,6 +192,9 @@ class ApiClient {
headers['Content-Type'] = 'application/json'; headers['Content-Type'] = 'application/json';
} }
} }
if (!kReleaseMode) {
print(jsonObject);
}
if (isFormData) { if (isFormData) {
headers = {'Content-Type': 'application/x-www-form-urlencoded'}; headers = {'Content-Type': 'application/x-www-form-urlencoded'};

@ -19,6 +19,7 @@ class PreventiveMaintenanceApiClient {
factory PreventiveMaintenanceApiClient() => _instance; factory PreventiveMaintenanceApiClient() => _instance;
Future getVisits({required int pageItemNumber, VisitsSearch? visitsSearch}) async { Future getVisits({required int pageItemNumber, VisitsSearch? visitsSearch}) async {
print('get visits');
final response = await ApiClient().getJsonForResponse( final response = await ApiClient().getJsonForResponse(
'${URLs.host1}${URLs.getPreventiveMaintenanceVisits}', '${URLs.host1}${URLs.getPreventiveMaintenanceVisits}',
headers: {"Content-Type": "application/json; charset=utf-8"}, headers: {"Content-Type": "application/json; charset=utf-8"},
@ -35,6 +36,7 @@ class PreventiveMaintenanceApiClient {
} }
Future updateGroupOfVisits({required VisitsGroup group}) async { Future updateGroupOfVisits({required VisitsGroup group}) async {
print('update group of visits');
final user = UserApiClient().user; final user = UserApiClient().user;
Map<String, String> body = group.toJson(); Map<String, String> body = group.toJson();
body["token"] = user?.token ?? ""; body["token"] = user?.token ?? "";

@ -19,8 +19,11 @@ class ServiceRequestApiClient {
factory ServiceRequestApiClient() => _instance; factory ServiceRequestApiClient() => _instance;
// 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
/// ### The result will be added to [serviceRequests] /// ### The result will be added to [serviceRequests]
Future createRequest(ServiceRequest serviceRequest) async { Future createRequest(ServiceRequest serviceRequest) async {
print("create request");
final user = UserApiClient().user; final user = UserApiClient().user;
await ApiClient().postJsonForObject( await ApiClient().postJsonForObject(
(json) { (json) {
@ -29,41 +32,135 @@ class ServiceRequestApiClient {
}, },
'${URLs.host1}${URLs.createRequest}', '${URLs.host1}${URLs.createRequest}',
{ {
// "uid": user?.id, "callNo": serviceRequest.id,
// "token": user?.token ?? "", "callCreatedBy": {"name": serviceRequest.engineerName},
// "sn_id": serviceRequest.deviceId ?? "", "requestedDate": DateTime.now().millisecondsSinceEpoch.toString(),
// "date": (DateTime.now().millisecondsSinceEpoch).toString(), "requestedTime": DateTime.now().millisecondsSinceEpoch.toString(),
// "client": user?.hospital?.id ?? '', "defectType": {"id": serviceRequest.defectType?.id, "name": serviceRequest.defectType?.label, "value": serviceRequest.defectType?.id},
// "complaint": serviceRequest.maintenanceIssue, // "assets": [0],
// "image": json.encode(serviceRequest.devicePhotos), "assignedEmployee": {"id": user?.id.toString(), "name": user?.username},
// "priority": (serviceRequest.priority?.id).toString(), "voiceNote": serviceRequest.audio,
// "defect_types": (serviceRequest.defectType?.id).toString(), // "callSiteContactPerson": [
// "audio": serviceRequest.audio, // {"id": 0, "employeeCode": "string", "name": "string", "telephone": "string", "job": "string", "email": "string", "land": "string", "contactUserId": "string"}
// ],
"priority": {"id": serviceRequest.priority?.id, "name": serviceRequest.priority?.label, "value": serviceRequest.priority?.id},
// "requestedThrough": {"id": 0, "name": "string", "value": 0},
// "typeofRequest": {"id": 0, "name": "string", "value": 0},
// "callComments": "string",
// "noofFollowup": 0,
// "attachmentsCallRequest": [
// {"id": "", "name": ""}
// ],
"status": {"name": serviceRequest.statusLabel, "value": serviceRequest.statusValue},
// "callLastSituation": {"id": 0, "name": "string", "value": 0},
// "firstAction": {"id": 0, "name": "string", "value": 0},
// "loanAvailablity": {"id": 0, "name": "string", "value": 0},
// "comments": "string",
// "firstActionDate": "2023-04-17T10:39:59.599Z",
"visitDate": serviceRequest.visitDate,
// "callReview": {"id": 0, "name": "string", "value": serviceRequest.}
}, },
// {
// "uid": user?.id,
// "token": user?.token ?? "",
// "sn_id": serviceRequest.deviceId ?? "",
// "date": (DateTime.now().millisecondsSinceEpoch).toString(),
// "client": user?.hospital?.id ?? '',
// "complaint": serviceRequest.maintenanceIssue,
// "image": json.encode(serviceRequest.devicePhotos),
// "priority": (serviceRequest.priority?.id).toString(),
// "defect_types": (serviceRequest.defectType?.id).toString(),
// "audio": serviceRequest.audio,
// },
); );
} }
// 222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
/// Get Service Requests and Fill [serviceRequests] /// Get Service Requests and Fill [serviceRequests]
Future<List<ServiceRequest>> getRequests({pageItemNumber, ServiceRequestSearch? search}) async { Future<List<ServiceRequest>> getRequests({pageItemNumber, ServiceRequestSearch? search}) async {
print("get requests xx");
final user = UserApiClient().user; final user = UserApiClient().user;
final response = await ApiClient().getJsonForResponse( print("user name : ${user?.username}");
'${URLs.host1}${URLs.getServiceRequests}', print("user id : ${user?.id}");
headers: {"Content-Type": "application/json; charset=utf-8"}, final response = await ApiClient().postJsonForResponse(
'${URLs.host1}${URLs.getCallRequests}',
{
// "pageSize": (serviceRequests.length) ~/ pageItemNumber,
"pageNumber": pageItemNumber,
// "callId": "string",
// "requestedDateSymbol": {
// "id": 0,
// "name": "string",
// "value": 0
// },
// "requestedDateFrom": "2023-04-18T08:29:50.708Z",
// "requestedDateTo": "2023-04-18T08:29:50.708Z",
// "firstActionSymbol": {
// "id": 0,
// "name": "string",
// "value": 0
// },
// "firstActionFrom": "2023-04-18T08:29:50.708Z",
// "firstActionTo": "2023-04-18T08:29:50.708Z",
if (search?.hospital != null && (search?.hospital?.isNotEmpty ?? false)) "site": search?.hospital,
// "assetNo": "string",
if (search?.deviceSerialNumber != null && (search?.deviceSerialNumber?.isNotEmpty ?? false)) "assetSerialNumber": search?.deviceSerialNumber,
// "maintenanceSituation": {
// "id": 0,
// "name": "string",
// "value": 0
// },
// "status": {
// "id": 0,
// "name": "string",
// "value": 0
// },
"assignedEmployee": {
"id": user?.id,
"name": user?.username,
},
// "firstActionStatus": {
// "id": 0,
// "name": "string",
// "value": 0
// },
if (search?.deviceName != null && (search?.deviceName?.isNotEmpty ?? false)) "assetName": search?.deviceName,
// "manufacturer": "string",
if (search?.model != null && (search?.model?.isNotEmpty ?? false)) "modelDefinition": search?.model,
// "typeOfrequest": {
// "id": 0,
// "name": "string",
// "value": 0
// },
// "priority": {
// "id": 0,
// "name": "string",
// "value": 0
// }
},
// queryParameters: { // queryParameters: {
// 'uid': user?.id, // // 'uid': user?.id,
// if (user?.hospital?.id != null) 'client_nid': user?.hospital?.id, // if (user?.hospital?.id != null) 'client_nid': user?.hospital?.id,
// 'token': user?.token, // 'token': user?.token,
// 'page': '${(serviceRequests.length) ~/ pageItemNumber}', // 'page': '${(serviceRequests.length) ~/ pageItemNumber}',
// if (search != null) ...search.queryParameters(), // // if (deviceSerialNumber != null && (deviceSerialNumber?.isNotEmpty ?? false)) 'sn_id': deviceSerialNumber,
// if (statusValue != null) 'status': statusValue?.toString(),
// // if (deviceName != null && (deviceName?.isNotEmpty ?? false)) 'equipment_en_name': deviceName,
// // if (hospital != null && (hospital?.isNotEmpty ?? false)) 'client': hospital,
// // if (model != null && (model?.isNotEmpty ?? false)) 'model': model,
// // if (search != null) ...search.queryParameters(),
// }, // },
); );
List requestsListJson = json.decode(utf8.decode(response.bodyBytes)); print(response.body);
List requestsListJson = json.decode(response.body)['data'];
List<ServiceRequest> serviceRequestsPage = requestsListJson.map((request) => ServiceRequest.fromJson(request)).toList(); List<ServiceRequest> serviceRequestsPage = requestsListJson.map((request) => ServiceRequest.fromJson(request)).toList();
serviceRequests.addAll(serviceRequestsPage); serviceRequests.addAll(serviceRequestsPage);
return serviceRequestsPage; return serviceRequestsPage;
} }
Future<ServiceRequest> getServiceById(String? requestId) async { Future<ServiceRequest> getServiceById(String? requestId) async {
print("get service by id");
final user = UserApiClient().user; final user = UserApiClient().user;
final response = await ApiClient().getJsonForResponse( final response = await ApiClient().getJsonForResponse(
'${URLs.host1}${URLs.getSingleServiceRequest}', '${URLs.host1}${URLs.getSingleServiceRequest}',
@ -76,6 +173,7 @@ class ServiceRequestApiClient {
} }
Future createIssueReport(Issue issue) async { Future createIssueReport(Issue issue) async {
print("Create Issue Report");
final user = UserApiClient().user; final user = UserApiClient().user;
Map<String, String> body = issue.toMap(); Map<String, String> body = issue.toMap();
body["uid"] = user?.id ?? ""; body["uid"] = user?.id ?? "";
@ -84,6 +182,7 @@ class ServiceRequestApiClient {
} }
Future updateDate({String? newDate, Lookup? employee, ServiceRequest? request}) async { Future updateDate({String? newDate, Lookup? employee, ServiceRequest? request}) async {
print("Update Date");
final user = UserApiClient().user; final user = UserApiClient().user;
Map<String, String> body = {}; Map<String, String> body = {};
body["uid"] = user?.id ?? ''; body["uid"] = user?.id ?? '';
@ -96,6 +195,7 @@ class ServiceRequestApiClient {
} }
Future createServiceReport({required ServiceReport? report, required ServiceRequest? request}) async { Future createServiceReport({required ServiceReport? report, required ServiceRequest? request}) async {
print("Create Service Report");
final user = UserApiClient().user; final user = UserApiClient().user;
Map<String, String>? body = report?.toMap(); Map<String, String>? body = report?.toMap();
body?["uid"] = user?.id ?? ""; body?["uid"] = user?.id ?? "";
@ -105,6 +205,7 @@ class ServiceRequestApiClient {
} }
Future createDuplicatedReport({required ServiceRequest request}) async { Future createDuplicatedReport({required ServiceRequest request}) async {
print("Create Duplicated Report");
final user = UserApiClient().user; final user = UserApiClient().user;
await ApiClient().getJsonForResponse( await ApiClient().getJsonForResponse(
'${URLs.host1}${URLs.createDuplicatedReport}', '${URLs.host1}${URLs.createDuplicatedReport}',
@ -113,6 +214,7 @@ class ServiceRequestApiClient {
} }
Future updateServiceReport({required ServiceReport report, required ServiceRequest request}) async { Future updateServiceReport({required ServiceReport report, required ServiceRequest request}) async {
print("Update Service Report");
final user = UserApiClient().user; final user = UserApiClient().user;
Map<String, String> body = report.toMap(); Map<String, String> body = report.toMap();
body["uid"] = user?.id ?? ""; body["uid"] = user?.id ?? "";
@ -123,6 +225,7 @@ class ServiceRequestApiClient {
} }
Future updateServiceReportTimer({required TimerModel timer, required ServiceRequest request}) async { Future updateServiceReportTimer({required TimerModel timer, required ServiceRequest request}) async {
print("Update Service Report Timer");
final user = UserApiClient().user; final user = UserApiClient().user;
Map<String, String> body = {}; Map<String, String> body = {};
body["uid"] = user?.id ?? ""; body["uid"] = user?.id ?? "";
@ -136,6 +239,7 @@ class ServiceRequestApiClient {
} }
Future<ServiceReport> getSingleServiceReport({required String reportId}) async { Future<ServiceReport> getSingleServiceReport({required String reportId}) async {
print("Get Single Service Report");
final user = UserApiClient().user; final user = UserApiClient().user;
final response = await ApiClient().getJsonForResponse( final response = await ApiClient().getJsonForResponse(
'${URLs.host1}${URLs.getServiceReport}', '${URLs.host1}${URLs.getServiceReport}',

@ -18,30 +18,57 @@ class VisitsApiClient {
VisitsApiClient._internal(); VisitsApiClient._internal();
factory VisitsApiClient() => _instance; factory VisitsApiClient() => _instance;
// 333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
Future getVisits({required int pageItemNumber, VisitsSearch? visitsSearch}) async { Future getVisits({required int pageItemNumber, VisitsSearch? visitsSearch}) async {
final response = await ApiClient().getJsonForResponse( print("get visits");
'${URLs.host1}${URLs.getRegularVisits}', final response = await ApiClient().postJsonForResponse(
headers: {"Content-Type": "application/json; charset=utf-8"}, '${URLs.host1}${URLs.getRegularVisits}',
queryParameters: { // headers: {"Content-Type": "application/json; charset=utf-8"},
'uid': UserApiClient().user?.id, {
'token': UserApiClient().user?.token, // "pageSize": 0,
'page': '${(visits.length) ~/ pageItemNumber}', "pageNumber": pageItemNumber,
if (visitsSearch != null) ...visitsSearch.queryParameters(), // "id": 0,
}, // "assetId": 0,
); "modelId": visitsSearch?.model,
List requestsListJson = json.decode(utf8.decode(response.bodyBytes).replaceAll("\\", "")); // "ppmId": 0,
// "ppmScheduleId": 0,
// "classification": 0,
// "visitStatusId": 0,
// "deviceStatusId": 0,
// "groupLeaderReviewId": 0,
// "assignedEmployeeId": "string",
"assignedToId": visitsSearch?.contactStatus,
"expectedDateFrom": visitsSearch?.expectedDateFrom,
"expectedDateTo": visitsSearch?.expectedDateTo,
"actualDateFrom": visitsSearch?.actualDateFrom,
"actualDateTo": visitsSearch?.actualDateTo,
// "siteId": 0,
// "jobSheetNo": "string",
// "typeOfServiceId": 0,
// "planNumber": 0
}
// queryParameters: {
// 'uid': UserApiClient().user?.id,
// 'token': UserApiClient().user?.token,
// 'page': '${(visits.length) ~/ pageItemNumber}',
// if (visitsSearch != null) ...visitsSearch.queryParameters(),
// },
);
// print(json.decode(utf8.decode(response.bodyBytes).replaceAll("\\", "")));
List requestsListJson = json.decode(response.body)['data'];
List<Visit> visitsList = requestsListJson.map((request) => Visit.fromJson(request)).toList(); List<Visit> visitsList = requestsListJson.map((request) => Visit.fromJson(request)).toList();
visits.addAll(visitsList); visits.addAll(visitsList);
} }
// 4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
Future updateGroupOfVisits({required VisitsGroup group}) async { Future updateGroupOfVisits({required VisitsGroup group}) async {
final user = UserApiClient().user; final user = UserApiClient().user;
Map<String, String> body = group.toJson(); Map<String, dynamic> body = {};
body["token"] = user?.token ?? ""; // body["token"] = user?.token ?? "";
body["uid"] = user?.id ?? ""; body['ids'] = [...(group.visits?.map((e) => e.id).toList() ?? [])];
body["assignedEmployeeId"] = user?.id ?? "";
//userId = 397.toString(); // testing id to view data //userId = 397.toString(); // testing id to view data
await ApiClient().postJsonForResponse('${URLs.host1}${URLs.updateRegularVisits}', body); await ApiClient().putJsonForResponse('${URLs.host1}${URLs.updateRegularVisits}', body);
} }
Future<Pentry> getPentry(String id) async { Future<Pentry> getPentry(String id) async {
@ -59,6 +86,6 @@ class VisitsApiClient {
body?["uid"] = user?.id ?? ""; body?["uid"] = user?.id ?? "";
body?["token"] = user?.token ?? ""; body?["token"] = user?.token ?? "";
await ApiClient().postJsonForResponse('${URLs.host1}${URLs.updatePentry}/${visit?.id}', body); await ApiClient().postJsonForResponse('${URLs.host1}${URLs.updatePentry}/${visit?.id}', body);
visit?.status = pentry?.ppmVisitStatus; // visit?.status = pentry?.ppmVisitStatus;
} }
} }

@ -1,8 +1,7 @@
class URLs{ class URLs {
URLs._(); URLs._();
static const host2 = "http://194.163.164.213/atoms/api"; static const host2 = "http://194.163.164.213/atoms/api";
// static const host1 = "https://atoms.hmg.com/api"; // production url static const host1 = "https://atomsuat.hmg.com";
static const host1 = "https://atomsuat.hmg.com"; // uat url
// API Routes // API Routes
static const login = "/mobile/MobileAuth/Login"; // post static const login = "/mobile/MobileAuth/Login"; // post
@ -11,13 +10,13 @@ class URLs{
static const getHospitals = "/mobile/Customer/GetCustomers"; // get static const getHospitals = "/mobile/Customer/GetCustomers"; // get
static const getDepartments = "/mobile/Department/search"; // get static const getDepartments = "/mobile/Department/search"; // get
static const getEquipment = "/mobile/Asset/GetAssets"; // get ?client=208051 static const getEquipment = "/mobile/Asset/GetAssets"; // get ?client=208051
static const getServiceRequests = "/return/user/calls"; // get static const getCallRequests = "/mobile/CallRequest/GetCallRequests"; // get
static const getPreventiveMaintenanceVisits = "/return/user/calibrations"; // get static const getPreventiveMaintenanceVisits = "/return/user/calibrations"; // get
static const updatePreventiveMaintenanceVisits = "/update/user/calibrations"; // get static const updatePreventiveMaintenanceVisits = "/update/user/calibrations"; // get
static const getRegularVisits = "/return/user/ppm"; // get static const getRegularVisits = "/mobile/Visit/GetVisits"; // get
static const updateRegularVisits = "/update/user/ppm"; // get static const updateRegularVisits = "/mobile/Visit/UpdateVisits"; // get
static const getSingleServiceRequest = "/return/call/information"; // get static const getSingleServiceRequest = "/return/call/information"; // get
static const getNotifications = "/return/user/notification"; // get static const getNotifications = "/return/user/notification"; // get
@ -48,7 +47,7 @@ class URLs{
static const requestGasRefill = "/mobile/GazRefill/AddGazRefill"; // get static const requestGasRefill = "/mobile/GazRefill/AddGazRefill"; // get
static const updateGasRefill = "/mobile/GazRefill/UpdateGazRefill"; // get static const updateGasRefill = "/mobile/GazRefill/UpdateGazRefill"; // get
static const getGasRefill = "/mobile/GazRefill/GetGazRefills"; // get static const getGasRefill = "/mobile/GazRefill/GetGazRefills"; // get
static const generateGazRefillNo= "/mobile/GazRefill/GenerateGazRefillNumber"; static const generateGazRefillNo = "/mobile/GazRefill/GenerateGazRefillNumber";
//device transfer //device transfer
static const requestDeviceTransfer = "/mobile/AssetTransfer/AddAssetTransfer"; // get static const requestDeviceTransfer = "/mobile/AssetTransfer/AddAssetTransfer"; // get
@ -65,5 +64,4 @@ class URLs{
static const getPentryStatus = "/return/pentry/status/list"; // get static const getPentryStatus = "/return/pentry/status/list"; // get
// contacts // contacts
static const getPentryContacts = "/handle/return/all/contacts"; // get static const getPentryContacts = "/handle/return/all/contacts"; // get
}
}

@ -1,69 +1,433 @@
import '../lookup.dart';
class Visit { class Visit {
String? id; int? id;
String? serialNumber; int? visitNo;
String? expectDate; String? visitCode;
int? ppmId;
int? planNo;
String? planCode;
int? ppmScheduleId;
int? ppmScheduleNo;
String? ppmScheduleCode;
int? assetId;
String? assetName;
String? assetSerialNo;
String? assetNumber;
String? warrantyEndDate;
int? modelId;
String? modelName;
int? manufacturerId;
String? manufacturerName;
int? siteId;
String? siteName;
int? assignedToId;
String? assignedToName;
String? jobSheetNo;
String? assignedEmployeeId;
String? assignedEmployeeName;
String? expectedDate;
String? actualDate; String? actualDate;
String? hospitalId; String? nextDate;
String? hospitalName; String? forwardToId;
String? deviceId; String? forwardToName;
String? deviceSerialNumber; int? maintenanceContractId;
String? deviceArabicName; String? contractNumber;
String? deviceEnglishName; int? typeOfServiceId;
String? employId; String? typeOfServiceName;
String? employName; int? executionTimeFrameId;
String? modelAndBrand; String? executionTimeFrameName;
String? contactStatus; String? externalEngineer;
Lookup? status; String? telephone;
String? assignTo; int? groupLeaderReviewId;
String? deviceNumber; String? groupLeaderReviewName;
List<String>? images; int? timePeriodId;
String? timePeriodName;
Visit({ List<VCalibrationTools>? vCalibrationTools;
this.id, List<VKits>? vKits;
this.serialNumber, List<VContacts>? vContacts;
this.hospitalId, List<VChecklists>? vChecklists;
this.hospitalName, List<String>? vAttachments;
this.deviceId, int? visitStatusId;
this.deviceSerialNumber, String? visitStatusName;
this.deviceArabicName, String? startDate;
this.deviceEnglishName, String? endDate;
this.employId, String? workingHours;
this.employName, String? travelingHours;
this.expectDate, int? deviceStatusId;
this.actualDate, String? deviceStatusName;
this.status, String? comments;
this.modelAndBrand, String? workPerformed;
this.contactStatus, int? supplierId;
this.images, String? supplierName;
this.assignTo, int? ppmSupplierId;
this.deviceNumber, String? ppmSupplierName;
}); String? createdOn;
String? modifiedOn;
factory Visit.fromJson(Map<String, dynamic> parsedJson) { int? taskStatusId;
return Visit( String? taskStatusName;
id: parsedJson["nid"],
serialNumber: parsedJson["title"], Visit(
hospitalId: parsedJson["client"], {this.id,
deviceNumber: parsedJson["device_no"], this.visitNo,
hospitalName: parsedJson["client_name"], this.visitCode,
deviceId: parsedJson["medical_equipment_nid"], this.ppmId,
deviceSerialNumber: parsedJson["medical_equipment"], this.planNo,
deviceEnglishName: parsedJson["equipment_english_name"], this.planCode,
deviceArabicName: parsedJson["equipment_arabic_name"], this.ppmScheduleId,
employId: parsedJson["assigned_employee"], this.ppmScheduleNo,
employName: parsedJson["assigned_employee_name"], this.ppmScheduleCode,
expectDate: parsedJson["expected_date"], this.assetId,
actualDate: parsedJson["actual_date"], this.assetName,
modelAndBrand: parsedJson["mode_brand"], this.assetSerialNo,
contactStatus: parsedJson["contactStatus"], this.assetNumber,
images: List<String>.from(parsedJson["images"] ?? []), this.warrantyEndDate,
status: Lookup( this.modelId,
id: int.tryParse(parsedJson["status"] ?? "-1") ?? -1, // actual value (0,1,2) this.modelName,
label: parsedJson["status_value"] // text value this.manufacturerId,
), this.manufacturerName,
assignTo: parsedJson["assigned_to"], this.siteId,
); this.siteName,
this.assignedToId,
this.assignedToName,
this.jobSheetNo,
this.assignedEmployeeId,
this.assignedEmployeeName,
this.expectedDate,
this.actualDate,
this.nextDate,
this.forwardToId,
this.forwardToName,
this.maintenanceContractId,
this.contractNumber,
this.typeOfServiceId,
this.typeOfServiceName,
this.executionTimeFrameId,
this.executionTimeFrameName,
this.externalEngineer,
this.telephone,
this.groupLeaderReviewId,
this.groupLeaderReviewName,
this.timePeriodId,
this.timePeriodName,
this.vCalibrationTools,
this.vKits,
this.vContacts,
this.vChecklists,
this.vAttachments,
this.visitStatusId,
this.visitStatusName,
this.startDate,
this.endDate,
this.workingHours,
this.travelingHours,
this.deviceStatusId,
this.deviceStatusName,
this.comments,
this.workPerformed,
this.supplierId,
this.supplierName,
this.ppmSupplierId,
this.ppmSupplierName,
this.createdOn,
this.modifiedOn,
this.taskStatusId,
this.taskStatusName});
Visit.fromJson(Map<String, dynamic> json) {
id = json['id'];
visitNo = json['visitNo'];
visitCode = json['visitCode'];
ppmId = json['ppmId'];
planNo = json['planNo'];
planCode = json['planCode'];
ppmScheduleId = json['ppmScheduleId'];
ppmScheduleNo = json['ppmScheduleNo'];
ppmScheduleCode = json['ppmScheduleCode'];
assetId = json['assetId'];
assetName = json['assetName'];
assetSerialNo = json['assetSerialNo'];
assetNumber = json['assetNumber'];
warrantyEndDate = json['warrantyEndDate'];
modelId = json['modelId'];
modelName = json['modelName'];
manufacturerId = json['manufacturerId'];
manufacturerName = json['manufacturerName'];
siteId = json['siteId'];
siteName = json['siteName'];
assignedToId = json['assignedToId'];
assignedToName = json['assignedToName'];
jobSheetNo = json['jobSheetNo'];
assignedEmployeeId = json['assignedEmployeeId'];
assignedEmployeeName = json['assignedEmployeeName'];
expectedDate = json['expectedDate'];
actualDate = json['actualDate'];
nextDate = json['nextDate'];
forwardToId = json['forwardToId'];
forwardToName = json['forwardToName'];
maintenanceContractId = json['maintenanceContractId'];
contractNumber = json['contractNumber'];
typeOfServiceId = json['typeOfServiceId'];
typeOfServiceName = json['typeOfServiceName'];
executionTimeFrameId = json['executionTimeFrameId'];
executionTimeFrameName = json['executionTimeFrameName'];
externalEngineer = json['externalEngineer'];
telephone = json['telephone'];
groupLeaderReviewId = json['groupLeaderReviewId'];
groupLeaderReviewName = json['groupLeaderReviewName'];
timePeriodId = json['timePeriodId'];
timePeriodName = json['timePeriodName'];
if (json['vCalibrationTools'] != null) {
vCalibrationTools = <VCalibrationTools>[];
json['vCalibrationTools'].forEach((v) {
vCalibrationTools!.add(VCalibrationTools.fromJson(v));
});
}
if (json['vKits'] != null) {
vKits = <VKits>[];
json['vKits'].forEach((v) {
vKits!.add(VKits.fromJson(v));
});
}
if (json['vContacts'] != null) {
vContacts = <VContacts>[];
json['vContacts'].forEach((v) {
vContacts!.add(VContacts.fromJson(v));
});
}
if (json['vChecklists'] != null) {
vChecklists = <VChecklists>[];
json['vChecklists'].forEach((v) {
vChecklists!.add(VChecklists.fromJson(v));
});
}
vAttachments = json['vAttachments'].cast<String>();
visitStatusId = json['visitStatusId'];
visitStatusName = json['visitStatusName'];
startDate = json['startDate'];
endDate = json['endDate'];
workingHours = json['workingHours'];
travelingHours = json['travelingHours'];
deviceStatusId = json['deviceStatusId'];
deviceStatusName = json['deviceStatusName'];
comments = json['comments'];
workPerformed = json['workPerformed'];
supplierId = json['supplierId'];
supplierName = json['supplierName'];
ppmSupplierId = json['ppmSupplierId'];
ppmSupplierName = json['ppmSupplierName'];
createdOn = json['createdOn'];
modifiedOn = json['modifiedOn'];
taskStatusId = json['taskStatusId'];
taskStatusName = json['taskStatusName'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['visitNo'] = visitNo;
data['visitCode'] = visitCode;
data['ppmId'] = ppmId;
data['planNo'] = planNo;
data['planCode'] = planCode;
data['ppmScheduleId'] = ppmScheduleId;
data['ppmScheduleNo'] = ppmScheduleNo;
data['ppmScheduleCode'] = ppmScheduleCode;
data['assetId'] = assetId;
data['assetName'] = assetName;
data['assetSerialNo'] = assetSerialNo;
data['assetNumber'] = assetNumber;
data['warrantyEndDate'] = warrantyEndDate;
data['modelId'] = modelId;
data['modelName'] = modelName;
data['manufacturerId'] = manufacturerId;
data['manufacturerName'] = manufacturerName;
data['siteId'] = siteId;
data['siteName'] = siteName;
data['assignedToId'] = assignedToId;
data['assignedToName'] = assignedToName;
data['jobSheetNo'] = jobSheetNo;
data['assignedEmployeeId'] = assignedEmployeeId;
data['assignedEmployeeName'] = assignedEmployeeName;
data['expectedDate'] = expectedDate;
data['actualDate'] = actualDate;
data['nextDate'] = nextDate;
data['forwardToId'] = forwardToId;
data['forwardToName'] = forwardToName;
data['maintenanceContractId'] = maintenanceContractId;
data['contractNumber'] = contractNumber;
data['typeOfServiceId'] = typeOfServiceId;
data['typeOfServiceName'] = typeOfServiceName;
data['executionTimeFrameId'] = executionTimeFrameId;
data['executionTimeFrameName'] = executionTimeFrameName;
data['externalEngineer'] = externalEngineer;
data['telephone'] = telephone;
data['groupLeaderReviewId'] = groupLeaderReviewId;
data['groupLeaderReviewName'] = groupLeaderReviewName;
data['timePeriodId'] = timePeriodId;
data['timePeriodName'] = timePeriodName;
if (vCalibrationTools != null) {
data['vCalibrationTools'] = vCalibrationTools!.map((v) => v.toJson()).toList();
}
if (vKits != null) {
data['vKits'] = vKits!.map((v) => v.toJson()).toList();
}
if (vContacts != null) {
data['vContacts'] = vContacts!.map((v) => v.toJson()).toList();
}
if (vChecklists != null) {
data['vChecklists'] = vChecklists!.map((v) => v.toJson()).toList();
}
data['vAttachments'] = vAttachments;
data['visitStatusId'] = visitStatusId;
data['visitStatusName'] = visitStatusName;
data['startDate'] = startDate;
data['endDate'] = endDate;
data['workingHours'] = workingHours;
data['travelingHours'] = travelingHours;
data['deviceStatusId'] = deviceStatusId;
data['deviceStatusName'] = deviceStatusName;
data['comments'] = comments;
data['workPerformed'] = workPerformed;
data['supplierId'] = supplierId;
data['supplierName'] = supplierName;
data['ppmSupplierId'] = ppmSupplierId;
data['ppmSupplierName'] = ppmSupplierName;
data['createdOn'] = createdOn;
data['modifiedOn'] = modifiedOn;
data['taskStatusId'] = taskStatusId;
data['taskStatusName'] = taskStatusName;
return data;
}
}
class VCalibrationTools {
int? id;
int? visitId;
int? assetId;
String? assetSerialNo;
String? calibrationDateOfTesters;
VCalibrationTools({this.id, this.visitId, this.assetId, this.assetSerialNo, this.calibrationDateOfTesters});
VCalibrationTools.fromJson(Map<String, dynamic> json) {
id = json['id'];
visitId = json['visitId'];
assetId = json['assetId'];
assetSerialNo = json['assetSerialNo'];
calibrationDateOfTesters = json['calibrationDateOfTesters'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['visitId'] = visitId;
data['assetId'] = assetId;
data['assetSerialNo'] = assetSerialNo;
data['calibrationDateOfTesters'] = calibrationDateOfTesters;
return data;
}
}
class VKits {
int? id;
int? visitId;
int? partCatalogItemId;
String? partNumber;
String? oracleCode;
String? partName;
String? partName2;
VKits({this.id, this.visitId, this.partCatalogItemId, this.partNumber, this.oracleCode, this.partName, this.partName2});
VKits.fromJson(Map<String, dynamic> json) {
id = json['id'];
visitId = json['visitId'];
partCatalogItemId = json['partCatalogItemId'];
partNumber = json['partNumber'];
oracleCode = json['oracleCode'];
partName = json['partName'];
partName2 = json['partName2'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['visitId'] = visitId;
data['partCatalogItemId'] = partCatalogItemId;
data['partNumber'] = partNumber;
data['oracleCode'] = oracleCode;
data['partName'] = partName;
data['partName2'] = partName2;
return data;
}
}
class VContacts {
int? id;
int? visitId;
String? title;
String? person;
String? job;
String? email;
String? telephone;
String? landLine;
VContacts({this.id, this.visitId, this.title, this.person, this.job, this.email, this.telephone, this.landLine});
VContacts.fromJson(Map<String, dynamic> json) {
id = json['id'];
visitId = json['visitId'];
title = json['title'];
person = json['person'];
job = json['job'];
email = json['email'];
telephone = json['telephone'];
landLine = json['landLine'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['visitId'] = visitId;
data['title'] = title;
data['person'] = person;
data['job'] = job;
data['email'] = email;
data['telephone'] = telephone;
data['landLine'] = landLine;
return data;
}
}
class VChecklists {
int? id;
int? visitId;
String? task;
int? taskStatusId;
String? taskStatusName;
String? taskComment;
String? measuredValue;
VChecklists({this.id, this.visitId, this.task, this.taskStatusId, this.taskStatusName, this.taskComment, this.measuredValue});
VChecklists.fromJson(Map<String, dynamic> json) {
id = json['id'];
visitId = json['visitId'];
task = json['task'];
taskStatusId = json['taskStatusId'];
taskStatusName = json['taskStatusName'];
taskComment = json['taskComment'];
measuredValue = json['measuredValue'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['visitId'] = visitId;
data['task'] = task;
data['taskStatusId'] = taskStatusId;
data['taskStatusName'] = taskStatusName;
data['taskComment'] = taskComment;
data['measuredValue'] = measuredValue;
return data;
} }
} }

@ -30,7 +30,7 @@ class _FutureEditPentryState extends State<FutureEditPentry> {
Subtitle subtitle = AppLocalization.of(context)!.subtitle!; Subtitle subtitle = AppLocalization.of(context)!.subtitle!;
return Scaffold( return Scaffold(
body: FutureBuilder<Pentry?>( body: FutureBuilder<Pentry?>(
future: RegularVisitsProvider().getPently(id: widget.visit.id), future: RegularVisitsProvider().getPently(id: widget.visit.id.toString()),
builder: (BuildContext context, AsyncSnapshot<Pentry?> snapshot) { builder: (BuildContext context, AsyncSnapshot<Pentry?> snapshot) {
if (snapshot.hasError) { if (snapshot.hasError) {
return FailedLoading( return FailedLoading(

@ -226,7 +226,7 @@ class _UpdateVisitsGroupSheetState extends State<UpdateVisitsGroupSheet> {
children: [ children: [
Expanded( Expanded(
child: Text( child: Text(
"${_subtitle.sn}: ${visit.deviceSerialNumber ?? _subtitle.noSerialNumberFound}", "${_subtitle.sn}: ${visit.assetSerialNo ?? _subtitle.noSerialNumberFound}",
style: Theme.of(context).textTheme.headline6?.copyWith(color: AColors.white, fontSize: 16, fontWeight: FontWeight.bold), style: Theme.of(context).textTheme.headline6?.copyWith(color: AColors.white, fontSize: 16, fontWeight: FontWeight.bold),
), ),
), ),

@ -9,8 +9,6 @@ import '../../../app_style/colors.dart';
import '../../../app_style/sizing.dart'; import '../../../app_style/sizing.dart';
import '../../../widgets/buttons/app_back_button.dart'; import '../../../widgets/buttons/app_back_button.dart';
import '../../../widgets/buttons/app_icon_button.dart'; import '../../../widgets/buttons/app_icon_button.dart';
import '../../../widgets/images/images_list.dart';
import '../../../widgets/loaders/image_loader.dart';
import '../../../widgets/requests/info_row.dart'; import '../../../widgets/requests/info_row.dart';
import '../../../widgets/visits/visit_status.dart'; import '../../../widgets/visits/visit_status.dart';
import 'pantry/future_edit_pently.dart'; import 'pantry/future_edit_pently.dart';
@ -68,57 +66,57 @@ class VisitDetailsPage extends StatelessWidget {
SizedBox( SizedBox(
height: 8, height: 8,
), ),
MaterialButton( // MaterialButton(
padding: EdgeInsets.zero, // padding: EdgeInsets.zero,
onPressed: () { // onPressed: () {
Navigator.of(context).push(MaterialPageRoute( // Navigator.of(context).push(MaterialPageRoute(
builder: (_) => Scaffold( // builder: (_) => Scaffold(
body: InteractiveViewer( // body: InteractiveViewer(
child: Center( // child: Center(
child: ImageLoader( // child: ImageLoader(
url: visit.images?.first, // url: visit.images?.first,
boxFit: BoxFit.contain, // boxFit: BoxFit.contain,
), // ),
), // ),
), // ),
))); // )));
}, // },
child: SizedBox( // child: SizedBox(
height: 140 * AppStyle.getScaleFactor(context), // height: 140 * AppStyle.getScaleFactor(context),
width: MediaQuery.of(context).size.width, // width: MediaQuery.of(context).size.width,
child: ImageLoader( // child: ImageLoader(
url: (visit.images?.isEmpty ?? false) ? " " : visit.images?.first, // url: (visit.images?.isEmpty ?? false) ? " " : visit.images?.first,
boxFit: BoxFit.cover, // boxFit: BoxFit.cover,
), // ),
), // ),
), // ),
SizedBox( SizedBox(
height: 8, height: 8,
), ),
SizedBox( // SizedBox(
height: 60 * AppStyle.getScaleFactor(context), // height: 60 * AppStyle.getScaleFactor(context),
child: ImagesList( // child: ImagesList(
images: visit.images!, // images: visit.images!,
), // ),
), // ),
SizedBox( SizedBox(
height: 8, height: 8,
), ),
RequestInfoRow( RequestInfoRow(
title: subtitle.code, title: subtitle.code,
info: visit.serialNumber, info: visit.assetSerialNo,
), ),
RequestInfoRow( RequestInfoRow(
title: "Asset Number", title: "Asset Number",
info: visit.deviceNumber, info: visit.deviceStatusName,
), ),
RequestInfoRow( RequestInfoRow(
title: subtitle.deviceSN, title: subtitle.deviceSN,
info: visit.deviceSerialNumber, info: visit.assetSerialNo,
), ),
RequestInfoRow( RequestInfoRow(
title: subtitle.expectDate, title: subtitle.expectDate,
info: visit.expectDate, info: visit.expectedDate,
), ),
RequestInfoRow( RequestInfoRow(
title: subtitle.actualDate, title: subtitle.actualDate,
@ -143,23 +141,23 @@ class VisitDetailsPage extends StatelessWidget {
), ),
RequestInfoRow( RequestInfoRow(
title: subtitle.contactStatus, title: subtitle.contactStatus,
info: visit.assignTo, info: visit.assignedToName,
), ),
RequestInfoRow( RequestInfoRow(
title: subtitle.engineerName, title: subtitle.engineerName,
info: visit.employName, info: visit.assignedEmployeeName,
), ),
RequestInfoRow( RequestInfoRow(
title: subtitle.hospital, title: subtitle.hospital,
content: visit.hospitalName, content: visit.assetName,
), ),
RequestInfoRow( RequestInfoRow(
title: subtitle.deviceArName, title: subtitle.deviceArName,
content: visit.deviceArabicName, content: visit.assetName,
), ),
RequestInfoRow( RequestInfoRow(
title: subtitle.deviceEnName, title: subtitle.deviceEnName,
content: visit.deviceEnglishName, content: visit.assetName,
), ),
], ],
), ),

@ -61,7 +61,7 @@ class VisitItem extends StatelessWidget {
children: [ children: [
Expanded( Expanded(
child: Text( child: Text(
"S.N: ${visit.deviceSerialNumber ?? "No serial number"}", "S.N: ${visit.assetSerialNo ?? "No serial number"}",
style: Theme.of(context).textTheme.titleLarge?.copyWith(color: onItemColor, fontSize: 16, fontWeight: FontWeight.bold), style: Theme.of(context).textTheme.titleLarge?.copyWith(color: onItemColor, fontSize: 16, fontWeight: FontWeight.bold),
), ),
), ),
@ -93,7 +93,7 @@ class VisitItem extends StatelessWidget {
children: [ children: [
Expanded( Expanded(
child: Text( child: Text(
visit.hospitalName ?? "No client found", visit.assetSerialNo ?? "No client found",
style: Theme.of(context).textTheme.titleMedium?.copyWith( style: Theme.of(context).textTheme.titleMedium?.copyWith(
color: onItemColor, color: onItemColor,
fontSize: 14, fontSize: 14,
@ -103,7 +103,7 @@ class VisitItem extends StatelessWidget {
], ],
), ),
Text( Text(
visit.modelAndBrand ?? "", visit.modelName ?? "",
style: Theme.of(context).textTheme.titleMedium?.copyWith( style: Theme.of(context).textTheme.titleMedium?.copyWith(
color: onItemColor, color: onItemColor,
fontSize: 14, fontSize: 14,
@ -116,12 +116,12 @@ class VisitItem extends StatelessWidget {
children: [ children: [
Expanded( Expanded(
child: Text( child: Text(
visit.employName ?? "No employ found", visit.assignedEmployeeName ?? "No employ found",
style: Theme.of(context).textTheme.titleLarge?.copyWith(color: onItemColor, fontSize: 14, fontWeight: FontWeight.bold), style: Theme.of(context).textTheme.titleLarge?.copyWith(color: onItemColor, fontSize: 14, fontWeight: FontWeight.bold),
), ),
), ),
Text( Text(
visit.contactStatus ?? "", visit.deviceStatusName ?? "",
style: Theme.of(context).textTheme.titleMedium?.copyWith( style: Theme.of(context).textTheme.titleMedium?.copyWith(
color: onItemColor, color: onItemColor,
fontSize: 14, fontSize: 14,
@ -146,7 +146,7 @@ class VisitItem extends StatelessWidget {
), ),
), ),
Text( Text(
visit.expectDate ?? subtitle?.noDateFound ?? '', visit.expectedDate ?? subtitle?.noDateFound ?? '',
style: Theme.of(context).textTheme.titleLarge?.copyWith( style: Theme.of(context).textTheme.titleLarge?.copyWith(
color: onItemColor, color: onItemColor,
fontSize: 14, fontSize: 14,

@ -10,7 +10,7 @@ class VisitStatusLabel extends StatelessWidget {
const VisitStatusLabel({Key? key, required this.visit}) : super(key: key); const VisitStatusLabel({Key? key, required this.visit}) : super(key: key);
Color getStatusColor() { Color getStatusColor() {
switch (visit.status?.id) { switch (visit.taskStatusId) {
case 0: case 0:
return AColors.green; return AColors.green;
case 1: case 1:
@ -33,7 +33,7 @@ class VisitStatusLabel extends StatelessWidget {
boxShadow: const [AppStyle.boxShadow], boxShadow: const [AppStyle.boxShadow],
), ),
child: Text( child: Text(
visit.status?.label == null || (visit.status?.label?.isEmpty ?? false) ? "no status" : visit.status?.label ?? "", visit.taskStatusName == null || (visit.taskStatusName?.isEmpty ?? false) ? "no status" : visit.taskStatusName ?? "",
style: Theme.of(context).textTheme.titleSmall?.copyWith( style: Theme.of(context).textTheme.titleSmall?.copyWith(
color: getStatusColor().computeLuminance() > 0.5 ? AColors.black : Colors.white, color: getStatusColor().computeLuminance() > 0.5 ? AColors.black : Colors.white,
), ),

Loading…
Cancel
Save