1 <?php
2
3 namespace PLus\Orders\Repositories\Order;
4
5
6 7 8 9 10
11 class ItemorderRepository extends \PLus\Orders\Repositories\Repository {
12
13 function getPairData(){
14 return $this->getTable()->select('id, name')->order('name ASC')->fetchPairs('id', 'name');
15 }
16
17 18 19 20 21 22
23 public function findById($id) {
24 return $this->getTable()
25 ->select('itemorder.*')->wherePrimary($id)->fetch();
26 }
27
28 29 30 31 32 33
34 public function findByIdWithDimenzion($id) {
35 return $this->getTable()
36 ->select('itemorder.*, dimenzion.name AS dimname, order.user:unit_user.unit.ns AS ns, order.user:unit_user.unit.name AS unitname,order.isinvestment')
37 ->wherePrimary($id)->fetch();
38 }
39
40
41 42 43 44 45 46
47 function getItemsOrder($order_id) {
48 return $this->getTable()->select('itemorder.*, dimenzion.name AS dimname')->where('itemorder.order_id', $order_id);
49 }
50
51 52 53 54 55 56
57 function getItemsOrderWithDimenzion($order_id) {
58 return $this->getTable()->select('itemorder.*,dimenzion.name AS dimname')->where('itemorder.order_id', $order_id);
59 }
60
61 62 63 64 65 66
67 function getIdItemsOrder($order_id) {
68 return $this->getTable()->select('itemorder.id')->where('itemorder.order_id', $order_id);
69 }
70
71 72 73 74 75 76
77 function getItemOrderById($id) {
78 return $this->getTable()->select('itemorder.name, itemorder.number, itemorder.priceitem, itemorder.description')->where('itemorder.id', $id);
79 }
80
81 82 83 84 85 86
87 function getItemOrderAreaById($id) {
88
89
90 return $this->connection->table('area')->select('area.name')
91 ->where(':area_itemorder.itemorder.id', $id);
92 }
93
94
95 96 97 98 99 100
101 function getItemOrderAreaIdByItemId($id) {
102 return $this->getTable()->select(':area_itemorder.area.id')
103 ->where('itemorder.id', $id);
104 }
105
106
107 108 109 110 111 112
113 function getItemOrderCommentById($id) {
114 return $this->getTable()->select(':comment.created, :comment.description,:comment.user'
115 . 'CASE WHEN :comment.user.isunit=1 THEN :comment:user:unit_user.unit.name ELSE CONCAT_WS(\' \',:comment.user.firstname,'
116 . ' :comment.user.lastname) END AS uname')
117 ->where('itemorder.id', $id);
118 }
119
120 121 122 123 124 125
126 function getItemOrderHeadById($order_id) {
127 return $this->getTable()->select('itemorder.order_id, order.name')->where('order.id', $order_id)->fetch();
128 }
129
130
131 132 133 134 135 136
137 function assignArea($area_id, $itemorder_id) {
138 try {
139 $this->connection->table('area_itemorder')->insert(array('area_id' => $area_id, 'itemorder_id' => $itemorder_id));
140 }
141 catch ( \PDOException $e) {
142 if ($e->getCode() == '23000')
143 $this->connection->table('area_itemorder')->where(array('area_id' => $area_id, 'itemorder_id' => $itemorder_id))
144 ->update(array('area_id' => $area_id, 'itemorder_id' => $itemorder_id));
145 else
146 throw $e;
147 }
148
149 }
150
151 152 153 154 155 156
157 function removeAssignedArea($area_id, $itemorder_id) {
158 $this->connection->table('area_itemorder')->where(array('area_id' => $area_id, 'itemorder_id' => $itemorder_id))->delete();
159 }
160
161
162 163 164 165 166 167
168 function equalItemArea($order_id) {
169 return $this->getTable()
170 ->select('COUNT(itemorder.order_id) AS item, COUNT(itemorder.areaflag) AS area')
171 ->where('itemorder.order_id', $order_id)
172 ->fetch();
173 }
174
175
176
177 178 179 180 181 182
183 function getCountItemInOrder($order_id) {
184 return $this->getTable()
185 ->select('COUNT(itemorder.order_id) AS item')
186 ->where('itemorder.order_id', $order_id)
187 ->fetch();
188 }
189
190 191 192 193 194 195
196 function getCountItemResultflag($order_id) {
197 return $this->getTable()
198 ->select('COUNT(itemorder.resultflag) AS resultflag')
199 ->where('itemorder.order_id', $order_id)
200 ->fetch();
201 }
202
203
204 205 206 207 208 209
210 function getCountItemArea($itemorder_id) {
211 return $this->getTable()
212 ->select('COUNT(:area_itemorder.itemorder_id) AS area')
213 ->where('itemorder.id', $itemorder_id)
214 ->fetch();
215 }
216
217 218 219 220 221 222
223 function getCountItemResult($itemorder_id) {
224 return $this->getTable()
225 ->select('COUNT(:expertresult.itemorder_id) AS result')
226 ->where('itemorder.id', $itemorder_id)
227 ->fetch();
228 }
229
230
231 232 233 234 235 236
237 function equalItemOrdered($order_id) {
238 return $this->getTable()
239 ->select('COUNT(itemorder.order_id) AS item, COUNT(itemorder.orderedflag) AS ordered')
240 ->where('itemorder.order_id', $order_id)
241 ->fetch();
242 }
243
244 245 246 247 248 249
250 function equalItemAccepted($order_id) {
251 return $this->getTable()
252 ->select('COUNT(itemorder.order_id) AS item, COUNT(itemorder.acceptedflag) AS accepted')
253 ->where('itemorder.order_id', $order_id)
254 ->fetch();
255 }
256
257
258 259 260 261 262 263
264 function updatePriceItem($itemorder_id, $price) {
265 $this->getTable()->where(array('id' => $itemorder_id))->update(array('priceitem' => $price));
266 }
267
268 269 270 271 272 273
274 function getItemRealizationExists($itemorder_id) {
275 return $this->getTable()
276 ->select('COUNT(:itemorder_realization.id) AS realization')
277 ->where('itemorder.id', $itemorder_id)
278 ->fetch();
279 }
280
281 282 283 284 285 286 287
288 public function findOrderByImplementerId($user_id) {
289 return $this->getTable()->select('DISTINCT itemorder.order_id')
290 ->where('itemorder.orderedflag IS NULL')
291 ->where(':itemorder_realization:itemorder_realization_user.user.id', $user_id);
292 }
293
294
295 296 297 298 299 300
301 public function findOrderWithoutImplementer() {
302 return $this->getTable()->select('DISTINCT itemorder.order_id')
303 ->where('order.completeflag = 1 AND order:managerresult.approved = 1')
304 ->where('itemorder.implementerflag IS NULL');
305 }
306
307 308 309 310 311 312
313 public function isInvestment($itemorder_id) {
314 return $this->getTable()->select('order.isinvestment')->wherePrimary($itemorder_id)->fetch();
315 }
316
317 318 319 320 321 322
323 public function getInvestmentId($itemorder_id) {
324 return $this->getTable()->select('order:investment.id')->wherePrimary($itemorder_id)->fetch();
325 }
326 }
327