Subversion Repositories SmartDukaan

Rev

Rev 15217 | Rev 15824 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
13532 anikendra 1
<?php
2
App::uses('AppController', 'Controller');
3
/**
4
 * Orders Controller
5
 *
6
 * @property Order $Order
7
 * @property PaginatorComponent $Paginator
8
 */
9
class OrdersController extends AppController {
10
 
11
/**
12
 * Components
13
 *
14
 * @var array
15
 */
16
	public $components = array('Paginator');
17
 
13672 anikendra 18
	public function beforeFilter() {		
13591 anikendra 19
		parent::beforeFilter();
15093 anikendra 20
		$this->Auth->allow('add','mine','pendingcashbacks','all');
13672 anikendra 21
		$this->apihost = Configure::read('pythonapihost');
13591 anikendra 22
	}
23
 
13816 anikendra 24
	public function mine() {
25
		$page = $this->request->query('page');
26
		$page = isset($page)?$page:1;
13682 anikendra 27
		$userId = $this->request->query('user_id');
28
		if(isset($userId) && !empty($userId)){
29
			$this->loadModel('User');
30
			$dbuser = $this->User->findById($userId);
31
			$this->Auth->login($dbuser['User']);	
32
		}
13672 anikendra 33
		$this->layout = "innerpages";
13815 anikendra 34
		$url = $this->apihost."storeorder/user/".$this->Auth->User('id')."?page=$page&window=10";
13672 anikendra 35
		$response = $this->make_request($url,null);
13815 anikendra 36
		$totalPages = $response['totalPages'];
13672 anikendra 37
		if(!empty($response['data'])){
38
			$this->set('orders',$response['data']);
39
		}
13752 anikendra 40
		$ignoredFields = array('imgUrl','status','productTitle','estimatedDeliveryDate','productCode','merchantSubOrderId','productUrl','closed','tracingkUrl','detailedStatus');
13944 anikendra 41
		$storemapping = Configure::read('storemapping');
42
		$activestores = Configure::read('activestores');
14224 anikendra 43
		$amazonorderurl = Configure::read('amazonorderurl');
44
		$this->set(compact('ignoredFields','page','totalPages','userId','activestores','storemapping','amazonorderurl'));
13672 anikendra 45
	}
46
 
15217 anikendra 47
	public function by($userId) {
48
		$page = $this->request->query('page');
49
		$page = isset($page)?$page:1;		
50
		$this->layout = "innerpages";
51
		$url = $this->apihost."storeorder/user/".$userId."?page=$page&window=10";
52
		$response = $this->make_request($url,null);
53
		$totalPages = $response['totalPages'];
54
		if(!empty($response['data'])){
55
			$this->set('orders',$response['data']);
56
		}
57
		$ignoredFields = array('imgUrl','status','productTitle','estimatedDeliveryDate','productCode','merchantSubOrderId','productUrl','closed','tracingkUrl','detailedStatus');
58
		$storemapping = Configure::read('storemapping');
59
		$activestores = Configure::read('activestores');
60
		$amazonorderurl = Configure::read('amazonorderurl');
61
		$this->set(compact('ignoredFields','page','totalPages','userId','activestores','storemapping','amazonorderurl'));
62
	}
63
 
13762 anikendra 64
	public function pendingcashbacks() {
65
		$userId = $this->request->query('user_id');
66
		if(isset($userId) && !empty($userId)){
67
			$this->loadModel('User');
68
			$dbuser = $this->User->findById($userId);
69
			$this->Auth->login($dbuser['User']);	
70
		}
71
		$this->layout = "innerpages";
13993 anikendra 72
		$url = $this->apihost."storeorder/user/".$this->Auth->User('id')."?page=1&window=50";
13762 anikendra 73
		$response = $this->make_request($url,null);
13993 anikendra 74
		// debug($response);
75
		$creditedOrders = $pendingOrders = $approvedOrders = array();
76
		$creditedAmount = $pendingAmount = $approvedAmount = 0;
13762 anikendra 77
		if(!empty($response['data'])){
13993 anikendra 78
			foreach ($response['data'] as $key => $order) {
14111 anikendra 79
				if(!empty($order['subOrders'])){
80
					foreach ($order['subOrders'] as $key => $suborder) {
81
						$suborder['storeId'] = $order['storeId'];
15035 amit.gupta 82
						if($order['storeId']!=4){
15036 amit.gupta 83
							$suborder['merchantOrderId'] = $order['merchantOrderId'];
84
						} else {
15035 amit.gupta 85
							$suborder['merchantOrderId'] = $suborder['merchantSubOrderId'];
86
						}
14700 anikendra 87
						if(!empty($order['orderTrackingUrl'])){
88
							$suborder['orderSuccessUrl'] = $order['orderTrackingUrl'];
89
						}
14111 anikendra 90
						switch($suborder['cashBackStatus']){
91
							// case 'Credited to wallet'://Credited
92
							// $creditedOrders[] = $suborder;
93
							// break;
94
							case 'Approved':
95
							$approvedOrders[] = $suborder;
96
							$approvedAmount += $suborder['cashBackAmount'];
97
							break;
98
							case 'Pending':
99
							$pendingOrders[] = $suborder;
14673 anikendra 100
							// $pendingAmount += $suborder['cashBackAmount'];
14111 anikendra 101
						}
13993 anikendra 102
					}
103
				}
104
			}
13762 anikendra 105
		}
14673 anikendra 106
		$url = $this->apihost.'pending-cashbacks/user/'.$userId;
107
		$result = $this->make_request($url,null);
108
		$pendingAmount = $result['amount'];
13993 anikendra 109
		//Get pending cashbacks
110
		$url = $this->apihost.'pending-refunds/user/'.$userId;
111
		$pendingCashbacks = $this->make_request($url,null);
112
		//Get credited cashbacks
113
		$url = $this->apihost.'refund/user/'.$userId;
14068 anikendra 114
		$creditedCashbacks = $this->make_request($url,null);
115
 
14026 anikendra 116
		if(!empty($creditedCashbacks)){
13993 anikendra 117
			foreach ($creditedCashbacks['data'] as $key => $value) {
14068 anikendra 118
				$creditedAmount += $value['userAmount'];				
119
				$data = array('subOrders.batchId'=>$value['batch']);
120
				$jsonVar = json_encode($data);
121
				$url = $this->apihost."storeorder/user/".$this->Auth->User('id')."?page=1&window=50&searchMap=$jsonVar";
122
				$creditedOrders[$value['batch']] = $this->make_request($url,null);
123
				// debug($creditedOrders);
13993 anikendra 124
			}
125
		}
14026 anikendra 126
		$storemapping = Configure::read('storemapping');
127
		$activestores = Configure::read('activestores');
13993 anikendra 128
		if(!empty($response['data'])){
14026 anikendra 129
			$this->set(compact('storemapping','activestores','pendingOrders','approvedOrders','creditedOrders','pendingCashbacks','creditedCashbacks','pendingAmount','approvedAmount','creditedAmount'));
13993 anikendra 130
		}
13762 anikendra 131
	}
132
 
15217 anikendra 133
	public function usercashbacks($userId) {		
134
		$this->layout = "innerpages";
135
		$url = $this->apihost."storeorder/user/".$userId."?page=1&window=50";
136
		$response = $this->make_request($url,null);
137
		// debug($response);
138
		$creditedOrders = $pendingOrders = $approvedOrders = array();
139
		$creditedAmount = $pendingAmount = $approvedAmount = 0;
140
		if(!empty($response['data'])){
141
			foreach ($response['data'] as $key => $order) {
142
				if(!empty($order['subOrders'])){
143
					foreach ($order['subOrders'] as $key => $suborder) {
144
						$suborder['storeId'] = $order['storeId'];
145
						if($order['storeId']!=4){
146
							$suborder['merchantOrderId'] = $order['merchantOrderId'];
147
						} else {
148
							$suborder['merchantOrderId'] = $suborder['merchantSubOrderId'];
149
						}
150
						if(!empty($order['orderTrackingUrl'])){
151
							$suborder['orderSuccessUrl'] = $order['orderTrackingUrl'];
152
						}
153
						switch($suborder['cashBackStatus']){
154
							// case 'Credited to wallet'://Credited
155
							// $creditedOrders[] = $suborder;
156
							// break;
157
							case 'Approved':
158
							$approvedOrders[] = $suborder;
159
							$approvedAmount += $suborder['cashBackAmount'];
160
							break;
161
							case 'Pending':
162
							$pendingOrders[] = $suborder;
163
							// $pendingAmount += $suborder['cashBackAmount'];
164
						}
165
					}
166
				}
167
			}
168
		}
169
		$url = $this->apihost.'pending-cashbacks/user/'.$userId;
170
		$result = $this->make_request($url,null);
171
		$pendingAmount = $result['amount'];
172
		//Get pending cashbacks
173
		$url = $this->apihost.'pending-refunds/user/'.$userId;
174
		$pendingCashbacks = $this->make_request($url,null);
175
		//Get credited cashbacks
176
		$url = $this->apihost.'refund/user/'.$userId;
177
		$creditedCashbacks = $this->make_request($url,null);
178
 
179
		if(!empty($creditedCashbacks)){
180
			foreach ($creditedCashbacks['data'] as $key => $value) {
181
				$creditedAmount += $value['userAmount'];				
182
				$data = array('subOrders.batchId'=>$value['batch']);
183
				$jsonVar = json_encode($data);
184
				$url = $this->apihost."storeorder/user/".$userId."?page=1&window=50&searchMap=$jsonVar";
185
				$creditedOrders[$value['batch']] = $this->make_request($url,null);
186
				// debug($creditedOrders);
187
			}
188
		}
189
		$storemapping = Configure::read('storemapping');
190
		$activestores = Configure::read('activestores');
191
		if(!empty($response['data'])){
192
			$this->set(compact('storemapping','activestores','pendingOrders','approvedOrders','creditedOrders','pendingCashbacks','creditedCashbacks','pendingAmount','approvedAmount','creditedAmount'));
193
		}
194
	}
195
 
15227 anikendra 196
/*
13532 anikendra 197
	public function index() {
13591 anikendra 198
		throw new NotFoundException(__('Access Denied'));
13532 anikendra 199
		$this->Order->recursive = 0;
200
		$this->set('orders', $this->Paginator->paginate());
201
	}
202
 
15227 anikendra 203
 
13532 anikendra 204
	public function view($id = null) {
13591 anikendra 205
		throw new NotFoundException(__('Access Denied'));
13532 anikendra 206
		if (!$this->Order->exists($id)) {
207
			throw new NotFoundException(__('Invalid order'));
208
		}
209
		$options = array('conditions' => array('Order.' . $this->Order->primaryKey => $id));
210
		$this->set('order', $this->Order->find('first', $options));
211
	}
15227 anikendra 212
*/
213
 
13532 anikendra 214
/**
215
 * add method
216
 *
217
 * @return void
218
 */
13814 anikendra 219
 
220
	public function postOrders($order=null) {
13994 anikendra 221
		// Configure::load('live');
13814 anikendra 222
		$apihost = Configure::read('pythonapihost');
223
		$url = $apihost."storeorder";
224
		if(!empty($order)) {
225
			$params = array('sourceId'=>$order['Order']['store_id'],'orderId'=>$order['Order']['id'],'subTagId'=>$order['Order']['sub_tag'],'userId'=>$order['Order']['user_id'],'rawHtml'=>$order['Order']['rawhtml'],'orderSuccessUrl'=>$order['Order']['order_url']);
226
			$jsonVar = json_encode($params);
227
			return $this->make_request($url,$jsonVar);
228
		}else{
229
			$result = array('success'=>false,'message'=>'Empty order array');
230
			return $result;
231
		}
232
	}
233
 
13532 anikendra 234
	public function add() {
14933 amit.gupta 235
		$this->log(print_r($this->request->data,1),'orders');
13532 anikendra 236
		if ($this->request->is('post')) {
14886 amit.gupta 237
			if($this->request->data['zip']){
14933 amit.gupta 238
				$this->request->data['rawhtml'] = gzuncompress(base64_decode($this->request->data['rawhtml'])); 
14886 amit.gupta 239
			}
240
			$this->log(print_r($this->request->data,1),'orders');
14315 anikendra 241
			if(empty($this->request->data['id'])) {
242
				$this->Order->create();
13633 anikendra 243
			}
15093 anikendra 244
			$this->request->data['ip'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
13532 anikendra 245
			if ($this->Order->save($this->request->data)) {
14315 anikendra 246
				//$this->loadModel('PythonApi');	
247
				if(empty($this->request->data['id'])) {
248
					$id = $this->Order->getLastInsertID();
249
				}else{
250
					$id = $this->request->data['id'];
251
				}
252
				$order = $this->Order->find('first',array('conditions'=>array('id'=>$id),'recursive'=>-1));
13814 anikendra 253
				$response = $this->postOrders($order);
254
				$this->log(print_r($response,1),'orders');
255
				if(!empty($response) && $response['result']) {
14315 anikendra 256
					//if($response['result'] == 'HTML_REQUIRED' || $response['result'] == 'requireHtml') {
257
					if($response['htmlRequired'] == 1) {
13814 anikendra 258
						$this->loadModel('Rawhtml');
259
						$data = array('order_id' => $order['Order']['id'],'url' => $response['url'], 'status' => 'new');
260
						$this->Rawhtml->create();
261
						$this->Rawhtml->save($data); 
14315 anikendra 262
						//$result =array('success'=>true,'message'=>__('requireHtml'),'url' => $response['url'],'orderId' => $response['orderId']);
263
						$result =  $response;
264
						$sql = "UPDATE orders SET status = '".$response['result']."' WHERE id = ".$order['Order']['id'];
265
					}/* elseif($response['result'] == 'IGNORED') {
13814 anikendra 266
						$result =array('success'=>true,'message'=>__('IGNORED'));
267
						$sql = "UPDATE orders SET status = 'deleted' WHERE id = ".$order['Order']['id'];
268
					} elseif($response['result'] == 'PARSE_ERROR') {
269
						$result =array('success'=>true,'message'=>__('PARSE_ERROR'));
270
						$sql = "UPDATE orders SET status = 'deleted' WHERE id = ".$order['Order']['id'];
14315 anikendra 271
					} */
272
					else {
273
						$result =array('success'=>true,'message'=> $response['result']);
274
						$sql = "UPDATE orders SET status = '".$response['result']."' WHERE id = ".$order['Order']['id'];
13814 anikendra 275
					}
276
					$this->Order->query($sql);
277
				}
278
				//$result = array('success'=>true,'message'=>__('HTML_REQUIRED'),'url'=>'https://www.amazon.in/gp/css/summary/edit.html?orderID=404-7369214-6566739');
13633 anikendra 279
/*
280
				$options = array('conditions'=>array('status'=>'mapped'),'recursive'=>-1);
281
				$order = $this->Order->find('first',$options);
282
				if(!empty($orders)) {
283
					foreach($orders AS $order) {
284
						$response = $this->PythonApi->postOrders($order);
285
						if(!empty($response) && $response['result']) {
286
							$sql = "UPDATE orders SET status = 'processed' WHERE id = ".$order['Order']['id'];
287
							$this->Order->query($sql);
288
						}
289
					}
290
				}
291
*/
13532 anikendra 292
			} else {
14315 anikendra 293
				$this->log(print_r($this->Order->validationErrors,1),'orders');
13591 anikendra 294
				$result = array('success'=>false,'message'=>__('The order could not be saved. Please, try again.'));
13532 anikendra 295
			}
13591 anikendra 296
			$this->response->type('json');
297
			$this->layout = 'ajax';
298
			$this->set(array(
14315 anikendra 299
			    'result' => $response,
13591 anikendra 300
			    // 'callback' => $callback,
301
			    '_serialize' => array('result')
302
			));
303
			$this->render('/Elements/json');		
304
		}			
13532 anikendra 305
	}
306
 
15227 anikendra 307
/*
308
 
13532 anikendra 309
	public function edit($id = null) {
13591 anikendra 310
		throw new NotFoundException(__('Access Denied'));
13532 anikendra 311
		if (!$this->Order->exists($id)) {
312
			throw new NotFoundException(__('Invalid order'));
313
		}
314
		if ($this->request->is(array('post', 'put'))) {
315
			if ($this->Order->save($this->request->data)) {
316
				$this->Session->setFlash(__('The order has been saved.'));
317
				return $this->redirect(array('action' => 'index'));
318
			} else {
319
				$this->Session->setFlash(__('The order could not be saved. Please, try again.'));
320
			}
321
		} else {
322
			$options = array('conditions' => array('Order.' . $this->Order->primaryKey => $id));
323
			$this->request->data = $this->Order->find('first', $options);
324
		}
325
		$users = $this->Order->User->find('list');
326
		$stores = $this->Order->Store->find('list');
327
		$storeOrders = $this->Order->StoreOrder->find('list');
328
		$this->set(compact('users', 'stores', 'storeOrders'));
329
	}
330
 
15227 anikendra 331
 
13532 anikendra 332
	public function delete($id = null) {
13591 anikendra 333
		throw new NotFoundException(__('Access Denied'));
13532 anikendra 334
		$this->Order->id = $id;
335
		if (!$this->Order->exists()) {
336
			throw new NotFoundException(__('Invalid order'));
337
		}
338
		$this->request->onlyAllow('post', 'delete');
339
		if ($this->Order->delete()) {
340
			$this->Session->setFlash(__('The order has been deleted.'));
341
		} else {
342
			$this->Session->setFlash(__('The order could not be deleted. Please, try again.'));
343
		}
344
		return $this->redirect(array('action' => 'index'));
345
	}
15227 anikendra 346
*/
13532 anikendra 347
 
348
/**
349
 * admin_index method
350
 *
351
 * @return void
352
 */
353
	public function admin_index() {
15227 anikendra 354
		$this->checkAcl();
13532 anikendra 355
		$this->Order->recursive = 0;
356
		$this->set('orders', $this->Paginator->paginate());
357
	}
358
 
359
/**
360
 * admin_view method
361
 *
362
 * @throws NotFoundException
363
 * @param string $id
364
 * @return void
365
 */
366
	public function admin_view($id = null) {
15227 anikendra 367
		$this->checkAcl();
13532 anikendra 368
		if (!$this->Order->exists($id)) {
369
			throw new NotFoundException(__('Invalid order'));
370
		}
371
		$options = array('conditions' => array('Order.' . $this->Order->primaryKey => $id));
372
		$this->set('order', $this->Order->find('first', $options));
373
	}
374
 
375
/**
376
 * admin_add method
377
 *
378
 * @return void
379
 */
380
	public function admin_add() {
15227 anikendra 381
		$this->checkAcl();
13532 anikendra 382
		if ($this->request->is('post')) {
383
			$this->Order->create();
384
			if ($this->Order->save($this->request->data)) {
385
				$this->Session->setFlash(__('The order has been saved.'));
386
				return $this->redirect(array('action' => 'index'));
387
			} else {
388
				$this->Session->setFlash(__('The order could not be saved. Please, try again.'));
389
			}
390
		}
391
		$users = $this->Order->User->find('list');
392
		$stores = $this->Order->Store->find('list');
393
		$storeOrders = $this->Order->StoreOrder->find('list');
394
		$this->set(compact('users', 'stores', 'storeOrders'));
395
	}
396
 
397
/**
398
 * admin_edit method
399
 *
400
 * @throws NotFoundException
401
 * @param string $id
402
 * @return void
403
 */
404
	public function admin_edit($id = null) {
15227 anikendra 405
		$this->checkAcl();
13532 anikendra 406
		if (!$this->Order->exists($id)) {
407
			throw new NotFoundException(__('Invalid order'));
408
		}
409
		if ($this->request->is(array('post', 'put'))) {
410
			if ($this->Order->save($this->request->data)) {
411
				$this->Session->setFlash(__('The order has been saved.'));
412
				return $this->redirect(array('action' => 'index'));
413
			} else {
414
				$this->Session->setFlash(__('The order could not be saved. Please, try again.'));
415
			}
416
		} else {
417
			$options = array('conditions' => array('Order.' . $this->Order->primaryKey => $id));
418
			$this->request->data = $this->Order->find('first', $options);
419
		}
420
		$users = $this->Order->User->find('list');
421
		$stores = $this->Order->Store->find('list');
422
		$storeOrders = $this->Order->StoreOrder->find('list');
423
		$this->set(compact('users', 'stores', 'storeOrders'));
424
	}
425
 
426
/**
427
 * admin_delete method
428
 *
429
 * @throws NotFoundException
430
 * @param string $id
431
 * @return void
432
 */
433
	public function admin_delete($id = null) {
15227 anikendra 434
		$this->checkAcl();
13532 anikendra 435
		$this->Order->id = $id;
436
		if (!$this->Order->exists()) {
437
			throw new NotFoundException(__('Invalid order'));
438
		}
439
		$this->request->onlyAllow('post', 'delete');
440
		if ($this->Order->delete()) {
441
			$this->Session->setFlash(__('The order has been deleted.'));
442
		} else {
443
			$this->Session->setFlash(__('The order could not be deleted. Please, try again.'));
444
		}
445
		return $this->redirect(array('action' => 'index'));
14354 anikendra 446
	}
447
 
448
	public function all() {
449
		$page = $this->request->query('page');
450
		$page = isset($page)?$page:1;
14509 anikendra 451
		// $userId = $this->request->query('user_id');
452
		// if(isset($userId) && !empty($userId)){
453
		// 	$this->loadModel('User');
454
		// 	$dbuser = $this->User->findById($userId);
455
		// 	$this->Auth->login($dbuser['User']);	
456
		// }
14354 anikendra 457
		$this->layout = "innerpages";
458
		$url = $this->apihost."orders/?page=$page&window=10";
459
		$response = $this->make_request($url,null);
14509 anikendra 460
		$totalPages = $response['totalPages'];		
14354 anikendra 461
		if(!empty($response['data'])){
462
			$this->set('orders',$response['data']);
463
		}
464
		$ignoredFields = array('imgUrl','status','productTitle','estimatedDeliveryDate','productCode','merchantSubOrderId','productUrl','closed','tracingkUrl','detailedStatus');
465
		$storemapping = Configure::read('storemapping');
466
		$activestores = Configure::read('activestores');
467
		$amazonorderurl = Configure::read('amazonorderurl');
468
		$allusers = $this->Order->User->find('all',array('fields'=>array('first_name','id'),'recursive'=>-1));
469
		foreach($allusers AS $user){
470
			$users[$user['User']['id']] = $user['User']['first_name'];
471
		}
15188 anikendra 472
		$this->layout = 'admin';
14354 anikendra 473
		$this->set(compact('ignoredFields','page','totalPages','userId','activestores','storemapping','amazonorderurl','users'));
474
	}
475
}