Merge branch 'master' into zaid-development

merge-requests/21/head
zaid_daoud 2 years ago
commit af99b1cc44

@ -34,14 +34,16 @@ class DeviceTransferApiClient {
required DeviceTransfer model, required DeviceTransfer model,
}) async { }) async {
Map<String, dynamic> body = { Map<String, dynamic> body = {
"uid": UserApiClient().user?.id.toString() ?? "", "id": model.id??0,
"token": UserApiClient().user?.token ?? "", "assetId": model.device?.id,
"serial_id": model.device?.id ?? "", "destSiteId":model.receiver?.client?.id,
"destination_client": model.receiver?.client?.id ?? "", "senderSiteId":model.sender?.userId,
"destination_department": model.receiver?.department?.id ?? "", "receiverAssignedEmployeeId": model.receiver?.userId
}; };
final response = await ApiClient().postJsonForResponse("${URLs.host1}${URLs.requestDeviceTransfer}", body, isFormData: true); print(body);
final response = await ApiClient().postJsonForResponse("${URLs.host1}${URLs.requestDeviceTransfer}", body, isFormData: false);
return DeviceTransfer.fromJson(json.decode(utf8.decode(response.bodyBytes))[0]); return DeviceTransfer.fromJson(json.decode(utf8.decode(response.bodyBytes))[0]);
} }
@ -49,18 +51,20 @@ class DeviceTransferApiClient {
Future<DeviceTransfer> updateRequest({ Future<DeviceTransfer> updateRequest({
required bool isSender, required bool isSender,
required String requestId, required String requestId,
required DeviceTransfer? oldModel, required DeviceTransfer oldModel,
required DeviceTransferInfo newModel, required DeviceTransferInfo newModel,
}) async { }) async {
Map<String, dynamic> body = { Map<String, dynamic> body = {
"uid": UserApiClient().user?.id.toString(), "id": oldModel.id??0,
"token": UserApiClient().user?.token, "assetId": oldModel.device?.id,
"current_user": UserApiClient().user?.id, "destSiteId":oldModel.receiver?.client?.id,
"senderSiteId":oldModel.sender?.userId,
"receiverAssignedEmployeeId": oldModel.receiver?.userId
}; };
body.addAll(newModel.toJson(isSender)); body.addAll(newModel.toJson(isSender));
final response = await ApiClient().postJsonForResponse("${URLs.host1}${URLs.updateDeviceTransfer}/$requestId", body); final response = await ApiClient().putJsonForResponse("${URLs.host1}${URLs.updateDeviceTransfer}", body);
return DeviceTransfer.fromJson(json.decode(utf8.decode(response.bodyBytes))[0]); return DeviceTransfer.fromJson(json.decode(utf8.decode(response.bodyBytes))[0]);
} }

@ -0,0 +1,22 @@
import 'dart:convert';
import 'package:http/http.dart';
import '../controllers/api_routes/urls.dart';
import '../models/lookup.dart';
import 'api_client.dart';
class GazCylinderSizeApiClient{
static final GazCylinderSizeApiClient _instance = GazCylinderSizeApiClient._internal();
GazCylinderSizeApiClient._internal();
factory GazCylinderSizeApiClient() => _instance;
Future getData() async {
Response response= await ApiClient().getJsonForResponse("${URLs.host1}${URLs.getGasCylinderSize}");
var categoriesListJson = json.decode(response.body);
return categoriesListJson['data'].map<Lookup>((item) => Lookup.fromJson(item)).toList();
}
}

@ -71,7 +71,7 @@ class DeviceTransferProvider extends LoadingNotifier {
required User user, required User user,
required bool isSender, required bool isSender,
required String requestId, required String requestId,
required DeviceTransfer? oldModel, required DeviceTransfer oldModel,
required DeviceTransferInfo newModel, required DeviceTransferInfo newModel,
}) async { }) async {
reset(); reset();

@ -16,7 +16,6 @@ class HospitalsProvider extends LoadingNotifier {
//reset provider data //reset provider data
void reset() { void reset() {
_hospitals.clear();
_stateCode = null; _stateCode = null;
} }
@ -36,13 +35,16 @@ class HospitalsProvider extends LoadingNotifier {
required String? title, required String? title,
}) async { }) async {
waitApiRequest(() async { waitApiRequest(() async {
_hospitals = []; _hospitals.clear();
_hospitals.addAll(await HospitalsApiClient().getHospitals(title: title ?? "", pageSize: _hospitals.length ~/ pageItemNumber)); _hospitals.addAll(await HospitalsApiClient().getHospitals(title: title ?? "", pageSize: _hospitals.length ~/ pageItemNumber));
notifyListeners(); notifyListeners();
}, },
onSuccess: (){ onSuccess: (){
_stateCode = 200; _stateCode = 200;
} },
onError: (error) {
_stateCode = error.error?.errorCode;
},
); );
} }

@ -4,15 +4,16 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:http/http.dart'; import 'package:http/http.dart';
import '../../../../../api/gaz_cylinder_size_api_client.dart';
import '../../../../../models/lookup.dart'; import '../../../../../models/lookup.dart';
import '../../../../../models/user.dart'; import '../../../../../models/user.dart';
import '../../../../api_routes/urls.dart'; import '../../../../api_routes/urls.dart';
import '../../../loading_notifier.dart';
class GasCylinderSizesProvider extends ChangeNotifier { class GasCylinderSizesProvider extends LoadingNotifier {
//reset provider data //reset provider data
void reset() { void reset() {
_items = null; _items.clear();
_loading = null;
_stateCode = null; _stateCode = null;
} }
@ -25,57 +26,20 @@ class GasCylinderSizesProvider extends ChangeNotifier {
// contain user data // contain user data
// when user not login or register _user = null // when user not login or register _user = null
List<Lookup>? _items; List<Lookup> _items=[];
List<Lookup>? get items => _items; List<Lookup> get items => _items;
// when categories in-process _loading = true Future getData() async {
// done _loading = true waitApiRequest(() async {
// failed _loading = false _items = await GazCylinderSizeApiClient().getData();
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({
required String? host,
required User? user,
}) async {
if (_loading == true) {
return -2;
}
_loading = true;
notifyListeners();
Response response;
try {
response = await get(
Uri.parse((host ?? '') + URLs.getGasCylinderSize),
);
_stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
// client's request was successfully received
var categoriesListJson = json.decode(response.body);
_items = categoriesListJson['data'].map<Lookup>((item) => Lookup.fromJson(item)).toList();
}
_loading = false;
notifyListeners(); notifyListeners();
return response.statusCode; },
} catch (error) { onSuccess: (){
_loading = false; _stateCode = 200;
_stateCode = -1;
notifyListeners(); notifyListeners();
return -1;
} }
);
} }
} }

@ -25,19 +25,19 @@ class Device {
this.warrantyDate, this.warrantyDate,
}); });
factory Device.fromJson(Map<String, dynamic> parsedJson) { factory Device.fromJson(Map<String, dynamic>? parsedJson) {
return Device( return Device(
id: parsedJson["nid"] ?? parsedJson["id"].toString(), id: parsedJson?["nid"] ?? parsedJson?["id"]?.toString(),
serialNumber: parsedJson["sn"] ?? parsedJson["value"], serialNumber: parsedJson?["sn"] ?? parsedJson?["assetSerialNo"],
number: parsedJson["asset_no"], number: parsedJson?["asset_no"],
brand: parsedJson["brand"] as String?, brand: parsedJson?["modelDefinition"]["manufacturerName"] as String?,
model: parsedJson["model"] as String?, model: parsedJson?["modelDefinition"]["modelName"] as String?,
productionDate: getDateFromString(parsedJson["production_date"]), productionDate: getDateFromString(parsedJson?["production_date"]),
supplyDate: getDateFromString(parsedJson["supply_date "]), supplyDate: getDateFromString(parsedJson?["supply_date "]),
installDate: getDateFromString(parsedJson["install_date "]), installDate: getDateFromString(parsedJson?["install_date "]),
receivingDate: getDateFromString(parsedJson["receving_date "]), receivingDate: getDateFromString(parsedJson?["receving_date "]),
operationDate: getDateFromString(parsedJson["operation_date "]), operationDate: getDateFromString(parsedJson?["operation_date "]),
warrantyDate: getDateFromString(parsedJson["warranty_date "]), warrantyDate: getDateFromString(parsedJson?["warranty_date "]),
); );
} }

@ -9,8 +9,8 @@ class Hospital {
factory Hospital.fromJson(Map<String, dynamic> parsedJson) { factory Hospital.fromJson(Map<String, dynamic> parsedJson) {
return Hospital( return Hospital(
id: parsedJson["nid"] ?? parsedJson["id"], id: parsedJson["id"],
name: parsedJson["client_name"] ?? parsedJson["value"], name:parsedJson["custName"],
); );
} }

@ -24,9 +24,9 @@ import '../../widgets/status/gas_refill/gas_status.dart';
import '../../widgets/titles/app_sub_title.dart'; import '../../widgets/titles/app_sub_title.dart';
class UpdateDeviceTransfer extends StatefulWidget { class UpdateDeviceTransfer extends StatefulWidget {
final DeviceTransfer? model; final DeviceTransfer model;
final bool? isSender; final bool? isSender;
const UpdateDeviceTransfer({Key? key, this.model, this.isSender}) : super(key: key); const UpdateDeviceTransfer({Key? key, required this.model, this.isSender}) : super(key: key);
@override @override
State<UpdateDeviceTransfer> createState() => _UpdateDeviceTransferState(); State<UpdateDeviceTransfer> createState() => _UpdateDeviceTransferState();

@ -20,28 +20,31 @@ class SingleHospitalPicker extends StatefulWidget {
} }
class _SingleHospitalPickerState extends State<SingleHospitalPicker> { class _SingleHospitalPickerState extends State<SingleHospitalPicker> {
HospitalsProvider? _hospitalsProvider; late HospitalsProvider _hospitalsProvider;
SettingProvider? _settingProvider; SettingProvider? _settingProvider;
List<Hospital> _searchableList = []; List<Hospital> _searchableList = [];
bool _firstTime = true; bool _firstTime = true;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
_hospitalsProvider = Provider.of<HospitalsProvider>(context); _hospitalsProvider = Provider.of<HospitalsProvider>(context, listen: true);
_settingProvider = Provider.of<SettingProvider>(context); _settingProvider = Provider.of<SettingProvider>(context);
if (_firstTime && _hospitalsProvider?.hospitals != null) { if (_firstTime) {
_searchableList.addAll(_hospitalsProvider?.hospitals ?? []); _searchableList.addAll(_hospitalsProvider.hospitals);
_firstTime = false; setState(() {});
} }
Subtitle? _subtitle = AppLocalization.of(context)?.subtitle; Subtitle? _subtitle = AppLocalization.of(context)?.subtitle;
return Scaffold( return Scaffold(
resizeToAvoidBottomInset: false, resizeToAvoidBottomInset: false,
body: LoadingManager( body: LoadingManager(
isLoading: _hospitalsProvider?.loading, isLoading: _hospitalsProvider.loading,
stateCode: _hospitalsProvider?.stateCode, stateCode: _hospitalsProvider.stateCode,
isFailedLoading: _hospitalsProvider?.hospitals == null,
onRefresh: () async { onRefresh: () async {
_hospitalsProvider?.reset(); _hospitalsProvider.reset();
await _hospitalsProvider?.getHospitals(title: ''); await _hospitalsProvider.getHospitals(title: '');
_searchableList.addAll(_hospitalsProvider.hospitals);
}, },
child: Column( child: Column(
children: [ children: [
@ -56,7 +59,7 @@ class _SingleHospitalPickerState extends State<SingleHospitalPicker> {
suffixIcon: Icon(Icons.search_rounded), suffixIcon: Icon(Icons.search_rounded),
onChange: (value) { onChange: (value) {
_searchableList.clear(); _searchableList.clear();
_searchableList.addAll(_hospitalsProvider!.hospitals!.where((element) => element.name!.toLowerCase().contains(value.toLowerCase())).toList()); _searchableList.addAll(_hospitalsProvider.hospitals.where((element) => element.name!.toLowerCase().contains(value.toLowerCase())).toList());
setState(() {}); setState(() {});
}, },
), ),

@ -25,15 +25,12 @@ class GasCylinderSizeMenu extends StatelessWidget {
final userProvider = Provider.of<UserProvider>(context); final userProvider = Provider.of<UserProvider>(context);
final menuProvider = Provider.of<GasCylinderSizesProvider>(context); final menuProvider = Provider.of<GasCylinderSizesProvider>(context);
return LoadingManager( return LoadingManager(
isLoading: menuProvider.isLoading, isLoading: menuProvider.loading,
isFailedLoading: menuProvider.items == null, isFailedLoading: menuProvider.items == null,
stateCode: menuProvider.stateCode, stateCode: menuProvider.stateCode,
onRefresh: () async { onRefresh: () async {
menuProvider.reset(); menuProvider.reset();
await menuProvider.getData( await menuProvider.getData();
user: UserApiClient().user,
host: settingProvider.host,
);
}, },
child: SingleStatusMenu( child: SingleStatusMenu(
initialStatus: initialValue, initialStatus: initialValue,

Loading…
Cancel
Save