Update Service Request Done
parent
a499889603
commit
a219d81ccc
@ -0,0 +1,69 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:http/http.dart';
|
||||||
|
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';
|
||||||
|
|
||||||
|
class ServiceFirstActionProvider extends ChangeNotifier {
|
||||||
|
//reset provider data
|
||||||
|
void reset() {
|
||||||
|
_statuses = 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> _statuses;
|
||||||
|
List<Lookup> get items => _statuses;
|
||||||
|
|
||||||
|
// 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> getData({String host, User user}) async {
|
||||||
|
if (_loading == true) return -2;
|
||||||
|
_loading = true;
|
||||||
|
notifyListeners();
|
||||||
|
Response response;
|
||||||
|
try {
|
||||||
|
response = await ApiManager.instance.get(
|
||||||
|
URLs.getServiceFirstAction,
|
||||||
|
);
|
||||||
|
_stateCode = response.statusCode;
|
||||||
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
||||||
|
// client's request was successfully received
|
||||||
|
List categoriesListJson = json.decode(response.body)["data"];
|
||||||
|
_statuses = categoriesListJson.map((e) => Lookup.fromJson(e)).toList();
|
||||||
|
}
|
||||||
|
_loading = false;
|
||||||
|
notifyListeners();
|
||||||
|
return response.statusCode;
|
||||||
|
} catch (error) {
|
||||||
|
_loading = false;
|
||||||
|
_stateCode = -1;
|
||||||
|
notifyListeners();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,69 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:http/http.dart';
|
||||||
|
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';
|
||||||
|
|
||||||
|
class ServiceLoanAvailabilityProvider extends ChangeNotifier {
|
||||||
|
//reset provider data
|
||||||
|
void reset() {
|
||||||
|
_statuses = 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> _statuses;
|
||||||
|
List<Lookup> get items => _statuses;
|
||||||
|
|
||||||
|
// 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> getData({String host, User user}) async {
|
||||||
|
if (_loading == true) return -2;
|
||||||
|
_loading = true;
|
||||||
|
notifyListeners();
|
||||||
|
Response response;
|
||||||
|
try {
|
||||||
|
response = await ApiManager.instance.get(
|
||||||
|
URLs.getServiceLoanAvailability,
|
||||||
|
);
|
||||||
|
_stateCode = response.statusCode;
|
||||||
|
if (response.statusCode >= 200 && response.statusCode < 300) {
|
||||||
|
// client's request was successfully received
|
||||||
|
List categoriesListJson = json.decode(response.body)["data"];
|
||||||
|
_statuses = categoriesListJson.map((e) => Lookup.fromJson(e)).toList();
|
||||||
|
}
|
||||||
|
_loading = false;
|
||||||
|
notifyListeners();
|
||||||
|
return response.statusCode;
|
||||||
|
} catch (error) {
|
||||||
|
_loading = false;
|
||||||
|
_stateCode = -1;
|
||||||
|
notifyListeners();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,36 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:provider/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/views/widgets/loaders/loading_manager.dart';
|
||||||
|
import 'package:test_sa/views/widgets/status/single_status_menu.dart';
|
||||||
|
|
||||||
|
import '../../../../controllers/providers/api/status_drop_down/service_reqest/service_request_first_action_provider.dart';
|
||||||
|
|
||||||
|
class ServiceRequestedFirstAction extends StatelessWidget {
|
||||||
|
final Function(Lookup) onSelect;
|
||||||
|
final Lookup initialValue;
|
||||||
|
|
||||||
|
const ServiceRequestedFirstAction({Key key, this.onSelect, this.initialValue}) : super(key: key);
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
final settingProvider = Provider.of<SettingProvider>(context);
|
||||||
|
final userProvider = Provider.of<UserProvider>(context);
|
||||||
|
final menuProvider = Provider.of<ServiceFirstActionProvider>(context);
|
||||||
|
return LoadingManager(
|
||||||
|
isLoading: menuProvider.isLoading,
|
||||||
|
isFailedLoading: menuProvider.items == null,
|
||||||
|
stateCode: menuProvider.stateCode,
|
||||||
|
onRefresh: () async {
|
||||||
|
menuProvider.reset();
|
||||||
|
await menuProvider.getData(user: userProvider.user, host: settingProvider.host);
|
||||||
|
},
|
||||||
|
child: SingleStatusMenu(
|
||||||
|
initialStatus: initialValue,
|
||||||
|
statuses: menuProvider.items,
|
||||||
|
onSelect: onSelect,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,35 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:provider/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/views/widgets/loaders/loading_manager.dart';
|
||||||
|
import 'package:test_sa/views/widgets/status/single_status_menu.dart';
|
||||||
|
|
||||||
|
import '../../../../controllers/providers/api/status_drop_down/service_reqest/service_request_loan_availability_provider.dart';
|
||||||
|
|
||||||
|
class ServiceRequestedLoanAvailability extends StatelessWidget {
|
||||||
|
final Function(Lookup) onSelect;
|
||||||
|
final Lookup initialValue;
|
||||||
|
|
||||||
|
const ServiceRequestedLoanAvailability({Key key, this.onSelect, this.initialValue}) : super(key: key);
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
final settingProvider = Provider.of<SettingProvider>(context);
|
||||||
|
final userProvider = Provider.of<UserProvider>(context);
|
||||||
|
final menuProvider = Provider.of<ServiceLoanAvailabilityProvider>(context);
|
||||||
|
return LoadingManager(
|
||||||
|
isLoading: menuProvider.isLoading,
|
||||||
|
isFailedLoading: menuProvider.items == null,
|
||||||
|
stateCode: menuProvider.stateCode,
|
||||||
|
onRefresh: () async {
|
||||||
|
menuProvider.reset();
|
||||||
|
await menuProvider.getData(user: userProvider.user, host: settingProvider.host);
|
||||||
|
},
|
||||||
|
child: SingleStatusMenu(
|
||||||
|
initialStatus: initialValue,
|
||||||
|
statuses: menuProvider.items,
|
||||||
|
onSelect: onSelect,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue