Skip to content

Commit 41e88c1

Browse files
committed
All Setting Options is intergerated other than Batch request
1 parent 7327073 commit 41e88c1

File tree

2 files changed

+168
-3
lines changed

2 files changed

+168
-3
lines changed
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
// To parse this JSON data, do
2+
//
3+
// final settingOption = settingOptionFromJson(jsonString);
4+
5+
import 'dart:convert';
6+
7+
List<SettingOption> settingOptionFromJson(String str) =>
8+
List<SettingOption>.from(
9+
json.decode(str).map((x) => SettingOption.fromJson(x)));
10+
11+
String settingOptionToJson(List<SettingOption> data) =>
12+
json.encode(List<dynamic>.from(data.map((x) => x.toJson())));
13+
14+
class SettingOption {
15+
SettingOption({
16+
this.id,
17+
this.label,
18+
this.description,
19+
this.type,
20+
this.settingOptionDefault,
21+
this.tip,
22+
this.value,
23+
this.links,
24+
this.options,
25+
});
26+
27+
String id;
28+
String label;
29+
String description;
30+
String type;
31+
String settingOptionDefault;
32+
String tip;
33+
String value;
34+
Links links;
35+
Map<String, String> options;
36+
37+
factory SettingOption.fromJson(Map<String, dynamic> json) => SettingOption(
38+
id: json["id"],
39+
label: json["label"],
40+
description: json["description"],
41+
type: json["type"],
42+
settingOptionDefault: json["default"],
43+
tip: json["tip"] == null ? null : json["tip"],
44+
value: json["value"],
45+
links: Links.fromJson(json["_links"]),
46+
options: json["options"] == null
47+
? null
48+
: Map.from(json["options"])
49+
.map((k, v) => MapEntry<String, String>(k, v)),
50+
);
51+
52+
Map<String, dynamic> toJson() => {
53+
"id": id,
54+
"label": label,
55+
"description": description,
56+
"type": type,
57+
"default": settingOptionDefault,
58+
"tip": tip == null ? null : tip,
59+
"value": value,
60+
"_links": links.toJson(),
61+
"options": options == null
62+
? null
63+
: Map.from(options).map((k, v) => MapEntry<String, dynamic>(k, v)),
64+
};
65+
}
66+
67+
class Links {
68+
Links({
69+
this.self,
70+
this.collection,
71+
});
72+
73+
List<Collection> self;
74+
List<Collection> collection;
75+
76+
factory Links.fromJson(Map<String, dynamic> json) => Links(
77+
self: List<Collection>.from(
78+
json["self"].map((x) => Collection.fromJson(x))),
79+
collection: List<Collection>.from(
80+
json["collection"].map((x) => Collection.fromJson(x))),
81+
);
82+
83+
Map<String, dynamic> toJson() => {
84+
"self": List<dynamic>.from(self.map((x) => x.toJson())),
85+
"collection": List<dynamic>.from(collection.map((x) => x.toJson())),
86+
};
87+
}
88+
89+
class Collection {
90+
Collection({
91+
this.href,
92+
});
93+
94+
String href;
95+
96+
factory Collection.fromJson(Map<String, dynamic> json) => Collection(
97+
href: json["href"],
98+
);
99+
100+
Map<String, dynamic> toJson() => {
101+
"href": href,
102+
};
103+
}

lib/woosignal.dart

Lines changed: 65 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ library woosignal;
1515
// IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
1616
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
1717

18+
import 'package:flutter/cupertino.dart';
1819
import 'package:woosignal/networking/api_provider.dart';
1920
import 'package:woosignal/helpers/shared_pref.dart';
2021
import 'package:woosignal/models/response/products.dart';
@@ -31,6 +32,7 @@ import 'package:woosignal/models/response/tax_classes.dart';
3132
import 'package:woosignal/models/response/shipping_zone.dart';
3233
import 'package:woosignal/models/response/shipping_method.dart';
3334
import 'package:woosignal/models/payload/order_wc.dart';
35+
import 'package:woosignal/models/response/setting_option.dart';
3436

3537
class WooSignal {
3638
ApiProvider _apiProvider;
@@ -154,16 +156,15 @@ class WooSignal {
154156
}
155157

156158
/// https://woosignal.com/docs/api/1.0/products#retrive-a-product-api-call
157-
Future<Product> retrieveProduct(
158-
{int id}) async {
159+
Future<Product> retrieveProduct({int id}) async {
159160
Map<String, dynamic> payload = {};
160161

161162
_printLog("Parameters: " + payload.toString());
162163
payload = _standardPayload("get", payload, "products/${id.toString()}");
163164

164165
Product product;
165166
await _apiProvider.post("/request", payload).then((json) {
166-
product = Product.fromJson(json);
167+
product = Product.fromJson(json);
167168
});
168169
_printLog(product.toString());
169170
return product;
@@ -709,4 +710,65 @@ class WooSignal {
709710
_printLog(payloadRsp.toString());
710711
return payloadRsp;
711712
}
713+
714+
// Doc link: https://woosignal.com/docs/api/1.0/setting-options
715+
// Retrieve a setting option
716+
// This API lets you retrieve and view a specific setting option.
717+
718+
Future<SettingOption> retrieveSettingOptions(
719+
{@required String groupid, @required String id}) async {
720+
Map<String, dynamic> payload = {};
721+
722+
_printLog("Parameters: " + payload.toString());
723+
payload = _standardPayload(
724+
"get", payload, "settings/${groupid.toString()}/${id.toString()}");
725+
726+
SettingOption settingOption;
727+
await _apiProvider.post("/request", payload).then((json) {
728+
settingOption = SettingOption.fromJson(json);
729+
});
730+
_printLog(settingOption.toString());
731+
return settingOption;
732+
}
733+
734+
// Retrieve a setting option
735+
// This API lets you retrieve and view a specific setting option.
736+
Future<List<SettingOption>> getSettingOptions({String groupId}) async {
737+
Map<String, dynamic> payload = {};
738+
739+
_printLog("Parameters: " + payload.toString());
740+
payload =
741+
_standardPayload("get", payload, "settings/${groupId.toString()}");
742+
743+
List<SettingOption> settingOptions = [];
744+
await _apiProvider.post("/request", payload).then((json) {
745+
settingOptions =
746+
(json as List).map((i) => SettingOption.fromJson(i)).toList();
747+
});
748+
_printLog(settingOptions.toString());
749+
return settingOptions;
750+
}
751+
752+
// Update a setting option
753+
// This API lets you make changes to a setting option.
754+
Future<SettingOption> updateSettinOptions(String groupid, String id,
755+
{Map<String, dynamic> data}) async {
756+
Map<String, dynamic> payload = data;
757+
758+
_printLog(payload.toString());
759+
payload = _standardPayload(
760+
"put", payload, "settings/${groupid.toString()}/${id.toString}");
761+
762+
SettingOption settingOption;
763+
await _apiProvider.post("/request", payload).then((json) {
764+
settingOption = SettingOption.fromJson(json);
765+
});
766+
_printLog(settingOption.toString());
767+
return settingOption;
768+
}
769+
// Batch update setting options
770+
// This API helps you to batch update multiple setting options.
771+
772+
// Note: By default it's limited to up to 100 objects to be created, updated or deleted.
773+
712774
}

0 commit comments

Comments
 (0)