You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.7 KiB
Dart
83 lines
2.7 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:test_sa/api/user_api_client.dart';
|
|
|
|
import '../controllers/api_routes/urls.dart';
|
|
import '../models/gas_refill/gas_refill_model.dart';
|
|
import 'api_client.dart';
|
|
|
|
class GasRefillApiClient {
|
|
static final GasRefillApiClient _instance = GasRefillApiClient._internal();
|
|
|
|
GasRefillApiClient._internal();
|
|
|
|
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}",
|
|
});
|
|
|
|
// client's request was successfully received
|
|
List requestsListJson = json.decode(utf8.decode(response.bodyBytes));
|
|
return requestsListJson.map((request) => GasRefillModel.fromJson(request)).toList();
|
|
}
|
|
|
|
Future<GasRefillModel> createModel({
|
|
required GasRefillModel model,
|
|
}) async {
|
|
Map<String, dynamic> body = {
|
|
"uid": UserApiClient().user?.id.toString(),
|
|
"token": UserApiClient().user?.token ?? "",
|
|
"title": model.title ?? "",
|
|
"status": "0", //model.status.value.toString(),
|
|
};
|
|
|
|
body["details"] = jsonEncode(model.details
|
|
?.map((model) => {
|
|
"type": model.type?.id.toString(),
|
|
"size": model.cylinderSize?.id.toString(),
|
|
"requsted_qty": model.requestedQuantity.toString(),
|
|
})
|
|
.toList());
|
|
|
|
final response = await ApiClient().postJsonForResponse(
|
|
"${URLs.host1}${URLs.requestGasRefill}",
|
|
body,
|
|
);
|
|
|
|
return GasRefillModel.fromJson(json.decode(utf8.decode(response.bodyBytes))[0]);
|
|
}
|
|
|
|
Future updateModel({
|
|
required GasRefillModel? oldModel,
|
|
required GasRefillModel newModel,
|
|
}) async {
|
|
Map<String, dynamic> body = {
|
|
"uid": UserApiClient().user?.id.toString(),
|
|
"token": UserApiClient().user?.token,
|
|
"title": newModel.title,
|
|
"status": newModel.status?.id.toString(),
|
|
};
|
|
|
|
body["details"] = 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(),
|
|
})
|
|
.toList());
|
|
|
|
final reponse = await ApiClient().postJsonForResponse("${URLs.host1}${URLs.updateGasRefill}/${newModel.id}", body);
|
|
|
|
oldModel?.fromGasRefillModel(newModel);
|
|
}
|
|
}
|