Merge branch 'zaid_development_new' into 'main_latest_merged'

Zaid development new

See merge request haroon6138/cloudsolutions-atoms!24
merge-requests/25/merge
Sikander Saleem 3 years ago
commit a9c54c9d7a

@ -1,4 +1,4 @@
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://atomsuat.hmg.com"; // uat url static const host1 = "https://atomsuat.hmg.com"; // uat url
@ -11,8 +11,7 @@ class URLs{
set host(String value) => _host = value; set host(String value) => _host = value;
static String getFileUrl(String file) => file == null || file.isEmpty static String getFileUrl(String file) => file == null || file.isEmpty ? null : "$_host/attachment/$file";
? null : "$_host/attachment/$file";
// API Routes // API Routes
static get login => "$_baseUrl/MobileAuth/Login"; // post static get login => "$_baseUrl/MobileAuth/Login"; // post
@ -39,7 +38,7 @@ class URLs{
static get getRecentNotifications => "$_baseUrl/return/user/recent/notification"; // get static get getRecentNotifications => "$_baseUrl/return/user/recent/notification"; // get
static get createRequest => "$_baseUrl/CallRequest/AddCallRequest"; // get static get createRequest => "$_baseUrl/CallRequest/AddCallRequest"; // get
static get createReport => "$_baseUrl/handle/create/report/issue"; // get static get createReport => "$_baseUrl/handle/create/report/issue"; // get
static get updateRequestDate => "$_baseUrl/handle/update/request"; // get static get updateRequestDate => "$_baseUrl/CallRequest/UpdateCallRequest"; // get
// service report // service report
static get createServiceReport => "$_baseUrl/WorkOrder/AddWorkOrder"; // get static get createServiceReport => "$_baseUrl/WorkOrder/AddWorkOrder"; // get
@ -47,7 +46,7 @@ class URLs{
static get getServiceReport => "$_baseUrl/WorkOrder/GetWorkOrderById"; // get static get getServiceReport => "$_baseUrl/WorkOrder/GetWorkOrderById"; // get
static get createDuplicatedReport => "$_baseUrl/handle/duplicate/request"; // get static get createDuplicatedReport => "$_baseUrl/handle/duplicate/request"; // get
static get getServiceReportReasons => "$_baseUrl/Lookups/GetLookup?lookupEnum=522"; // get static get getServiceReportReasons => "$_baseUrl/Lookups/GetLookup?lookupEnum=522"; // get
static get getServiceReportTypes => "$_baseUrl/Lookups/GetLookup?lookupEnum=501"; // get static get getServiceReportTypes => "$_baseUrl/Lookups/GetLookup?lookupEnum=501"; // get
static get getServiceReportStatus => "$_baseUrl/Lookups/GetLookup?lookupEnum=521"; // get static get getServiceReportStatus => "$_baseUrl/Lookups/GetLookup?lookupEnum=521"; // get
static get getServiceReportLastCalls => "$_baseUrl/Lookups/GetLookup?lookupEnum=520"; // get static get getServiceReportLastCalls => "$_baseUrl/Lookups/GetLookup?lookupEnum=520"; // get
@ -83,5 +82,4 @@ class URLs{
static get getPentryStatus => "$_baseUrl/Lookups/GetLookup?lookupEnum=401"; // get static get getPentryStatus => "$_baseUrl/Lookups/GetLookup?lookupEnum=401"; // get
// contacts // contacts
static get getPentryContacts => "$_baseUrl/handle/return/all/contacts"; // get static get getPentryContacts => "$_baseUrl/handle/return/all/contacts"; // get
} }

@ -9,13 +9,12 @@ import 'package:test_sa/models/visits/visit.dart';
import 'package:test_sa/models/visits/visits_group.dart'; import 'package:test_sa/models/visits/visits_group.dart';
import 'package:test_sa/models/visits/visits_search.dart'; import 'package:test_sa/models/visits/visits_search.dart';
class PreventiveMaintenanceVisitsProvider extends ChangeNotifier{ class PreventiveMaintenanceVisitsProvider extends ChangeNotifier {
// number of items call in each request // number of items call in each request
final pageItemNumber = 50; final pageItemNumber = 10;
//reset provider data //reset provider data
void reset(){ void reset() {
visits = null; visits = null;
nextPage = true; nextPage = true;
stateCode = null; stateCode = null;
@ -44,47 +43,37 @@ class PreventiveMaintenanceVisitsProvider extends ChangeNotifier{
/// return state code if request complete may be 200, 404 or 403 /// return state code if request complete may be 200, 404 or 403
/// for more details check http state manager /// for more details check http state manager
/// lib\controllers\http_status_manger\http_status_manger.dart /// lib\controllers\http_status_manger\http_status_manger.dart
Future<int> getVisits ({ Future<int> getVisits({
@required String host, @required String host,
@required User user, @required User user,
// VisitsSearch visitsSearch, // VisitsSearch visitsSearch,
}) async { }) async {
if(isLoading == true) if (isLoading == true) return -2;
return -2;
isLoading = true; isLoading = true;
Response response; Response response;
//userId = 397.toString(); // testing id to view data //userId = 397.toString(); // testing id to view data
try{ try {
response = await get( response = await get(
Uri.parse( Uri.parse(
host + URLs.getPreventiveMaintenanceVisits "${host + URLs.getPreventiveMaintenanceVisits}?uid=${user.id}&token=${user.token}&page=${(visits?.length ?? 0) ~/ pageItemNumber}${visitsSearch?.toMap()}",
+"?uid=${user.id}"
"&token=${user.token}"
"&page=${(visits?.length ?? 0) ~/pageItemNumber}"
// +visitsSearch?.toMap() ?? ""
), ),
headers: { headers: {"Content-Type": "application/json; charset=utf-8"});
"Content-Type":"application/json; charset=utf-8" } catch (error) {
}
);
} catch(error) {
isLoading = false; isLoading = false;
stateCode = -1; stateCode = -1;
notifyListeners(); notifyListeners();
return -1; return -1;
} }
stateCode = response.statusCode; stateCode = response.statusCode;
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
// client's request was successfully received // client's request was successfully received
List requestsListJson = json.decode(utf8.decode(response.bodyBytes)); List requestsListJson = json.decode(utf8.decode(response.bodyBytes));
List<Visit> _visits = requestsListJson.map( List<Visit> _visits = requestsListJson.map((request) => Visit.fromJson(request)).toList();
(request) => Visit.fromJson(request)).toList(); if (visits == null) visits = [];
if(visits == null)
visits = [];
visits.addAll(_visits); visits.addAll(_visits);
if(_visits.length == pageItemNumber){ if (_visits.length == pageItemNumber) {
nextPage = true; nextPage = true;
}else{ } else {
nextPage = false; nextPage = false;
} }
} }
@ -98,22 +87,21 @@ class PreventiveMaintenanceVisitsProvider extends ChangeNotifier{
/// return state code if request complete may be 200, 404 or 403 /// return state code if request complete may be 200, 404 or 403
/// for more details check http state manager /// for more details check http state manager
/// lib\controllers\http_status_manger\http_status_manger.dart /// lib\controllers\http_status_manger\http_status_manger.dart
Future<int> updateGroupOfVisits ({ Future<int> updateGroupOfVisits({
@required String host, @required String host,
@required User user, @required User user,
VisitsGroup group, VisitsGroup group,
}) async { }) async {
Response response; Response response;
Map<String,String> body = group.toJson(); Map<String, String> body = group.toJson();
// body["token"] = user.token ?? ""; // body["token"] = user.token ?? "";
// body["uid"] = user.id; // body["uid"] = user.id;
//userId = 397.toString(); // testing id to view data //userId = 397.toString(); // testing id to view data
try{ try {
response = await ApiManager.instance.put( response = await ApiManager.instance.put(URLs.updatePreventiveMaintenanceVisits, body: body);
URLs.updatePreventiveMaintenanceVisits, body: body);
stateCode = response.statusCode; stateCode = response.statusCode;
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
// client's request was successfully received // client's request was successfully received
// group.visits.forEach((visit) { // group.visits.forEach((visit) {
// visit.status = group.status; // visit.status = group.status;
@ -124,7 +112,7 @@ class PreventiveMaintenanceVisitsProvider extends ChangeNotifier{
} }
return response.statusCode; return response.statusCode;
} catch(error) { } catch (error) {
isLoading = false; isLoading = false;
stateCode = -1; stateCode = -1;
notifyListeners(); notifyListeners();

@ -14,13 +14,12 @@ import 'package:test_sa/models/subtitle.dart';
import 'package:test_sa/models/timer_model.dart'; import 'package:test_sa/models/timer_model.dart';
import 'package:test_sa/models/user.dart'; import 'package:test_sa/models/user.dart';
class ServiceRequestsProvider extends ChangeNotifier{ class ServiceRequestsProvider extends ChangeNotifier {
// number of items call in each request // number of items call in each request
final pageItemNumber = 50; final pageItemNumber = 10;
//reset provider data //reset provider data
void reset(){ void reset() {
serviceRequests = null; serviceRequests = null;
nextPage = true; nextPage = true;
stateCode = null; stateCode = null;
@ -49,20 +48,19 @@ class ServiceRequestsProvider extends ChangeNotifier{
/// return state code if request complete may be 200, 404 or 403 /// return state code if request complete may be 200, 404 or 403
/// for more details check http state manager /// for more details check http state manager
/// lib\controllers\http_status_manger\http_status_manger.dart /// lib\controllers\http_status_manger\http_status_manger.dart
Future<int> getRequests ({ Future<int> getRequests({
@required String host, @required String host,
@required User user, @required User user,
@required int hospitalId, @required int hospitalId,
}) async { }) async {
if(isLoading == true) if (isLoading == true) return -2;
return -2;
isLoading = true; isLoading = true;
if(serviceRequests == null) notifyListeners(); if (serviceRequests == null) notifyListeners();
Response response; Response response;
try{ try {
Map<String,dynamic> body = {}; Map<String, dynamic> body = {};
body.addAll(search.toMap()); body.addAll(search.toMap());
body["pageNumber"] = (serviceRequests?.length ?? 0) ~/pageItemNumber + 1; body["pageNumber"] = (serviceRequests?.length ?? 0) ~/ pageItemNumber + 1;
body["pageSize"] = pageItemNumber; body["pageSize"] = pageItemNumber;
response = await ApiManager.instance.post( response = await ApiManager.instance.post(
@ -71,30 +69,27 @@ class ServiceRequestsProvider extends ChangeNotifier{
); );
stateCode = response.statusCode; stateCode = response.statusCode;
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
// client's request was successfully received // client's request was successfully received
List requestsListJson = json.decode(response.body)["data"]; List requestsListJson = json.decode(response.body)["data"];
List<ServiceRequest> serviceRequestsPage = requestsListJson.map( List<ServiceRequest> serviceRequestsPage = requestsListJson.map((request) => ServiceRequest.fromJson(request)).toList();
(request) => ServiceRequest.fromJson(request)).toList();
serviceRequests ??= []; serviceRequests ??= [];
serviceRequests.addAll(serviceRequestsPage); serviceRequests.addAll(serviceRequestsPage);
if(serviceRequestsPage.length == pageItemNumber){ if (serviceRequestsPage.length == pageItemNumber) {
nextPage = true; nextPage = true;
}else{ } else {
nextPage = false; nextPage = false;
} }
} }
isLoading = false; isLoading = false;
notifyListeners(); notifyListeners();
return response.statusCode; return response.statusCode;
} catch (error) {
} catch(error) {
isLoading = false; isLoading = false;
stateCode = -1; stateCode = -1;
notifyListeners(); notifyListeners();
return -1; return -1;
} }
} }
Future<ServiceRequest> getSingleServiceRequest({ Future<ServiceRequest> getSingleServiceRequest({
@ -104,115 +99,93 @@ class ServiceRequestsProvider extends ChangeNotifier{
@required Subtitle subtitle, @required Subtitle subtitle,
}) async { }) async {
String userData = ''; String userData = '';
if(user != null){ if (user != null) {
userData += "&uid="+user.id; userData += "&uid=" + user.id;
userData += "&token="+user.token; userData += "&token=" + user.token;
} }
Response response; Response response;
try{ try {
response = await get( response = await get(Uri.parse(
Uri.parse( host +
host+URLs.getSingleServiceRequest URLs.getSingleServiceRequest +
+'?call_nid=$requestId' '?call_nid=$requestId'
'$userData',) '$userData',
); ));
}catch(error){ } catch (error) {
throw(HttpStatusManger.getStatusMessage( throw (HttpStatusManger.getStatusMessage(status: -1, subtitle: subtitle));
status: -1, subtitle: subtitle));
} }
// If the call to the server was successful, parse the JSON. // If the call to the server was successful, parse the JSON.
if (response.statusCode >= 200 && response.statusCode < 300){ if (response.statusCode >= 200 && response.statusCode < 300) {
// If the call to the server was successful, parse the JSON. // If the call to the server was successful, parse the JSON.
List jsonList = json.decode(utf8.decode(response.bodyBytes).replaceAll("\\", "")); List jsonList = json.decode(utf8.decode(response.bodyBytes).replaceAll("\\", ""));
List<ServiceRequest> _requests = jsonList.map((i) => ServiceRequest.fromJson(i)).toList(); List<ServiceRequest> _requests = jsonList.map((i) => ServiceRequest.fromJson(i)).toList();
return _requests[0]; return _requests[0];
}else{ } else {
throw(HttpStatusManger.getStatusMessage( throw (HttpStatusManger.getStatusMessage(status: response.statusCode, subtitle: subtitle));
status: response.statusCode, subtitle: subtitle));
} }
} }
Future<int> createRequest ({ Future<int> createRequest({
@required String host, @required String host,
@required User user, @required User user,
@required ServiceRequest serviceRequest, @required ServiceRequest serviceRequest,
}) async { }) async {
var body = { var body = {
"callCreatedBy": { "callCreatedBy": {"id": user.id, "name": user.userName},
"id":user.id, "assets": serviceRequest.deviceId == null ? [] : [serviceRequest.deviceId],
"name":user.userName
},
"assets":serviceRequest.deviceId == null ? [] : [serviceRequest.deviceId],
"requestedDate": DateTime.now().toIso8601String(), "requestedDate": DateTime.now().toIso8601String(),
"requestedTime": DateTime.now().toIso8601String(), "requestedTime": DateTime.now().toIso8601String(),
"client": user.hospital?.id ?? '', "client": user.hospital?.id ?? '',
"callComments": serviceRequest.maintenanceIssue, "callComments": serviceRequest.maintenanceIssue,
"attachmentsCallRequest": serviceRequest.devicePhotos.map((e) => {"name":e}).toList(), "attachmentsCallRequest": serviceRequest.devicePhotos.map((e) => {"name": e}).toList(),
"priority": serviceRequest.priority.toMap(), "priority": serviceRequest.priority.toMap(),
"defectType": serviceRequest.defectType.toMap(), "defectType": serviceRequest.defectType.toMap(),
"typeofRequest":serviceRequest.type.toMap(), "typeofRequest": serviceRequest.type.toMap(),
"requestedThrough":serviceRequest.type.toMap(), "requestedThrough": serviceRequest.type.toMap(),
}; };
if(serviceRequest.audio != null){ if (serviceRequest.audio != null) {
body["voiceNote"] = serviceRequest.audio; body["voiceNote"] = serviceRequest.audio;
} }
Response response; Response response;
try{ try {
response = await ApiManager.instance.post( response = await ApiManager.instance.post(URLs.createRequest, body: body);
URLs.createRequest,
body: body
);
stateCode = response.statusCode; stateCode = response.statusCode;
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
if(serviceRequests != null) if (serviceRequests != null) serviceRequests.insert(0, ServiceRequest.fromJson(json.decode(utf8.decode(response.bodyBytes))[0]));
serviceRequests.insert(
0,
ServiceRequest.fromJson(
json.decode(utf8.decode(response.bodyBytes))[0]
)
);
notifyListeners(); notifyListeners();
} }
return response.statusCode; return response.statusCode;
} catch (error) {
} catch(error) {
return -1; return -1;
} }
} }
Future<int> createIssueReport ({ Future<int> createIssueReport({
@required String host, @required String host,
@required User user, @required User user,
@required Issue issue, @required Issue issue,
}) async { }) async {
Response response; Response response;
Map<String,String> body = issue.toMap(); Map<String, String> body = issue.toMap();
body["uid"] = user.id; body["uid"] = user.id;
body["token"] = user.token; body["token"] = user.token;
try{ try {
response = await post( response = await post(
Uri.parse(host+URLs.createReport), Uri.parse(host + URLs.createReport),
body: body, body: body,
); );
stateCode = response.statusCode; stateCode = response.statusCode;
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {}
}
return response.statusCode; return response.statusCode;
} catch (error) {
} catch(error) {
return -1; return -1;
} }
} }
Future<int> updateDate ({ Future<int> updateDate({
@required String host, @required String host,
@required User user, @required User user,
@required String newDate, @required String newDate,
@ -220,49 +193,41 @@ class ServiceRequestsProvider extends ChangeNotifier{
@required ServiceRequest request, @required ServiceRequest request,
}) async { }) async {
Response response; Response response;
Map<String,String> body = {}; var body = {
body["uid"] = user.id; "callCreatedBy": {"id": user.id, "name": user.userName},
body["token"] = user.token; "assets": request.deviceId == null ? [] : [request.deviceId],
body["nid"] = request.id; "requestedDate": newDate,
if(newDate != null) body["date"] = newDate; "requestedTime": newDate,
if(employee != null) body["ass_emp"] = employee.id.toString(); };
try{ try {
response = await post( response = await ApiManager.instance.put(
Uri.parse( URLs.updateRequestDate,
//host+
URLs.updateRequestDate
),
body: body, body: body,
); );
stateCode = response.statusCode; stateCode = response.statusCode;
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
request.engineerName = employee.name; request.engineerName = employee.name;
notifyListeners(); notifyListeners();
} }
return response.statusCode; return response.statusCode;
} catch (error) {
} catch(error) {
return -1; return -1;
} }
} }
Future<int> createServiceReport ({ Future<int> createServiceReport({
@required String host, @required String host,
@required User user, @required User user,
@required ServiceReport report, @required ServiceReport report,
@required ServiceRequest request, @required ServiceRequest request,
}) async { }) async {
Response response; Response response;
try {
try{ Map<String, dynamic> body = report.toMap(request);
Map<String,dynamic> body = report.toMap(request);
// body["uid"] = user.id; // body["uid"] = user.id;
// body["token"] = user.token; // body["token"] = user.token;
response = await ApiManager.instance.post( response = await ApiManager.instance.post(URLs.createServiceReport, body: body);
URLs.createServiceReport, print(response.body);
body: body
);
// response = await post( // response = await post(
// Uri.parse( // Uri.parse(
// host+URLs.createServiceReport), // host+URLs.createServiceReport),
@ -270,54 +235,46 @@ class ServiceRequestsProvider extends ChangeNotifier{
// ); // );
stateCode = response.statusCode; stateCode = response.statusCode;
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
reset(); reset();
notifyListeners(); notifyListeners();
} }
return response.statusCode; return response.statusCode;
} catch (error) {
} catch(error) {
return -1; return -1;
} }
} }
Future<int> createDuplicatedReport ({ Future<int> createDuplicatedReport({
@required String host, @required String host,
@required User user, @required User user,
@required ServiceRequest request, @required ServiceRequest request,
}) async { }) async {
Response response; Response response;
String userData = ''; String userData = '';
if(user != null){ if (user != null) {
userData += "&uid="+user.id; userData += "&uid=" + user.id;
userData += "&token="+user.token; userData += "&token=" + user.token;
} }
try{ try {
response = await get( response = await get(
Uri.parse( Uri.parse(host + URLs.createDuplicatedReport + "?nid=${request.id}" + userData),
host+URLs.createDuplicatedReport
+"?nid=${request.id}"
+userData),
); );
stateCode = response.statusCode; stateCode = response.statusCode;
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
reset(); reset();
notifyListeners(); notifyListeners();
} }
return response.statusCode; return response.statusCode;
} catch (error) {
} catch(error) {
return -1; return -1;
} }
} }
Future<int> updateServiceReport ({ Future<int> updateServiceReport({
@required String host, @required String host,
@required User user, @required User user,
@required ServiceReport report, @required ServiceReport report,
@ -329,14 +286,11 @@ class ServiceRequestsProvider extends ChangeNotifier{
// body["token"] = user.token; // body["token"] = user.token;
// body["job_id"] = request.id; // body["job_id"] = request.id;
// body["report_id"] = request.reportID; // body["report_id"] = request.reportID;
try{ try {
Map<String,dynamic> body = report.toMap(request); Map<String, dynamic> body = report.toMap(request);
// body["uid"] = user.id; // body["uid"] = user.id;
// body["token"] = user.token; // body["token"] = user.token;
response = await ApiManager.instance.put( response = await ApiManager.instance.put(URLs.updateServiceReport, body: body);
URLs.updateServiceReport,
body: body
);
// response = await post( // response = await post(
// Uri.parse( // Uri.parse(
// host+URLs.updateServiceReport), // host+URLs.updateServiceReport),
@ -344,52 +298,46 @@ class ServiceRequestsProvider extends ChangeNotifier{
// ); // );
// stateCode = response.statusCode; // stateCode = response.statusCode;
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
reset(); reset();
notifyListeners(); notifyListeners();
} }
return response.statusCode; return response.statusCode;
} catch (error) {
} catch(error) {
return -1; return -1;
} }
} }
Future<int> updateServiceReportTimer ({ Future<int> updateServiceReportTimer({
@required String host, @required String host,
@required User user, @required User user,
@required TimerModel timer, @required TimerModel timer,
@required ServiceRequest request, @required ServiceRequest request,
}) async { }) async {
Response response; Response response;
Map<String,dynamic> body = {}; Map<String, dynamic> body = {};
body["uid"] = user.id; body["uid"] = user.id;
body["token"] = user.token; body["token"] = user.token;
body["job_id"] = request.id; body["job_id"] = request.id;
body["start_time"] = (timer.startAt.millisecondsSinceEpoch / 1000).toStringAsFixed(0); body["start_time"] = (timer.startAt.millisecondsSinceEpoch / 1000).toStringAsFixed(0);
body["end_time"] = (timer.endAt.millisecondsSinceEpoch / 1000).toStringAsFixed(0); body["end_time"] = (timer.endAt.millisecondsSinceEpoch / 1000).toStringAsFixed(0);
body["working_hours"] = (timer.durationInSecond / 60 / 60).toStringAsFixed(5); body["working_hours"] = (timer.durationInSecond / 60 / 60).toStringAsFixed(5);
body["report_id"] = request.reportID; body["report_id"] = request.reportID;
try{ try {
response = await post( response = await post(
Uri.parse( Uri.parse(host + URLs.updateServiceReport),
host+URLs.updateServiceReport),
body: body, body: body,
); );
//stateCode = response.statusCode; //stateCode = response.statusCode;
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
// reset(); // reset();
// notifyListeners(); // notifyListeners();
} }
return response.statusCode; return response.statusCode;
} catch (error) {
} catch(error) {
return -1; return -1;
} }
} }
Future<ServiceReport> getSingleServiceReport({ Future<ServiceReport> getSingleServiceReport({
@ -398,29 +346,21 @@ class ServiceRequestsProvider extends ChangeNotifier{
@required User user, @required User user,
@required Subtitle subtitle, @required Subtitle subtitle,
}) async { }) async {
Response response; Response response;
try{ try {
response = await ApiManager.instance.get( response = await ApiManager.instance.get(
URLs.getServiceReport + "?workOrderId=$reportId", URLs.getServiceReport + "?workOrderId=$reportId",
); );
} catch (error) {
}catch(error){ throw (HttpStatusManger.getStatusMessage(status: -1, subtitle: subtitle));
throw(HttpStatusManger.getStatusMessage(
status: -1, subtitle: subtitle));
} }
// If the call to the server was successful, parse the JSON. // If the call to the server was successful, parse the JSON.
if (response.statusCode >= 200 && response.statusCode < 300){ if (response.statusCode >= 200 && response.statusCode < 300) {
// If the call to the server was successful, parse the JSON. // If the call to the server was successful, parse the JSON.
return ServiceReport.fromJson( return ServiceReport.fromJson(json.decode(response.body)["data"], reportId);
json.decode(response.body)["data"],reportId); } else {
}else{ throw (HttpStatusManger.getStatusMessage(status: response.statusCode, subtitle: subtitle));
throw(HttpStatusManger.getStatusMessage(
status: response.statusCode, subtitle: subtitle));
} }
} }
} }

@ -6,10 +6,9 @@ import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart'; import 'package:test_sa/models/user.dart';
class UserProvider extends ChangeNotifier{ class UserProvider extends ChangeNotifier {
//reset provider data //reset provider data
void reset(){ void reset() {
_user = null; _user = null;
ApiManager.instance.user = user; ApiManager.instance.user = user;
_loading = false; _loading = false;
@ -25,7 +24,6 @@ class UserProvider extends ChangeNotifier{
notifyListeners(); notifyListeners();
} }
// when login or register in-process _login = true // when login or register in-process _login = true
// when login or register is done or not start = false // when login or register is done or not start = false
bool _loading = false; bool _loading = false;
@ -41,30 +39,30 @@ class UserProvider extends ChangeNotifier{
/// return state code if request complete may be 200, 404 or 403 /// return state code if request complete may be 200, 404 or 403
/// for more details check http state manager /// for more details check http state manager
/// lib\controllers\http_status_manger\http_status_manger.dart /// lib\controllers\http_status_manger\http_status_manger.dart
Future<int> login ({ Future<int> login({
@required String host, @required String host,
@required User user, @required User user,
}) async { }) async {
if(_loading == true) if (_loading == true) return -2;
return -2;
_loading = true; _loading = true;
notifyListeners(); notifyListeners();
Response response; Response response;
try{ try {
response = await ApiManager.instance.post( response = await ApiManager.instance.post(
URLs.login, URLs.login,
body: await user.toLoginJson(), body: await user.toLoginJson(),
); );
_loading = false; _loading = false;
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
// client's request was successfully received // client's request was successfully received
_user = User.fromJson(jsonDecode(response.body)); _user = User.fromJson(jsonDecode(response.body));
ApiManager.instance.user = _user; ApiManager.instance.user = _user;
notifyListeners();
return response.statusCode; return response.statusCode;
} }
notifyListeners(); notifyListeners();
return response.statusCode; return response.statusCode;
} catch(error) { } catch (error) {
_loading = false; _loading = false;
notifyListeners(); notifyListeners();
return -1; return -1;
@ -77,28 +75,27 @@ class UserProvider extends ChangeNotifier{
/// return state code if request complete may be 200, 404 or 403 /// return state code if request complete may be 200, 404 or 403
/// for more details about state codes check http state manager /// for more details about state codes check http state manager
/// lib\controllers\http_status_manger\http_status_manger.dart /// lib\controllers\http_status_manger\http_status_manger.dart
Future<int> register ({ Future<int> register({
@required String host, @required String host,
@required User user, @required User user,
}) async { }) async {
if(_loading == true) if (_loading == true) return -2;
return -2;
_loading = true; _loading = true;
notifyListeners(); notifyListeners();
Response response; Response response;
try{ try {
response = await ApiManager.instance.post( response = await ApiManager.instance.post(
URLs.register, URLs.register,
body: await user.toLoginJson(), body: await user.toLoginJson(),
); );
} catch(error) { } catch (error) {
_loading = false; _loading = false;
notifyListeners(); notifyListeners();
return -1; return -1;
} }
_loading = false; _loading = false;
notifyListeners(); notifyListeners();
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
// client's request was successfully received // client's request was successfully received
_user = User.fromJson(jsonDecode(utf8.decode(response.bodyBytes))[0]); _user = User.fromJson(jsonDecode(utf8.decode(response.bodyBytes))[0]);
_user.hospital = user.hospital; _user.hospital = user.hospital;
@ -114,31 +111,27 @@ class UserProvider extends ChangeNotifier{
/// return state code if request complete may be 200, 404 or 403 /// return state code if request complete may be 200, 404 or 403
/// for more details about state codes check http state manager /// for more details about state codes check http state manager
/// lib\controllers\http_status_manger\http_status_manger.dart /// lib\controllers\http_status_manger\http_status_manger.dart
Future<int> updateProfile ({ Future<int> updateProfile({
@required String host, @required String host,
@required User user, @required User user,
}) async { }) async {
if(_loading == true) if (_loading == true) return -2;
return -2;
_loading = true; _loading = true;
notifyListeners(); notifyListeners();
Response response; Response response;
Map<String,dynamic> jsonObject ={}; Map<String, dynamic> jsonObject = {};
jsonObject["uid"] = user.id; jsonObject["uid"] = user.id;
jsonObject["token"] = user.token; jsonObject["token"] = user.token;
if(user.department.id != _user.department.id) if (user.department.id != _user.department.id) jsonObject["department"] = user.department.id;
jsonObject["department"] = user.department.id; if (user.whatsApp != _user.whatsApp) jsonObject["whatsapp"] = user.whatsApp;
if(user.whatsApp != _user.whatsApp) if (user.phoneNumber != _user.phoneNumber) jsonObject["phone"] = user.phoneNumber;
jsonObject["whatsapp"] = user.whatsApp; try {
if(user.phoneNumber != _user.phoneNumber)
jsonObject["phone"] = user.phoneNumber;
try{
response = response = await ApiManager.instance.post( response = response = await ApiManager.instance.post(
URLs.login, URLs.login,
body: jsonObject, body: jsonObject,
); );
} catch(error) { } catch (error) {
_loading = false; _loading = false;
notifyListeners(); notifyListeners();
return -1; return -1;
@ -147,7 +140,7 @@ class UserProvider extends ChangeNotifier{
_loading = false; _loading = false;
notifyListeners(); notifyListeners();
if(response.statusCode >= 200 && response.statusCode < 300) { if (response.statusCode >= 200 && response.statusCode < 300) {
// client's request was successfully received // client's request was successfully received
_user = User.fromJson(jsonDecode(utf8.decode(response.bodyBytes))[0]); _user = User.fromJson(jsonDecode(utf8.decode(response.bodyBytes))[0]);
_user.hospital = user.hospital; _user.hospital = user.hospital;
@ -157,5 +150,4 @@ class UserProvider extends ChangeNotifier{
} }
return response.statusCode; return response.statusCode;
} }
} }

@ -3,7 +3,7 @@ import 'package:test_sa/models/lookup.dart';
import 'model.dart'; import 'model.dart';
class Device{ class Device {
int id; int id;
String serialNumber; String serialNumber;
String number; String number;
@ -12,7 +12,6 @@ class Device{
ModelDefinition modelDefinition; ModelDefinition modelDefinition;
Hospital hospital; Hospital hospital;
Device({ Device({
this.id, this.id,
this.serialNumber, this.serialNumber,
@ -21,20 +20,15 @@ class Device{
// this.brand, // this.brand,
// this.model, // this.model,
this.modelDefinition, this.modelDefinition,
}); });
factory Device.fromJson(Map<String, dynamic> parsedJson) {
factory Device.fromJson(Map<String,dynamic> parsedJson){
return Device( return Device(
id: parsedJson["id"], id: parsedJson["id"],
serialNumber: parsedJson["assetSerialNo"], serialNumber: parsedJson["assetSerialNo"],
number: parsedJson["assetNumber"], number: parsedJson["assetNumber"],
modelDefinition:ModelDefinition.fromJson(parsedJson["modelDefinition"]), modelDefinition: ModelDefinition.fromJson(parsedJson["modelDefinition"]),
hospital:Hospital.fromJson(parsedJson["site"]), hospital: Hospital.fromJson(parsedJson["site"]),
// parsedJson["modelDefinition"] == null ? "" : // parsedJson["modelDefinition"] == null ? "" :
// parsedJson["modelDefinition"]["manufacturerName"], // parsedJson["modelDefinition"]["manufacturerName"],
// model: parsedJson["modelDefinition"] == null ? "" : // model: parsedJson["modelDefinition"] == null ? "" :
@ -42,7 +36,7 @@ class Device{
); );
} }
factory Device.fromDevice(Device device){ factory Device.fromDevice(Device device) {
return Device( return Device(
id: device.id, id: device.id,
serialNumber: device.serialNumber, serialNumber: device.serialNumber,
@ -59,7 +53,8 @@ class Device{
'assetNumber': number, 'assetNumber': number,
'modelDefinition': modelDefinition.toJson(), 'modelDefinition': modelDefinition.toJson(),
'site': hospital.toMap(), 'site': hospital.toMap(),
'AssetType':assetType.toMap(), 'AssetType': assetType.toMap(),
"supplier": {"id": 0, "suppliername": "string"},
}; };
} }
} }

@ -9,7 +9,7 @@ import 'package:test_sa/models/pantry/pm_kit.dart';
import 'package:test_sa/models/pantry/ppm_check_list.dart'; import 'package:test_sa/models/pantry/ppm_check_list.dart';
import 'package:test_sa/models/timer_model.dart'; import 'package:test_sa/models/timer_model.dart';
class Pentry{ class Pentry {
Lookup ppmVisitStatus; Lookup ppmVisitStatus;
Lookup status; Lookup status;
TimerModel timer; TimerModel timer;
@ -27,55 +27,50 @@ class Pentry{
Uint8List localNurseSignature; Uint8List localNurseSignature;
Uint8List localEngineerSignature; Uint8List localEngineerSignature;
Pentry({ Pentry(
this.travelingHours, {this.travelingHours,
this.timer, this.timer,
this.status, this.status,
this.ppmVisitStatus, this.ppmVisitStatus,
this.actualVisitDate, this.actualVisitDate,
this.expectedVisitDate, this.expectedVisitDate,
this.image, this.image,
this.imageFile, this.imageFile,
// this.contacts, // this.contacts,
this.ppmCheckLists, this.ppmCheckLists,
this.calibrationTools, this.calibrationTools,
this.pmKits, this.pmKits,
this.signatureNurse, this.signatureNurse,
this.signatureEngineer, this.signatureEngineer,
this.localNurseSignature, this.localNurseSignature,
this.localEngineerSignature this.localEngineerSignature});
});
bool validate(){ bool validate() {
if(actualVisitDate == null) return false; if (actualVisitDate == null) return false;
if(expectedVisitDate == null) return false; if (expectedVisitDate == null) return false;
if(timer == null && timer.endAt != null) return false; if (timer == null && timer.endAt != null) return false;
if(ppmVisitStatus == null) return false; if (ppmVisitStatus == null) return false;
//if(status == null) return false; //if(status == null) return false;
return true; return true;
} }
Map<String, dynamic> toMap(int visitId) { Map<String, dynamic> toMap(int visitId) {
Map<String, dynamic> map = {}; Map<String, dynamic> map = {};
map["visitStatusId"] = ppmVisitStatus?.id.toString(); map["visitStatusId"] = ppmVisitStatus?.id.toString();
//if(status != null) map["visitStatusId"] = status?.id.toString(); //if(status != null) map["visitStatusId"] = status?.id.toString();
if(travelingHours != null) map["travelingHours"] = travelingHours; if (travelingHours != null) map["travelingHours"] = travelingHours;
//if(imageFile != null) map["file_attachement"] = base64Encode(imageFile.readAsBytesSync()); //if(imageFile != null) map["file_attachement"] = base64Encode(imageFile.readAsBytesSync());
map["actualDate"] = actualVisitDate.toIso8601String(); map["actualDate"] = actualVisitDate.toIso8601String();
map["expectedDate"] = expectedVisitDate.toIso8601String(); map["expectedDate"] = expectedVisitDate.toIso8601String();
if(timer != null){ if (timer != null) {
map["startDate"] = timer.startAt.toIso8601String(); map["startDate"] = timer.startAt.toIso8601String();
map["endDate"] = timer.endAt?.toIso8601String() ?? DateTime.now().toIso8601String(); map["endDate"] = timer.endAt?.toIso8601String() ?? DateTime.now().toIso8601String();
map["workingHours"] = (timer.durationInSecond / 60 / 60).toStringAsFixed(5); map["workingHours"] = (timer.durationInSecond / 60 / 60).toStringAsFixed(5);
} }
if(imageFile !=null){ if (imageFile != null) {
map["vAttachments"]=[ map["vAttachments"] = [
{ {"attachmentName": (imageFile.path.split("/").last + base64Encode(imageFile.readAsBytesSync()))}
"attachmentName":(imageFile.path.split("/").last+base64Encode(imageFile.readAsBytesSync()))
}
]; ];
} }
@ -89,8 +84,8 @@ class Pentry{
map["vChecklists"] = ppmCheckLists.map((e) => e.toMap(visitId)).toList(); map["vChecklists"] = ppmCheckLists.map((e) => e.toMap(visitId)).toList();
map["vCalibrationTools"] = calibrationTools.map((e) => e.toMap(visitId)).toList(); map["vCalibrationTools"] = calibrationTools.map((e) => e.toMap(visitId)).toList();
map["vKits"] = pmKits.map((e) => e.toMap(visitId)).toList(); map["vKits"] = pmKits.map((e) => e.toMap(visitId)).toList();
map["nurseSignature"] = signatureNurse; map["nurseSignature"] = "${DateTime.now().toIso8601String()}.png|$signatureNurse";
map["engSignature"] = signatureEngineer; map["engSignature"] = "${DateTime.now().toIso8601String()}.png|$signatureEngineer";
return map; return map;
} }
@ -103,42 +98,32 @@ class Pentry{
// } // }
List<PMKit> pmKits = []; List<PMKit> pmKits = [];
if(map['vKits'] != null){ if (map['vKits'] != null) {
pmKits =(map['vKits'] as List<dynamic>) pmKits = (map['vKits'] as List<dynamic>).map((e) => PMKit.fromMap(e as Map<String, dynamic>)).toList();
.map((e) => PMKit.fromMap(e as Map<String, dynamic>))
.toList();
} }
List<PPMCheckList> ppmCheckLists = []; List<PPMCheckList> ppmCheckLists = [];
if(map['vChecklists'] != null){ if (map['vChecklists'] != null) {
ppmCheckLists =(map['vChecklists'] as List<dynamic>) ppmCheckLists = (map['vChecklists'] as List<dynamic>).map((e) => PPMCheckList.fromMap(e as Map<String, dynamic>)).toList();
.map((e) => PPMCheckList.fromMap(e as Map<String, dynamic>))
.toList();
} }
List<CalibrationTool> calibrationTools = []; List<CalibrationTool> calibrationTools = [];
if(map['vCalibrationTools'] != null){ if (map['vCalibrationTools'] != null) {
calibrationTools =(map['vCalibrationTools'] as List<dynamic>) calibrationTools = (map['vCalibrationTools'] as List<dynamic>).map((e) => CalibrationTool.fromMap(e as Map<String, dynamic>)).toList();
.map((e) => CalibrationTool.fromMap(e as Map<String, dynamic>))
.toList();
} }
return Pentry( return Pentry(
status: Lookup(id: map["taskStatusId"],name: map["taskStatusName"]), status: Lookup(id: map["taskStatusId"], name: map["taskStatusName"]),
ppmVisitStatus: Lookup(id: map["visitStatusId"],name: map["visitStatusName"]), ppmVisitStatus: Lookup(id: map["visitStatusId"], name: map["visitStatusName"]),
actualVisitDate: DateTime.tryParse(map["actualDate"] ?? ""), actualVisitDate: DateTime.tryParse(map["actualDate"] ?? ""),
expectedVisitDate: DateTime.tryParse(map["expectedDate"] ?? ""), expectedVisitDate: DateTime.tryParse(map["expectedDate"] ?? ""),
travelingHours: map["travelingHours"], travelingHours: map["travelingHours"],
timer: TimerModel( timer: TimerModel(startAt: DateTime.tryParse(map["startDate"] ?? ""), endAt: DateTime.tryParse(map["endDate"] ?? ""), durationInSecond: (int.tryParse(map["workingHours"] ?? "") ?? 0) * 60 * 60),
startAt: DateTime.tryParse(map["startDate"] ?? ""),
endAt: DateTime.tryParse(map["endDate"] ?? ""),
durationInSecond: (int.tryParse(map["workingHours"] ?? "") ?? 0) * 60 *60
),
// contacts: contacts, // contacts: contacts,
ppmCheckLists: ppmCheckLists, ppmCheckLists: ppmCheckLists,
calibrationTools: calibrationTools, calibrationTools: calibrationTools,
pmKits: pmKits, pmKits: pmKits,
signatureNurse: URLs.getFileUrl(map["nurseSignature"]) , signatureNurse: URLs.getFileUrl(map["nurseSignature"]),
signatureEngineer:URLs.getFileUrl(map["engSignature"]), signatureEngineer: URLs.getFileUrl(map["engSignature"]),
); );
} }
@ -158,19 +143,18 @@ class Pentry{
String signatureEngineer, String signatureEngineer,
}) { }) {
return Pentry( return Pentry(
ppmVisitStatus: ppmVisitStatus ?? this.ppmVisitStatus, ppmVisitStatus: ppmVisitStatus ?? this.ppmVisitStatus,
status: status ?? this.status, status: status ?? this.status,
timer: timer ?? this.timer, timer: timer ?? this.timer,
actualVisitDate: actualVisitDate ?? this.actualVisitDate, actualVisitDate: actualVisitDate ?? this.actualVisitDate,
expectedVisitDate: expectedVisitDate ?? this.expectedVisitDate, expectedVisitDate: expectedVisitDate ?? this.expectedVisitDate,
travelingHours: travelingHours ?? this.travelingHours, travelingHours: travelingHours ?? this.travelingHours,
image: image ?? this.image, image: image ?? this.image,
imageFile: imageFile ?? this.imageFile, imageFile: imageFile ?? this.imageFile,
ppmCheckLists: ppmCheckLists ?? this.ppmCheckLists?.map((e) => e.copyWith())?.toList(), ppmCheckLists: ppmCheckLists ?? this.ppmCheckLists?.map((e) => e.copyWith())?.toList(),
calibrationTools: calibrationTools ?? this.calibrationTools?.map((e) => e.copyWith())?.toList(), calibrationTools: calibrationTools ?? this.calibrationTools?.map((e) => e.copyWith())?.toList(),
pmKits: pmKits ?? this.pmKits.map((e) => e.copyWith()).toList(), pmKits: pmKits ?? this.pmKits.map((e) => e.copyWith()).toList(),
signatureNurse: signatureNurse ?? this.signatureNurse, signatureNurse: signatureNurse ?? this.signatureNurse,
signatureEngineer: signatureEngineer ?? this.signatureEngineer signatureEngineer: signatureEngineer ?? this.signatureEngineer);
);
} }
} }

@ -1,6 +1,6 @@
import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/lookup.dart';
class PPMCheckList{ class PPMCheckList {
int id; int id;
Lookup status; Lookup status;
String title; String title;
@ -19,17 +19,17 @@ class PPMCheckList{
return { return {
'id': id ?? 0, 'id': id ?? 0,
"visitId": visitId, "visitId": visitId,
if(status != null) 'taskStatusId': status?.id.toString(), if (status != null) 'taskStatusId': status?.id,
if(title != null) 'task': title, if (title != null) 'task': title,
if(comment != null) 'taskComment': comment, if (comment != null) 'taskComment': comment,
if(measuredValue != null) 'measuredValue': measuredValue, if (measuredValue != null) 'measuredValue': measuredValue,
}; };
} }
factory PPMCheckList.fromMap(Map<String, dynamic> map) { factory PPMCheckList.fromMap(Map<String, dynamic> map) {
return PPMCheckList( return PPMCheckList(
id: map['id'] as int, id: map['id'] as int,
status: Lookup(id: map["taskStatusId"],name: map["taskStatusName"]), status: Lookup(id: map["taskStatusId"], name: map["taskStatusName"]),
title: map['task'] as String, title: map['task'] as String,
comment: map['taskComment'] as String, comment: map['taskComment'] as String,
measuredValue: map['measuredValue'] as String, measuredValue: map['measuredValue'] as String,

@ -36,99 +36,98 @@ class ServiceReport {
Uint8List localNurseSignature; Uint8List localNurseSignature;
Uint8List localEngineerSignature; Uint8List localEngineerSignature;
ServiceReport({ ServiceReport(
this.id, {this.id,
this.visitDate, this.visitDate,
this.endDate, this.endDate,
this.assetType, this.assetType,
this.status, this.status,
this.type, this.type,
this.faultDescriptionId, this.faultDescriptionId,
//this.workHours, //this.workHours,
this.travelingHours, this.travelingHours,
this.parts, this.parts,
this.engineer, this.engineer,
this.workPreformed, this.workPreformed,
this.reason, this.reason,
this.operatingHours, this.operatingHours,
this.callLastSituation, this.callLastSituation,
this.jobSheetNumber, this.jobSheetNumber,
this.image, this.image,
this.device, this.device,
this.invoiceCode, this.invoiceCode,
this.invoiceNumber, this.invoiceNumber,
this.quantity = "1", this.quantity = "1",
this.timer, this.timer,
this.signatureNurse, this.signatureNurse,
this.signatureEngineer, this.signatureEngineer,
this.localNurseSignature, this.localNurseSignature,
this.localEngineerSignature this.localEngineerSignature});
});
Map<String,dynamic> toMap(ServiceRequest request){ Map<String, dynamic> toMap(ServiceRequest request) {
Map<String,dynamic> _map = {}; Map<String, dynamic> _map = {};
if(id != null) _map["id"] = id; if (id != null) _map["id"] = id;
if(visitDate != null) _map["visitDate"] = visitDate.toIso8601String(); if (visitDate != null) _map["visitDate"] = visitDate.toIso8601String();
//if(serviceType != null) _map["service_type"] = serviceType.id.toString(); //if(serviceType != null) _map["service_type"] = serviceType.id.toString();
if(status != null) _map["status"] = status?.toMap(); if (status != null) _map["status"] = status?.toMap();
if(type != null) _map["typeOfWO"] = type?.toMap(); if (type != null) _map["typeOfWO"] = type?.toMap();
if(assetType != null) _map["TypeOfWO"] = assetType?.toMap(); if (assetType != null) _map["TypeOfWO"] = assetType?.toMap();
//if(faultDescriptionId != null && faultDescriptionId.isNotEmpty) _map["fault_description"] = faultDescriptionId; //if(faultDescriptionId != null && faultDescriptionId.isNotEmpty) _map["fault_description"] = faultDescriptionId;
//if(workHours != null && workHours.isNotEmpty) _map["working_hours"] = workHours; //if(workHours != null && workHours.isNotEmpty) _map["working_hours"] = workHours;
if(timer != null){ if (timer != null) {
_map["startofWorkTime"] = timer.startAt.toIso8601String(); _map["startofWorkTime"] = timer.startAt.toIso8601String();
_map["endofWorkTime"] = (timer.endAt ?? DateTime.now()).toIso8601String(); _map["endofWorkTime"] = (timer.endAt ?? DateTime.now()).toIso8601String();
_map["workingHours"] = (timer.durationInSecond / 60 / 60).toStringAsFixed(5); _map["workingHours"] = (timer.durationInSecond / 60 / 60).toStringAsFixed(5);
} }
if(travelingHours != null && travelingHours.isNotEmpty) _map["traveling_hours"] = travelingHours; if (travelingHours != null && travelingHours.isNotEmpty) _map["traveling_hours"] = travelingHours;
// if(workPreformed != null && workPreformed.isNotEmpty){ // if(workPreformed != null && workPreformed.isNotEmpty){
// _map["faultDescription"] = { // _map["faultDescription"] = {
// //"id":faultDescriptionId ?? 0, // //"id":faultDescriptionId ?? 0,
// "workPerformed":workPreformed // "workPerformed":workPreformed
// }; // };
// } // }
if(jobSheetNumber != null && jobSheetNumber.isNotEmpty) _map["job_sheet_no"] = jobSheetNumber; if (jobSheetNumber != null && jobSheetNumber.isNotEmpty) _map["job_sheet_no"] = jobSheetNumber;
if(parts != null && parts.isNotEmpty){ if (parts != null && parts.isNotEmpty) {
_map["sparePartsWorkOrders"] = parts.map((e) => e.toJson()).toList(); _map["sparePartsWorkOrders"] = parts.map((e) => e.toJson()).toList();
} }
if(device != null && device.id != null){ if (device != null && device.id != null) {
_map["callRequest"] = { _map["callRequest"] = {
"id":request.id, "id": request.id,
"asset":device?.toMap(assetType), "asset": device?.toMap(assetType),
}; };
_map["callRequest"]["asset"]["invoiceNumber"] = invoiceNumber; _map["callRequest"]["asset"]["invoiceNumber"] = invoiceNumber;
} }
_map["AssignedEmployee"] = engineer?.toMap(); _map["AssignedEmployee"] = engineer?.toMap();
//if(quantity != null && quantity.isNotEmpty) _map["qty"] = quantity; //if(quantity != null && quantity.isNotEmpty) _map["qty"] = quantity;
//if(endDate != null) _map["end_date"] = (endDate.millisecondsSinceEpoch ~/ 1000).toString(); //if(endDate != null) _map["end_date"] = (endDate.millisecondsSinceEpoch ~/ 1000).toString();
if(reason != null) _map["reason"] = reason.toMap(); if (reason != null) _map["reason"] = reason.toMap();
//if(operatingHours != null && operatingHours.isNotEmpty) _map["operation_hours"] = operatingHours; //if(operatingHours != null && operatingHours.isNotEmpty) _map["operation_hours"] = operatingHours;
if(callLastSituation != null) _map["calllastSituation"] = callLastSituation.toMap(); if (callLastSituation != null) _map["calllastSituation"] = callLastSituation.toMap();
//if(image != null) _map["image"] = image; //if(image != null) _map["image"] = image;
//if(invoiceCode != null) _map["invoice_no"] = invoiceCode; //if(invoiceCode != null) _map["invoice_no"] = invoiceCode;
//if(invoiceNumber != null) _map["invoice_code"] = invoiceNumber; //if(invoiceNumber != null) _map["invoice_code"] = invoiceNumber;
if(image != null){ if (image != null) {
_map["attachmentsWorkOrder"]=[{ _map["attachmentsWorkOrder"] = [
"name":image {"name": image}
}]; ];
} }
_map["nurseSignature"] = signatureNurse; _map["nurseSignature"] = signatureNurse;
_map["engSignature"] = signatureEngineer; _map["engSignature"] = signatureEngineer;
return _map; return _map;
} }
bool validate(){ bool validate() {
if(visitDate == null) return false; if (visitDate == null) return false;
//if(serviceType == null) return false; //if(serviceType == null) return false;
if(status == null) return false; if (status == null) return false;
if(type == null && assetType==null) return false; if (type == null && assetType == null) return false;
if(engineer == null) return false; if (engineer == null) return false;
if(callLastSituation == null) return false; if (callLastSituation == null) return false;
if(callLastSituation?.value == 12){ if (callLastSituation?.value == 12) {
// if(invoiceCode != null || invoiceCode?.isEmpty == true) return false; // if(invoiceCode != null || invoiceCode?.isEmpty == true) return false;
if(invoiceNumber != null || invoiceNumber?.isEmpty== true ) return false; if (invoiceNumber != null || invoiceNumber?.isEmpty == true) return false;
} }
if(parts == null) return false; if (parts == null) return false;
//if(endDate == null) return false; //if(endDate == null) return false;
//if(reason == null) return false; //if(reason == null) return false;
//todo uncoment this line //todo uncoment this line
@ -138,16 +137,14 @@ class ServiceReport {
return true; return true;
} }
factory ServiceReport.fromJson(Map<String,dynamic> parsedJson,int id){ factory ServiceReport.fromJson(Map<String, dynamic> parsedJson, int id) {
List<Part> _parts = []; List<Part> _parts = [];
if(parsedJson["sparePartsWorkOrders"] != null){ if (parsedJson["sparePartsWorkOrders"] != null) {
if(parsedJson["sparePartsWorkOrders"][0]["id"] != null){ if (parsedJson["sparePartsWorkOrders"][0]["id"] != null) {
List partsList = parsedJson["sparePartsWorkOrders"]; List partsList = parsedJson["sparePartsWorkOrders"];
_parts = partsList.map((e) => Part.fromJson( _parts = partsList.map((e) => Part.fromJson(e["sparePart"], reportJson: e)).toList();
e["sparePart"],reportJson: e)).toList();
}
} }
}
return ServiceReport( return ServiceReport(
id: id, id: id,
assetType: Lookup.fromJson(parsedJson["assetType"]), assetType: Lookup.fromJson(parsedJson["assetType"]),
@ -156,7 +153,7 @@ class ServiceReport {
status: Lookup.fromJson(parsedJson["status"]), status: Lookup.fromJson(parsedJson["status"]),
type: Lookup.fromJson(parsedJson["typeOfWO"]), type: Lookup.fromJson(parsedJson["typeOfWO"]),
//faultDescriptionId: parsedJson["fault_description"], //faultDescriptionId: parsedJson["fault_description"],
endDate:DateTime.tryParse(parsedJson["endofWorkTime"]), endDate: DateTime.tryParse(parsedJson["endofWorkTime"]),
//invoiceCode: parsedJson["invoice_code"], //invoiceCode: parsedJson["invoice_code"],
//invoiceNumber: parsedJson["invoice_no"], //invoiceNumber: parsedJson["invoice_no"],
//jobSheetNumber: parsedJson["job_sheet_no"], //jobSheetNumber: parsedJson["job_sheet_no"],
@ -168,14 +165,11 @@ class ServiceReport {
visitDate: DateTime.tryParse(parsedJson["visitDate"]), visitDate: DateTime.tryParse(parsedJson["visitDate"]),
//workHours: parsedJson["working_hours"], //workHours: parsedJson["working_hours"],
timer: TimerModel( timer: TimerModel(
startAt: DateTime.tryParse(parsedJson["startofWorkTime"]), startAt: DateTime.tryParse(parsedJson["startofWorkTime"]), endAt: DateTime.tryParse(parsedJson["endofWorkTime"]), durationInSecond: ((parsedJson["workingHours"] ?? 0) * 60 * 60).toInt()),
endAt: DateTime.tryParse(parsedJson["endofWorkTime"]),
durationInSecond: ((parsedJson["workingHours"] ?? 0) * 60 *60).toInt()
),
//workPreformed: parsedJson["work_performed"], //workPreformed: parsedJson["work_performed"],
device: Device.fromJson(parsedJson["callRequest"]["asset"]), device: Device.fromJson(parsedJson["callRequest"]["asset"]),
signatureNurse: URLs.getFileUrl(parsedJson["nurseSignature"]) , signatureNurse: URLs.getFileUrl(parsedJson["nurseSignature"]),
signatureEngineer:URLs.getFileUrl(parsedJson["engSignature"]), signatureEngineer: URLs.getFileUrl(parsedJson["engSignature"]),
); );
} }

@ -13,8 +13,6 @@ import 'package:test_sa/views/widgets/app_text_form_field.dart';
import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import '../widgets/buttons/app_outlined_button.dart';
class Login extends StatefulWidget { class Login extends StatefulWidget {
static final String id = "/login"; static final String id = "/login";
@ -115,16 +113,17 @@ class _LoginState extends State<Login> {
user: _user, user: _user,
host: _settingProvider.host, host: _settingProvider.host,
); );
if (status >= 200 && status < 300) { if (status >= 200 && status < 300 && _userProvider.user?.userName != null) {
_settingProvider.setUser(_userProvider.user); _settingProvider.setUser(_userProvider.user);
// if (_userProvider.user.isActive) // if (_userProvider.user.isActive)
Navigator.of(context).pushNamed(LandPage.id); Navigator.of(context).pushNamed(LandPage.id);
// else // else
// Fluttertoast.showToast(msg: _subtitle.activationAlert); // Fluttertoast.showToast(msg: _subtitle.activationAlert);
} else { } else {
if(status >= 400 && status < 500) return; if (status >= 400 && status < 500) return;
String errorMessage = status == 400 ? _subtitle.wrongEmailOrPassword : HttpStatusManger.getStatusMessage(status: status, subtitle: _subtitle); String errorMessage =
status == 400 || _userProvider.user?.userName == null ? _subtitle.wrongEmailOrPassword : HttpStatusManger.getStatusMessage(status: status, subtitle: _subtitle);
ScaffoldMessenger.of(context).showSnackBar(SnackBar( ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text(errorMessage), content: Text(errorMessage),
)); ));

Loading…
Cancel
Save