1 <?php
2
3 4 5 6 7 8 9 10 11
12
13 MainFactory::load_class('OrderItemRepositoryWriterInterface');
14
15 16 17 18 19 20 21
22 class OrderItemRepositoryWriter implements OrderItemRepositoryWriterInterface
23 {
24 25 26 27
28 protected $db;
29
30
31 32 33 34 35
36 public function __construct(CI_DB_query_builder $dbQueryBuilder)
37 {
38 $this->db = $dbQueryBuilder;
39 }
40
41
42 43 44 45 46 47 48 49
50 public function insertIntoOrder(IdType $orderId, OrderItemInterface $orderItem)
51 {
52 $orderItemArray = array(
53 'orders_id' => $orderId->asInt(),
54 'products_model' => $orderItem->getProductModel(),
55 'products_name' => $orderItem->getName(),
56 'products_price' => $orderItem->getPrice(),
57 'products_quantity' => $orderItem->getQuantity(),
58 'final_price' => $orderItem->getFinalPrice(),
59 'products_tax' => $orderItem->getTax(),
60 'allow_tax' => $orderItem->isTaxAllowed(),
61 'products_discount_made' => $orderItem->getDiscountMade(),
62 'products_shipping_time' => $orderItem->getShippingTimeInfo(),
63 'checkout_information' => $orderItem->getCheckoutInformation()
64 );
65
66 $this->db->insert('orders_products', $orderItemArray);
67 $orderItemId = $this->db->insert_id();
68
69 $downloadInfo = $orderItem->getDownloadInformation();
70 if(!$downloadInfo instanceof EmptyOrderItemDownloadInformation)
71 {
72 $orderItemDownloadArray = array(
73 'orders_id' => $orderId->asInt(),
74 'orders_products_id' => $orderItemId,
75 'orders_products_filename' => $downloadInfo->getFilename(),
76 'download_maxdays' => $downloadInfo->getMaxDaysAllowed(),
77 'download_count' => $downloadInfo->getCountAvailable()
78 );
79
80 $this->db->insert('orders_products_download', $orderItemDownloadArray);
81 }
82
83 return $orderItemId;
84 }
85
86
87 88 89 90 91 92 93
94 public function update(StoredOrderItemInterface $orderItem)
95 {
96 $orderItemArray = array(
97 'products_model' => $orderItem->getProductModel(),
98 'products_name' => $orderItem->getName(),
99 'products_price' => $orderItem->getPrice(),
100 'products_quantity' => $orderItem->getQuantity(),
101 'final_price' => $orderItem->getFinalPrice(),
102 'products_tax' => $orderItem->getTax(),
103 'allow_tax' => $orderItem->isTaxAllowed(),
104 'products_discount_made' => $orderItem->getDiscountMade(),
105 'products_shipping_time' => $orderItem->getShippingTimeInfo(),
106 'checkout_information' => $orderItem->getCheckoutInformation()
107 );
108
109 $this->db->update('orders_products', $orderItemArray,
110 array('orders_products_id' => $orderItem->getOrderItemId()));
111
112 $downloadInfo = $orderItem->getDownloadInformation();
113 if(!$downloadInfo instanceof EmptyOrderItemDownloadInformation)
114 {
115
116 $orderIdRow = $this->db->select('orders_id')
117 ->get_where('orders_products',
118 array('orders_products_id' => $orderItem->getOrderItemId()))
119 ->row_array();
120
121
122 $result = $this->db->get_where('orders_products_download', array(
123 'orders_products_id' => $orderItem->getOrderItemId()
124 ))->row_array();
125
126 if($result === null)
127 {
128 $orderItemDownloadArray = array(
129 'orders_id' => $orderIdRow['orders_id'],
130 'orders_products_id' => $orderItem->getOrderItemId(),
131 'orders_products_filename' => $downloadInfo->getFilename(),
132 'download_maxdays' => $downloadInfo->getMaxDaysAllowed(),
133 'download_count' => $downloadInfo->getCountAvailable()
134 );
135
136 $this->db->insert('orders_products_download', $orderItemDownloadArray);
137 }
138 else
139 {
140 $orderItemDownloadArray = array(
141 'orders_products_filename' => $downloadInfo->getFilename(),
142 'download_maxdays' => $downloadInfo->getMaxDaysAllowed(),
143 'download_count' => $downloadInfo->getCountAvailable()
144 );
145
146 $this->db->update('orders_products_download', $orderItemDownloadArray, array(
147 'orders_products_id' => $orderItem->getOrderItemId(),
148 ));
149 }
150 }
151 }
152 }