Skip to content

Commit 5c9640b

Browse files
committed
Order Note Module is done. If having error kindly tell me.
1 parent 7327073 commit 5c9640b

File tree

2 files changed

+176
-3
lines changed

2 files changed

+176
-3
lines changed
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
// To parse this JSON data, do
2+
//
3+
// final orderNote = orderNoteFromJson(jsonString);
4+
5+
import 'dart:convert';
6+
7+
OrderNote orderNoteFromJson(String str) => OrderNote.fromJson(json.decode(str));
8+
9+
String orderNoteToJson(OrderNote data) => json.encode(data.toJson());
10+
11+
class OrderNote {
12+
OrderNote({
13+
this.id,
14+
this.author,
15+
this.dateCreated,
16+
this.dateCreatedGmt,
17+
this.note,
18+
this.customerNote,
19+
this.links,
20+
});
21+
22+
int id;
23+
String author;
24+
DateTime dateCreated;
25+
DateTime dateCreatedGmt;
26+
String note;
27+
bool customerNote;
28+
Links links;
29+
30+
factory OrderNote.fromJson(Map<String, dynamic> json) => OrderNote(
31+
id: json["id"],
32+
author: json["author"],
33+
dateCreated: DateTime.parse(json["date_created"]),
34+
dateCreatedGmt: DateTime.parse(json["date_created_gmt"]),
35+
note: json["note"],
36+
customerNote: json["customer_note"],
37+
links: Links.fromJson(json["_links"]),
38+
);
39+
40+
Map<String, dynamic> toJson() => {
41+
"id": id,
42+
"author": author,
43+
"date_created": dateCreated.toIso8601String(),
44+
"date_created_gmt": dateCreatedGmt.toIso8601String(),
45+
"note": note,
46+
"customer_note": customerNote,
47+
"_links": links.toJson(),
48+
};
49+
}
50+
51+
class Links {
52+
Links({
53+
this.self,
54+
this.collection,
55+
this.up,
56+
});
57+
58+
List<Collection> self;
59+
List<Collection> collection;
60+
List<Collection> up;
61+
62+
factory Links.fromJson(Map<String, dynamic> json) => Links(
63+
self: List<Collection>.from(
64+
json["self"].map((x) => Collection.fromJson(x))),
65+
collection: List<Collection>.from(
66+
json["collection"].map((x) => Collection.fromJson(x))),
67+
up: List<Collection>.from(
68+
json["up"].map((x) => Collection.fromJson(x))),
69+
);
70+
71+
Map<String, dynamic> toJson() => {
72+
"self": List<dynamic>.from(self.map((x) => x.toJson())),
73+
"collection": List<dynamic>.from(collection.map((x) => x.toJson())),
74+
"up": List<dynamic>.from(up.map((x) => x.toJson())),
75+
};
76+
}
77+
78+
class Collection {
79+
Collection({
80+
this.href,
81+
});
82+
83+
String href;
84+
85+
factory Collection.fromJson(Map<String, dynamic> json) => Collection(
86+
href: json["href"],
87+
);
88+
89+
Map<String, dynamic> toJson() => {
90+
"href": href,
91+
};
92+
}

lib/woosignal.dart

Lines changed: 84 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ 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';
19+
import 'package:woosignal/models/response/order_notes.dart';
1820
import 'package:woosignal/networking/api_provider.dart';
1921
import 'package:woosignal/helpers/shared_pref.dart';
2022
import 'package:woosignal/models/response/products.dart';
@@ -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,84 @@ class WooSignal {
709710
_printLog(payloadRsp.toString());
710711
return payloadRsp;
711712
}
713+
714+
// Retrieve an order note
715+
// This API lets you retrieve and view a specific note from an order
716+
Future<OrderNote> retrieveOrderNote({
717+
@required int orderId,
718+
@required int noteId,
719+
}) async {
720+
Map<String, dynamic> payload = {};
721+
_printLog("Parameters: " + payload.toString());
722+
payload = _standardPayload("get", payload,
723+
"orders/${orderId.toString()}/notes/${noteId.toString()}");
724+
725+
OrderNote orderNote;
726+
await _apiProvider.post("/request", payload).then((json) {
727+
orderNote = OrderNote.fromJson(json);
728+
});
729+
_printLog(orderNote.toString());
730+
return orderNote;
731+
}
732+
733+
// https://woocommerce.github.io/woocommerce-rest-api-docs/?php#list-all-order-notes
734+
// List All order notes
735+
// This API helps you to view all the notes from an order.
736+
Future<List<OrderNote>> getOrderNotes({
737+
@required int orderId,
738+
String context,
739+
String type,
740+
}) async {
741+
Map<String, dynamic> payload = {};
742+
if (type != null) payload["type"] = type;
743+
744+
_printLog("Parameters: " + payload.toString());
745+
payload =
746+
_standardPayload("get", payload, "orders/${orderId.toString()}/notes");
747+
748+
List<OrderNote> orderNotes = [];
749+
await _apiProvider.post("/request", payload).then((json) {
750+
orderNotes = (json as List).map((i) => OrderNote.fromJson(i)).toList();
751+
});
752+
_printLog(orderNotes.toString());
753+
return orderNotes;
754+
}
755+
756+
// Create an order note
757+
// This API helps you to create a new note for an order.
758+
Future<OrderNote> createOrderNote({
759+
@required int id,
760+
Map<String, dynamic> data,
761+
}) async {
762+
Map<String, dynamic> payload = {};
763+
if (data != null) payload['data'] = data;
764+
_printLog(payload.toString());
765+
payload =
766+
_standardPayload("post", payload, "orders/${id.toString()}/notes");
767+
OrderNote orderNote;
768+
await _apiProvider.post("/request", payload).then((json) {
769+
orderNote = OrderNote.fromJson(json);
770+
});
771+
_printLog(orderNote.toString());
772+
return orderNote;
773+
}
774+
775+
// Delete an order note
776+
// This API helps you delete an order note.
777+
Future<OrderNote> deleteOrder(int orderId, int noteId,
778+
{@required Map<String, dynamic> data}) async {
779+
Map<String, dynamic> payload = data;
780+
781+
_printLog(payload.toString());
782+
// There is the usage of + instead of ${} if error Occurs
783+
payload = _standardPayload("delete", payload,
784+
"orders/${orderId.toString()}/notes/${noteId.toString()}");
785+
786+
OrderNote orderNote;
787+
await _apiProvider.post("/request", payload).then((json) {
788+
orderNote = OrderNote.fromJson(json);
789+
});
790+
_printLog(orderNote.toString());
791+
return orderNote;
792+
}
712793
}

0 commit comments

Comments
 (0)