equipment status added.
parent
79d987d49e
commit
13c5b3891a
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
},
|
||||
));
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue