changed to new apis

merge-requests/18/head
nextwo 3 years ago
parent 88a16c3175
commit 42028f14fd

@ -15,16 +15,21 @@ class DeviceTransferApiClient {
factory DeviceTransferApiClient() => _instance;
Future<List<DeviceTransfer>> getRequests({required List items, required int pageItemNumber}) async {
final response = await ApiClient().getJsonForResponse("${URLs.host1}${URLs.getDeviceTransfer}", queryParameters: {
"uid": "${UserApiClient().user?.id}",
"token": "${UserApiClient().user?.token}",
"page": "${(items.length) ~/ pageItemNumber}",
}, headers: {
"Content-Type": "application/json; charset=utf-8"
});
Map<String, dynamic> body= {
"uid": "${UserApiClient().user?.id}",
"token": "${UserApiClient().user?.token}",
"page": "${(items.length) ~/ pageItemNumber}",
};
final response = await ApiClient().postJsonForResponse(
"${URLs.host1}${URLs.getDeviceTransfer}",
body,
isFormData: false
);
List listJson = json.decode(utf8.decode(response.bodyBytes).replaceAll("\\", ""));
return listJson.map((request) => DeviceTransfer.fromJson(request)).toList();
Map listJson = json.decode(utf8.decode(response.bodyBytes).replaceAll("\\", ""));
print(listJson);
return listJson['data'].map<DeviceTransfer>((request) => DeviceTransfer.fromJson(request)).toList();
}
Future<DeviceTransfer> createRequest({

@ -14,19 +14,24 @@ class GasRefillApiClient {
factory GasRefillApiClient() => _instance;
Future<List<GasRefillModel>> getRequestPages({required List items, required int pageItemNumber}) async {
final response = await ApiClient().getJsonForResponse("${URLs.host1}${URLs.getGasRefill}", //body
headers: {
"Content-Type": "application/json; charset=utf-8"
},
queryParameters: {
"uid": "${UserApiClient().user?.id}",
"token": "${UserApiClient().user?.token}",
"page": "${(items.length) ~/ pageItemNumber}",
});
Map<String, dynamic> body = {
"uid": "${UserApiClient().user?.id}",
"token": "${UserApiClient().user?.token}",
"pageSize": "${(items.length) ~/ pageItemNumber}",
};
final response = await ApiClient().postJsonForResponse(
"${URLs.host1}${URLs.getGasRefill}",
body,
isFormData: false,
);
// client's request was successfully received
List requestsListJson = json.decode(utf8.decode(response.bodyBytes));
return requestsListJson.map((request) => GasRefillModel.fromJson(request)).toList();
var requestsListJson = json.decode(utf8.decode(response.bodyBytes));
print(requestsListJson);
return requestsListJson['data'].map<GasRefillModel>((request) => GasRefillModel.fromJson(request)).toList();
}
Future<GasRefillModel> createModel({
@ -39,17 +44,18 @@ class GasRefillApiClient {
"status": "0", //model.status.value.toString(),
};
body["details"] = jsonEncode(model.details
body["gazRefillDetails"] = jsonEncode(model.details
?.map((model) => {
"type": model.type?.id.toString(),
"size": model.cylinderSize?.id.toString(),
"requsted_qty": model.requestedQuantity.toString(),
"gasType": model.type?.id.toString(),
"cylinderSize": model.cylinderSize?.id.toString(),
"requestedQty": model.requestedQuantity.toString(),
})
.toList());
final response = await ApiClient().postJsonForResponse(
"${URLs.host1}${URLs.requestGasRefill}",
body,
isFormData: false
);
return GasRefillModel.fromJson(json.decode(utf8.decode(response.bodyBytes))[0]);
@ -66,12 +72,12 @@ class GasRefillApiClient {
"status": newModel.status?.id.toString(),
};
body["details"] = jsonEncode(newModel.details
body["gazRefillDetails"] = jsonEncode(newModel.details
?.map((model) => {
"type": model.type?.id.toString(),
"size": model.cylinderSize?.id.toString(),
"requsted_qty": model.requestedQuantity.toString(),
"deliverd_qty": model.deliveredQuantity.toString(),
"gasType": model.type?.id.toString(),
"cylinderSize": model.cylinderSize?.id.toString(),
"requestedQty": model.requestedQuantity.toString(),
"deliverdQty": model.deliveredQuantity.toString(),
})
.toList());

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

@ -92,7 +92,7 @@ class ServiceRequestApiClient {
body["date"] = newDate ?? '';
body["ass_emp"] = employee?.id?.toString() ?? '';
await ApiClient().postJsonForResponse('${URLs.host1}${URLs.updateRequestDate}', body);
request?.engineerName = employee?.label;
request?.engineerName = employee?.label.toString();
}
Future createServiceReport({required ServiceReport? report, required ServiceRequest? request}) async {

@ -41,17 +41,17 @@ class URLs {
static const getServiceReportDefectTypes = "/return/call/defect/type/list"; // get
//gas refill
static const getGasTypes = "/return/gas/refill/types"; // get
static const getGasCylinderSize = "/return/gas/refill/size/cylinder"; // get
static const getGasStatus = "/return/gas/refill/status"; // get
static const requestGasRefill = "/create/gas/refill"; // get
static const updateGasRefill = "/update/gas/refill/"; // get
static const getGasRefill = "/search/gas/refill"; // get
static const getGasTypes = "/mobile/Lookups/GetLookup?lookupEnum=606"; // get
static const getGasCylinderSize = "/mobile/Lookups/GetLookup?lookupEnum=608"; // get
static const getGasStatus = "/mobile/Lookups/GetLookup?lookupEnum=609"; // get
static const requestGasRefill = "/mobile/GazRefill/AddGazRefill"; // get
static const updateGasRefill = "/mobile/GazRefill/UpdateGazRefill"; // get
static const getGasRefill = "/mobile/GazRefill/GetGazRefills"; // get
//device transfer
static const requestDeviceTransfer = "/create/transfer/asset"; // get
static const updateDeviceTransfer = "/update/transfer/asset"; // get
static const getDeviceTransfer = "/search/transfer/asset"; // get
static const requestDeviceTransfer = "/mobile/AssetTransfer/AddAssetTransfer"; // get
static const updateDeviceTransfer = "/mobile/AssetTransfer/UpdateAssetTransfer"; // get
static const getDeviceTransfer = "/mobile/AssetTransfer/GetAssetTransfers"; // get
// employee
static const getEmployees = "/return/assigned/employee"; // get

@ -4,16 +4,18 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart';
import '../../../../../api/gas_types_api_client.dart';
import '../../../../../models/lookup.dart';
import '../../../../../models/user.dart';
import '../../../../api_routes/urls.dart';
import '../../../loading_notifier.dart';
class GasTypesProvider extends ChangeNotifier {
class GasTypesProvider extends LoadingNotifier {
//reset provider data
void reset() {
_items = null;
_loading = null;
_items?.clear();
_stateCode = null;
stopLoading();
}
// state code of current request to defied error message
@ -29,44 +31,14 @@ class GasTypesProvider extends ChangeNotifier {
List<Lookup>? get items => _items;
// 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({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.getGasTypes));
_stateCode = response.statusCode;
if (response.statusCode >= 200 && response.statusCode < 300) {
// client's request was successfully received
List categoriesListJson = json.decode(utf8.decode(response.bodyBytes));
_items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList();
}
_loading = false;
notifyListeners();
return response.statusCode;
} catch (error) {
_loading = false;
_stateCode = -1;
Future getData() async {
waitApiRequest(() async {
_items = await GasTypesApiClient().getData();
notifyListeners();
return -1;
}
},
onSuccess: () {
_stateCode = 200;
notifyListeners();
});
}
}

@ -1,5 +1,5 @@
class Department {
String? id;
int? id;
String? name;
Department({

@ -2,7 +2,7 @@ import 'device.dart';
import 'device_transfer_info.dart';
class DeviceTransfer {
String? id;
int? id;
String? userId;
String? title;
Device? device;
@ -46,8 +46,8 @@ class DeviceTransfer {
title: parsedJson["title"],
userId: parsedJson["uid"],
device: Device.fromJson(parsedJson["eq_sn"]),
sender: DeviceTransferInfo.fromJson(parsedJson, "sender_"),
receiver: DeviceTransferInfo.fromJson(parsedJson, "receiver_"),
sender: DeviceTransferInfo.fromJson(parsedJson, "sender"),
receiver: DeviceTransferInfo.fromJson(parsedJson, "receiver"),
);
}
}

@ -3,7 +3,7 @@ import '../hospital.dart';
import '../lookup.dart';
class DeviceTransferInfo {
String? userId;
int? userId;
String? comment;
Hospital? client;
Department? department;
@ -27,18 +27,18 @@ class DeviceTransferInfo {
Map<String, String> toJson(bool isSender) {
Map<String, String> body = {};
final baseKey = isSender ? "sender_" : "receiver_";
final baseKey = isSender ? "sender" : "receiver";
if (comment?.isNotEmpty ?? false) body["${baseKey}comment"] = comment!;
if (comment?.isNotEmpty ?? false) body["${baseKey}Comment"] = comment!;
if (workingHours?.isNotEmpty ?? false) {
body["${baseKey}working_hours"] = workingHours!;
body["${baseKey}WorkingHours"] = workingHours!;
}
if (travelingHours?.isNotEmpty ?? false) {
body["${baseKey}travel_hours"] = comment!;
body["${baseKey}TravelingHours"] = travelingHours!;
}
final status = this.status;
if (status != null) body["${baseKey}status"] = status.id.toString();
if (signature?.isNotEmpty ?? false) body["${baseKey}image"] = signature!;
if (status != null) body["${baseKey}MachineStatusId"] = status.id.toString();
if (signature?.isNotEmpty ?? false) body["${baseKey}AttachmentUrl"] = signature!;
return body;
}
@ -62,15 +62,15 @@ class DeviceTransferInfo {
factory DeviceTransferInfo.fromJson(Map<String, dynamic> parsedJson, String key) {
return DeviceTransferInfo(
workingHours: parsedJson["${key}working_hours"],
travelingHours: parsedJson["${key}travel_hours"],
name: parsedJson["${key}name"],
signature: parsedJson["${key}image"],
userId: parsedJson["${key}id"],
comment: parsedJson["${key}comment"],
client: Hospital.fromJson(parsedJson["${key}client"]),
department: Department.fromJson(parsedJson["${key}department"]),
status: Lookup.fromJson(parsedJson["${key}status"]),
workingHours: parsedJson["${key}WorkingHours"],
travelingHours: parsedJson["${key}TravelingHours"],
name: parsedJson["${key}SiteName"],
signature: parsedJson["${key}AttachmentUrl"],
userId: parsedJson["${key}SiteId"],
comment: parsedJson["${key}Comment"],
client: Hospital(id: parsedJson["${key}senderAssignedEmployeeId"], name: parsedJson["${key}senderAssignedEmployeeName"]),
department: Department(id: parsedJson["${key}DepartmentId"], name: parsedJson["${key}DepartmentName"]),
status: Lookup(id: parsedJson["${key}senderMachineStatusId"], label: parsedJson["${key}senderMachineStatusName"]),
);
}
}

@ -23,10 +23,10 @@ class GasRefillDetails {
factory GasRefillDetails.fromJson(Map<String, dynamic> parsedJson) {
return GasRefillDetails(
type: Lookup.fromJson(parsedJson["type"]),
cylinderSize: Lookup.fromJson(parsedJson["size"]),
requestedQuantity: parsedJson["requsted_qty"] == null ? 0 : int.tryParse(parsedJson["requsted_qty"].toString()) ?? 0,
deliveredQuantity: parsedJson["deliverd_qty"] == null ? 0 : int.tryParse(parsedJson["deliverd_qty"].toString()) ?? 0,
type: Lookup.fromJson(parsedJson["gasType"]),
cylinderSize: Lookup.fromJson(parsedJson["cylinderSize"]),
requestedQuantity: parsedJson["requestedQty"] == null ? 0 : int.tryParse(parsedJson["requestedQty"].toString()) ?? 0,
deliveredQuantity: parsedJson["deliverdQty"] == null ? 0 : int.tryParse(parsedJson["deliverdQty"].toString()) ?? 0,
model: null,
);
}

@ -2,7 +2,7 @@ import '../lookup.dart';
import 'gas_refill_details.dart';
class GasRefillModel {
String? id;
int? id;
String? userId;
String? clientName;
String? title;
@ -36,15 +36,15 @@ class GasRefillModel {
factory GasRefillModel.fromJson(Map<String, dynamic> parsedJson) {
List<GasRefillDetails> details = [];
if (parsedJson["details"] != null) {
List list = parsedJson["details"];
if (parsedJson["gazRefillDetails"] != null) {
List list = parsedJson["gazRefillDetails"];
details = list.map((e) => GasRefillDetails.fromJson(e)).toList();
}
return GasRefillModel(
id: parsedJson["id"],
userId: parsedJson["uid"],
title: parsedJson["title"],
clientName: parsedJson["client"],
clientName: parsedJson["site"]['custName'],
status: Lookup.fromJson(parsedJson["status"]),
details: details,
);

@ -25,14 +25,14 @@ class Lookup {
factory Lookup.fromJson(Map<String, dynamic> parsedJson) {
return Lookup(
label: parsedJson["value"],
label: parsedJson["name"],
id: parsedJson["id"] is int? ? parsedJson["id"] : int.tryParse(parsedJson["id"] ?? parsedJson["uid"]),
);
}
factory Lookup.fromIntIdJson(Map<String, dynamic> parsedJson) {
return Lookup(
label: parsedJson["value"],
label: parsedJson["name"],
id: parsedJson["id"],
);
}

@ -56,7 +56,7 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
_isLoading = true;
setState(() {});
int? status = await _deviceTransferProvider?.updateRequest(
user: UserApiClient().user ?? User(), host: _settingProvider?.host ?? "", requestId: widget.model?.id ?? "", isSender: widget.isSender ?? false, newModel: _formModel, oldModel: widget.model);
user: UserApiClient().user ?? User(), host: _settingProvider?.host ?? "", requestId: widget.model?.id.toString() ?? "", isSender: widget.isSender ?? false, newModel: _formModel, oldModel: widget.model);
_isLoading = false;
setState(() {});
if (status != null && status >= 200 && status < 300) {

@ -167,7 +167,7 @@ class _GasRefillDetailsState extends State<GasRefillDetails> {
textScaleFactor: AppStyle.getScaleFactor(context),
),
),
StatusLabel(label: _model.status?.label ?? "", color: AColors.getGasStatusColor(_model.status?.id ?? 0)),
StatusLabel(label: _model.status?.label.toString() ?? "", color: AColors.getGasStatusColor(_model.status?.id ?? 0)),
],
),
const SizedBox(

@ -3,6 +3,7 @@ import 'package:provider/provider.dart';
import '../../../../api/user_api_client.dart';
import '../../../../controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart';
import '../../../../controllers/providers/loading_notifier.dart';
import '../../../../controllers/providers/settings/setting_provider.dart';
import '../../../../controllers/providers/user_provider.dart';
import '../../../../models/lookup.dart';
@ -21,16 +22,14 @@ class GasTypeMenu extends StatelessWidget {
@override
Widget build(BuildContext context) {
final settingProvider = Provider.of<SettingProvider>(context);
final userProvider = Provider.of<UserProvider>(context);
final menuProvider = Provider.of<GasTypesProvider>(context);
return LoadingManager(
isLoading: menuProvider.isLoading,
isLoading: GasTypesProvider().loading,
isFailedLoading: menuProvider.items == null,
stateCode: menuProvider.stateCode,
onRefresh: () async {
menuProvider.reset();
await menuProvider.getData(user: UserApiClient().user, host: settingProvider.host);
await menuProvider.getData();
},
child: SingleStatusMenu(
initialStatus: initialValue,

Loading…
Cancel
Save