Skip to content

Commit 429279e

Browse files
agwoosignalagordn52
authored andcommitted
Merged in feature/WFA-4-api-orders-notes (pull request #6)
Feature/WFA-4 api orders notes Approved-by: Anthony Gordon <ants52@aol.com>
2 parents 7a3b286 + 475d64b commit 429279e

File tree

2 files changed

+177
-0
lines changed

2 files changed

+177
-0
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: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ library woosignal;
1616
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
1717

1818
import 'package:flutter/cupertino.dart';
19+
import 'package:woosignal/models/response/order_notes.dart';
1920
import 'package:woosignal/models/response/coupon.dart';
2021
import 'package:woosignal/models/response/coupon_batch.dart';
2122
import 'package:woosignal/models/response/customer_batch.dart';
@@ -717,6 +718,90 @@ class WooSignal {
717718
return payloadRsp;
718719
}
719720

721+
// Retrieve an order note
722+
// This API lets you retrieve and view a specific note from an order
723+
Future<OrderNote> retrieveOrderNote({
724+
@required int orderId,
725+
@required int noteId,
726+
}) async {
727+
Map<String, dynamic> payload = {};
728+
_printLog("Parameters: " + payload.toString());
729+
payload = _standardPayload("get", payload,
730+
"orders/${orderId.toString()}/notes/${noteId.toString()}");
731+
732+
OrderNote orderNote;
733+
await _apiProvider.post("/request", payload).then((json) {
734+
orderNote = OrderNote.fromJson(json);
735+
});
736+
_printLog(orderNote.toString());
737+
return orderNote;
738+
}
739+
740+
// https://woocommerce.github.io/woocommerce-rest-api-docs/?php#list-all-order-notes
741+
// List All order notes
742+
// This API helps you to view all the notes from an order.
743+
Future<List<OrderNote>> getOrderNotes({
744+
@required int orderId,
745+
String context,
746+
String type,
747+
}) async {
748+
Map<String, dynamic> payload = {};
749+
if (type != null) payload["type"] = type;
750+
751+
_printLog("Parameters: " + payload.toString());
752+
payload =
753+
_standardPayload("get", payload, "orders/${orderId.toString()}/notes");
754+
755+
List<OrderNote> orderNotes = [];
756+
await _apiProvider.post("/request", payload).then((json) {
757+
orderNotes = (json as List).map((i) => OrderNote.fromJson(i)).toList();
758+
});
759+
_printLog(orderNotes.toString());
760+
return orderNotes;
761+
}
762+
763+
// Create an order note
764+
// This API helps you to create a new note for an order.
765+
Future<OrderNote> createOrderNote({
766+
@required int id,
767+
Map<String, dynamic> data,
768+
}) async {
769+
Map<String, dynamic> payload = {};
770+
if (data != null) payload['data'] = data;
771+
_printLog(payload.toString());
772+
payload =
773+
_standardPayload("post", payload, "orders/${id.toString()}/notes");
774+
OrderNote orderNote;
775+
await _apiProvider.post("/request", payload).then((json) {
776+
orderNote = OrderNote.fromJson(json);
777+
});
778+
_printLog(orderNote.toString());
779+
return orderNote;
780+
}
781+
782+
// Delete an order note
783+
// This API helps you delete an order note.
784+
Future<OrderNote> deleteOrderNote(
785+
int orderId,
786+
int noteId) async {
787+
Map<String, dynamic> data;
788+
data = {'force': true};
789+
Map<String, dynamic> payload = data;
790+
791+
_printLog(payload.toString());
792+
793+
// There is the usage of + instead of ${} if error Occurs
794+
payload = _standardPayload("delete", payload,
795+
"orders/${orderId.toString()}/notes/${noteId.toString()}");
796+
797+
OrderNote orderNote;
798+
await _apiProvider.post("/request", payload).then((json) {
799+
orderNote = OrderNote.fromJson(json);
800+
});
801+
_printLog(orderNote.toString());
802+
return orderNote;
803+
}
804+
720805
Future<Coupon> retrieveCoupons({int id}) async {
721806
Map<String, dynamic> payload = {};
722807
_printLog("Parameters: " + payload.toString());

0 commit comments

Comments
 (0)