1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
use chrono::NaiveDateTime;
use serde::{Deserialize, Serialize};

use crate::controllers::order_notes::{
    NoId, NoNote, OrderNotesCreateBuilder, OrderNotesUpdateBuilder,
};
/// ```rust
/// #[cfg(test)]
/// mod tests {
///     use crate::{
///         controllers::orders::ORDER_ID, order_notes::OrderNotes, ApiClient, Entity, SubEntity,
///     };
///
///     #[tokio::test]
///     async fn test_list_all_order_notes() {
///         let client = ApiClient::from_env().unwrap();
///         let order_notes: Vec<OrderNotes> = client
///             .list_all_subentities(Entity::Order, ORDER_ID, SubEntity::OrderNote)
///             .await
///             .unwrap();
///         assert!(!order_notes.is_empty());
///     }
///     #[tokio::test]
///     async fn test_retrieve_order_note() {
///         let client = ApiClient::from_env().unwrap();
///         let order_notes: Vec<OrderNotes> = client
///             .list_all_subentities(Entity::Order, ORDER_ID, SubEntity::OrderNote)
///             .await
///             .unwrap();
///         let id = order_notes.last().unwrap().id;
///         let order_note: OrderNotes = client
///             .retrieve_subentity(Entity::Order, ORDER_ID, SubEntity::OrderNote, id)
///             .await
///             .unwrap();
///         assert_eq!(id, order_note.id);
///     }
///     #[tokio::test]
///     async fn test_create_order_note() {
///         let client = ApiClient::from_env().unwrap();
///         let note = OrderNotes::create()
///             .note("Testing note")
///             .customer_note()
///             .added_by_user()
///             .build();
///         let created_note: OrderNotes = client
///             .create_subentity(Entity::Order, ORDER_ID, SubEntity::OrderNote, note)
///             .await
///             .unwrap();
///         assert_eq!(created_note.customer_note, true);
///         let _deleted: OrderNotes = client
///             .delete_subentity(
///                 Entity::Order,
///                 ORDER_ID,
///                 SubEntity::OrderNote,
///                 created_note.id,
///             )
///             .await
///             .unwrap();
///     }
///     #[tokio::test]
///     async fn test_update_order_note() {
///         let client = ApiClient::from_env().unwrap();
///         let order_notes: Vec<OrderNotes> = client
///             .list_all_subentities(Entity::Order, ORDER_ID, SubEntity::OrderNote)
///             .await
///             .unwrap();
///         let id = order_notes.first().unwrap().id;
///         let update = OrderNotes::update().id(id).note("some test note").build();
///         let updated_note: Result<OrderNotes, _> = client
///             .update_subentity(Entity::Order, ORDER_ID, SubEntity::OrderNote, id, update)
///             .await;
///         assert!(updated_note.is_err())
///     }
/// }
/// ```
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OrderNotes {
    /// Unique identifier for the resource.
    pub id: i32,
    /// Order note author    
    pub author: String,
    /// The date the order note was created, in the site's timezone.
    pub date_created: NaiveDateTime,
    /// The date the order note was created, as GMT.
    pub date_created_gmt: NaiveDateTime,
    /// Order note content.
    pub note: String,
    /// If true, the note will be shown to customers and they will be notified. If false, the note will be for admin reference only. Default is false.    
    pub customer_note: bool,
    /// If true, this note will be attributed to the current user. If false, the note will be attributed to the system. Default is false.    
    pub added_by_user: Option<bool>,
}
impl OrderNotes {
    pub fn create() -> OrderNotesCreateBuilder<NoNote> {
        OrderNotesCreateBuilder::<NoNote>::new()
    }
    pub fn update() -> OrderNotesUpdateBuilder<NoId> {
        OrderNotesUpdateBuilder::<NoId>::new()
    }
}