equipment status added.

merge-requests/31/head
Sikander Saleem 3 years ago
parent 79d987d49e
commit 13c5b3891a

@ -336,7 +336,7 @@ class ServiceRequestsProvider extends ChangeNotifier {
"reviewComment": report.reviewComment ?? "", "reviewComment": report.reviewComment ?? "",
"comment": report.comment, "comment": report.comment,
"attachmentsWorkOrder": request.devicePhotos?.map((e) => {"name": e})?.toList(), "attachmentsWorkOrder": request.devicePhotos?.map((e) => {"name": e})?.toList(),
"equipmentStatus": report.status?.toMap(), "equipmentStatus": report.equipmentStatus?.toMap(),
"suppEngineerWorkOrders": null, "suppEngineerWorkOrders": null,
"engSignature": report.signatureEngineer, "engSignature": report.signatureEngineer,
"nurseSignature": report.signatureNurse, "nurseSignature": report.signatureNurse,

@ -0,0 +1,75 @@
import 'dart:convert';
import 'package:test_sa/controllers/api_routes/api_manager.dart';
import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/user.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart';
import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/user.dart';
class ServiceReportEquipmentStatusProvider extends ChangeNotifier {
//reset provider data
void reset() {
_status = null;
_stateCode = null;
}
// state code of current request to defied error message
// like 400 customer request failed
// 500 service not available
int _stateCode;
int get stateCode => _stateCode;
// contain user data
// when user not login or register _user = null
List<Lookup> _status;
List<Lookup> get statuses => _status;
// when categories in-process _loading = true
// done _loading = true
// failed _loading = false
bool _loading;
bool get isLoading => _loading;
set isLoading(bool isLoading) {
_loading = isLoading;
notifyListeners();
}
/// return -2 if request in progress
/// return -1 if error happen when sending request
/// return state code if request complete may be 200, 404 or 403
/// for more details check http state manager
/// lib\controllers\http_status_manger\http_status_manger.dart
Future<int> getTypes({String host, User user}) async {
if (_loading == true) return -2;
_loading = true;
notifyListeners();
Response response;
try {
response = await ApiManager.instance.get(URLs.equipmentStatus);
_stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
// client's request was successfully received
List categoriesListJson = json.decode(response.body)["data"];
_status = categoriesListJson.map((type) => Lookup.fromJson(type)).toList();
}
_loading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
_loading = false;
_stateCode = -1;
notifyListeners();
return -1;
}
}
}

@ -22,6 +22,7 @@ import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/ga
import 'package:test_sa/controllers/providers/api/status_drop_down/pentry/pentry_task_status_provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/pentry/pentry_task_status_provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/pentry/pentry_visit_status_provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/pentry/pentry_visit_status_provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_defect_types_provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_defect_types_provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_equipment_status_provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_priority_provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_priority_provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/service_reqest/service_request_first_action_provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/service_reqest/service_request_first_action_provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/service_reqest/service_request_loan_availability_provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/service_reqest/service_request_loan_availability_provider.dart';
@ -96,6 +97,7 @@ class MyApp extends StatelessWidget {
ChangeNotifierProvider(create: (_) => PartsProvider()), ChangeNotifierProvider(create: (_) => PartsProvider()),
ChangeNotifierProvider(create: (_) => ServiceReportReasonsProvider()), ChangeNotifierProvider(create: (_) => ServiceReportReasonsProvider()),
ChangeNotifierProvider(create: (_) => ServiceReportStatusProvider()), ChangeNotifierProvider(create: (_) => ServiceReportStatusProvider()),
ChangeNotifierProvider(create: (_) => ServiceReportEquipmentStatusProvider()),
ChangeNotifierProvider(create: (_) => ServiceReportTypesProvider()), ChangeNotifierProvider(create: (_) => ServiceReportTypesProvider()),
ChangeNotifierProvider(create: (_) => ServiceStatusProvider()), ChangeNotifierProvider(create: (_) => ServiceStatusProvider()),
ChangeNotifierProvider(create: (_) => ServiceReportLastCallsProvider()), ChangeNotifierProvider(create: (_) => ServiceReportLastCallsProvider()),

@ -19,7 +19,7 @@ class ServiceReport {
Lookup callLastSituation; Lookup callLastSituation;
Lookup repairLocation; Lookup repairLocation;
Engineer engineer; Engineer engineer;
Lookup status; Lookup equipmentStatus;
Lookup type; Lookup type;
Lookup reason; Lookup reason;
int faultDescriptionId; int faultDescriptionId;
@ -49,7 +49,7 @@ class ServiceReport {
this.visitDate, this.visitDate,
this.endDate, this.endDate,
this.assetType, this.assetType,
this.status, this.equipmentStatus,
this.type, this.type,
this.faultDescriptionId, this.faultDescriptionId,
//this.workHours, //this.workHours,
@ -83,7 +83,7 @@ class ServiceReport {
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 (equipmentStatus != null) _map["status"] = equipmentStatus?.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;
@ -144,7 +144,7 @@ class ServiceReport {
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 (equipmentStatus == 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;
@ -175,7 +175,7 @@ class ServiceReport {
assetType: Lookup.fromJson(parsedJson["assetType"]), assetType: Lookup.fromJson(parsedJson["assetType"]),
callLastSituation: Lookup.fromJson(parsedJson["calllastSituation"]), callLastSituation: Lookup.fromJson(parsedJson["calllastSituation"]),
reason: Lookup.fromJson(parsedJson["reason"]), reason: Lookup.fromJson(parsedJson["reason"]),
status: Lookup.fromJson(parsedJson["status"]), equipmentStatus: 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"]),

@ -31,6 +31,7 @@ import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import 'package:test_sa/views/widgets/parts/auto_complete_parts_field.dart'; import 'package:test_sa/views/widgets/parts/auto_complete_parts_field.dart';
import 'package:test_sa/views/widgets/parts/part_item.dart'; import 'package:test_sa/views/widgets/parts/part_item.dart';
import 'package:test_sa/views/widgets/status/employee/engineers_mune.dart'; import 'package:test_sa/views/widgets/status/employee/engineers_mune.dart';
import 'package:test_sa/views/widgets/status/report/service_report_equipment_status.dart';
import 'package:test_sa/views/widgets/status/report/service_report_last_call.dart'; import 'package:test_sa/views/widgets/status/report/service_report_last_call.dart';
import 'package:test_sa/views/widgets/status/report/service_report_reasons.dart'; import 'package:test_sa/views/widgets/status/report/service_report_reasons.dart';
import 'package:test_sa/views/widgets/status/report/service_report_status.dart'; import 'package:test_sa/views/widgets/status/report/service_report_status.dart';
@ -330,8 +331,9 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
ASubTitle(_subtitle.reportStatus), // ASubTitle(_subtitle.reportStatus),
_validate && _serviceReport.status == null ASubTitle("Equipment Status"),
_validate && _serviceReport.equipmentStatus == null
? ASubTitle( ? ASubTitle(
_subtitle.requiredWord, _subtitle.requiredWord,
color: Colors.red, color: Colors.red,
@ -340,13 +342,20 @@ class _CreateServiceReportState extends State<CreateServiceReport> with TickerPr
const SizedBox( const SizedBox(
height: 4, height: 4,
), ),
ServiceReportStatusMenu( // ServiceReportStatusMenu(
// report: _serviceReport,
// request: widget.request,
// onSelect: (status) {
// _serviceReport.status = status;
// },
// ),
ServiceReportEquipmentStatusMenu(
report: _serviceReport, report: _serviceReport,
request: widget.request, request: widget.request,
onSelect: (status) { onSelect: (status) {
_serviceReport.status = status; _serviceReport.equipmentStatus = status;
}, },
), )
], ],
), ),
), ),

@ -295,7 +295,7 @@ class _EditServiceReportState extends State<EditServiceReport> with TickerProvid
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
ASubTitle(_subtitle.reportStatus), ASubTitle(_subtitle.reportStatus),
_validate && _serviceReport.status == null _validate && _serviceReport.equipmentStatus == null
? ASubTitle( ? ASubTitle(
_subtitle.requiredWord, _subtitle.requiredWord,
color: Colors.red, color: Colors.red,
@ -308,7 +308,7 @@ class _EditServiceReportState extends State<EditServiceReport> with TickerProvid
report: _serviceReport, report: _serviceReport,
request: widget.request, request: widget.request,
onSelect: (status) { onSelect: (status) {
_serviceReport.status = status; _serviceReport.equipmentStatus = status;
}, },
), ),
], ],

@ -0,0 +1,76 @@
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_equipment_status_provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/service_report.dart';
import 'package:test_sa/models/service_request/service_request.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import 'package:test_sa/views/widgets/status/single_status_menu.dart';
class ServiceReportEquipmentStatusMenu extends StatefulWidget {
final Function(Lookup) onSelect;
final ServiceReport report;
final ServiceRequest request;
const ServiceReportEquipmentStatusMenu({Key key, this.onSelect, this.report, this.request}) : super(key: key);
@override
State<ServiceReportEquipmentStatusMenu> createState() => _ServiceReportEquipmentStatusMenuState();
}
class _ServiceReportEquipmentStatusMenuState extends State<ServiceReportEquipmentStatusMenu> {
bool firstTime = true;
@override
Widget build(BuildContext context) {
SettingProvider settingProvider = Provider.of<SettingProvider>(context);
UserProvider userProvider = Provider.of<UserProvider>(context);
ServiceReportEquipmentStatusProvider menuProvider = Provider.of<ServiceReportEquipmentStatusProvider>(context);
ServiceReportLastCallsProvider callsLastSituationsProvider = Provider.of<ServiceReportLastCallsProvider>(context);
if (firstTime) {
callsLastSituationsProvider.reset();
firstTime = false;
}
return LoadingManager(
isLoading: menuProvider.isLoading == true || callsLastSituationsProvider.isLoading == true,
isFailedLoading: menuProvider.statuses == null || callsLastSituationsProvider.calls == null,
stateCode: menuProvider.stateCode == null || callsLastSituationsProvider.stateCode == null ? null : max(menuProvider.stateCode ?? 0, callsLastSituationsProvider.stateCode ?? 0),
onRefresh: () async {
await callsLastSituationsProvider.getCalls(
user: userProvider.user,
host: settingProvider.host,
serviceStatus: widget.report.equipmentStatus?.id,
typeName: widget.report.type?.name,
id: widget.report.id,
woId: widget.request.id,
);
if (menuProvider.stateCode == null) {
menuProvider.reset();
await menuProvider.getTypes(user: userProvider.user, host: settingProvider.host);
setState(() {});
}
},
child: SingleStatusMenu(
statuses: menuProvider.statuses,
initialStatus: widget.report.equipmentStatus,
onSelect: (status) {
widget.report.callLastSituation = null;
callsLastSituationsProvider.getCalls(
user: userProvider.user,
host: settingProvider.host,
serviceStatus: status.id,
id: widget.report.id,
woId: widget.request.id,
typeName: widget.report.type?.name,
);
widget.onSelect(status);
},
));
}
}

@ -44,7 +44,7 @@ class _ServiceReportStatusMenuState extends State<ServiceReportStatusMenu> {
await callsLastSituationsProvider.getCalls( await callsLastSituationsProvider.getCalls(
user: userProvider.user, user: userProvider.user,
host: settingProvider.host, host: settingProvider.host,
serviceStatus: widget.report.status?.id, serviceStatus: widget.report.equipmentStatus?.id,
typeName: widget.report.type?.name, typeName: widget.report.type?.name,
id: widget.report.id, id: widget.report.id,
woId: widget.request.id, woId: widget.request.id,
@ -57,7 +57,7 @@ class _ServiceReportStatusMenuState extends State<ServiceReportStatusMenu> {
}, },
child: SingleStatusMenu( child: SingleStatusMenu(
statuses: menuProvider.statuses, statuses: menuProvider.statuses,
initialStatus: widget.report.status, initialStatus: widget.report.equipmentStatus,
onSelect: (status) { onSelect: (status) {
widget.report.callLastSituation = null; widget.report.callLastSituation = null;
callsLastSituationsProvider.getCalls( callsLastSituationsProvider.getCalls(

Loading…
Cancel
Save