1 /**
2 * Copyright © DiamondMVC 2019
3 * License: MIT (https://github.com/DiamondMVC/Diamond/blob/master/LICENSE)
4 * Author: Jacob Jensen (bausshf)
5 */
6 module diamond.seo.schema.structures.offer;
7
8 import diamond.core.apptype;
9
10 static if (isWeb)
11 {
12 import diamond.seo.schema.schemaobject;
13
14 /// http://schema.org/ItemAvailability
15 enum ItemAvailability : string
16 {
17 /// Discontinued.
18 discontinued = "http://schema.org/Discontinued",
19
20 /// In stock.
21 inStock = "http://schema.org/InStock",
22
23 /// In store only.
24 inStoreOnly = "http://schema.org/InStoreOnly",
25
26 /// Limited availability.
27 limitedAvailability = "http://schema.org/LimitedAvailability",
28
29 /// Online only.
30 onlineOnly = "http://schema.org/OnlineOnly",
31
32 /// Out of stock.
33 outOfStock = "http://schema.org/OutOfStock",
34
35 /// Pre order.
36 preOrder = "http://schema.org/PreOrder",
37
38 /// Pre sale.
39 preSale = "http://schema.org/PreSale",
40
41 /// Sold out.
42 soldOut = "http://schema.org/SoldOut"
43 }
44
45 /// http://schema.org/Offer
46 final class Offer : SchemaObject
47 {
48 private:
49 /// The price.
50 string _price;
51 /// The price currency.
52 string _priceCurrency;
53 /// The url.
54 string _url;
55 /// The availability.
56 ItemAvailability _availability;
57
58 public:
59 final:
60 /// Creates a new offer.
61 this()
62 {
63 super("Offer");
64 }
65
66 @property
67 {
68 /// Gets the price.
69 string price() { return _price; }
70
71 /// Sets the price.
72 void price(string newPrice)
73 {
74 _price = newPrice;
75
76 super.addField("price", _price);
77 }
78
79 /// Gets the price currency.
80 string priceCurrency() { return _priceCurrency; }
81
82 /// Sets the price currency.
83 void priceCurrency(string newPriceCurrency)
84 {
85 _priceCurrency = newPriceCurrency;
86 }
87
88 /// Gets the url.
89 string url() { return _url; }
90
91 /// Sets the url.
92 void url(string newUrl)
93 {
94 _url = newUrl;
95
96 super.addField("url", _url);
97 }
98
99 /// Gets the availability.
100 ItemAvailability availability() { return _availability; }
101
102 /// Sets the availability.
103 void availability(ItemAvailability newAvailability)
104 {
105 _availability = newAvailability;
106
107 super.addField("availability", cast(string)_availability);
108 }
109 }
110 }
111 }