Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
14954 manas 1
<?php
2
App::uses('AppController', 'Controller');
3
/**
4
 * NotificationCampaigns Controller
5
 *
6
 * @property NotificationCampaign $NotificationCampaign
7
 * @property PaginatorComponent $Paginator
8
 */
9
class NotificationCampaignsController extends AppController {
10
 
11
/**
12
 * Components
13
 *
14
 * @var array
15
 */
16
	public $components = array('Paginator');
17
 
14964 manas 18
	public function beforeFilter() {		
19
		parent::beforeFilter();
20
		$this->Auth->allow('notificationactive');
21
		$this->apihost = Configure::read('pythonapihost');
22
	}
14954 manas 23
 
24
/**
25
 * admin_index method
26
 *
27
 * @return void
28
 */
29
	public function admin_index() {
30
		$this->NotificationCampaign->recursive = 0;
31
		$this->Paginator->settings = array('order' => array('id'=>'desc'));
32
		$vari = $this->Paginator->paginate();
33
		foreach ($vari as $key => $value) {
34
			$cid=$value['NotificationCampaign']['id'];
35
			$sqlQuery = "SELECT status as status,notification_campaign_id,type,count(*) as count FROM pushnotifications group by notification_campaign_id, type,status";
36
			$resul=$this->NotificationCampaign->query($sqlQuery);	
37
		}
38
		$finalResult = array();
39
		foreach ($resul as $key => $value) {
40
			$finalResult[$value['pushnotifications']['notification_campaign_id']][$value['pushnotifications']['type']]=$value[0]['count'];
41
			$finalResult[$value['pushnotifications']['notification_campaign_id']][$value['pushnotifications']['status']]=$value[0]['count'];
42
			//$finalResult[$value['pushnotifications']['notification_campaign_id']][$value['pushnotifications']['type']]=$value[0]['status'];			
43
		}
44
		/*debug($finalResult);*/
45
		$this->set('notificationCampaigns', $vari);
46
		$this->set('notificationCampaignsCount', $finalResult);
47
 
48
	}
49
 
50
/**
51
 * admin_view method
52
 *
53
 * @throws NotFoundException
54
 * @param string $id
55
 * @return void
56
 */
57
	public function admin_view($id = null) {
58
		if (!$this->NotificationCampaign->exists($id)) {
59
			throw new NotFoundException(__('Invalid notification campaign'));
60
		}
61
		$sort = $this->request->query('type');
62
		$direction = $this->request->query('order');
63
		$options = array('conditions' => array('NotificationCampaign.' . $this->NotificationCampaign->primaryKey => $id));
64
		$userData=$this->NotificationCampaign->find('first', $options);
65
		$userActions = array();
66
		foreach ($userData['Pushnotification'] as $key => $value) {
67
			if($value['type']=='sent'){
68
			$userActions[$value['user_id']][$value['type']] = $value['created'];
69
			$userActions[$value['user_id']]['status'] =$value['status'];
70
			}else{
71
				$userActions[$value['user_id']][$value['type']] = $value['response_time'];
72
			}
73
			 //debug($value);
74
		}
75
		$cid=$userData['NotificationCampaign']['id'];
76
		$sqlQuery = "SELECT status as status,notification_campaign_id,type,count(*) as count FROM pushnotifications where notification_campaign_id=$cid group by type,status";
77
		$resul=$this->NotificationCampaign->query($sqlQuery);	
78
		$finalResult = array();
79
		foreach ($resul as $key => $value) {
80
			$finalResult[$value['pushnotifications']['notification_campaign_id']][$value['pushnotifications']['type']]=$value[0]['count'];
81
			$finalResult[$value['pushnotifications']['notification_campaign_id']][$value['pushnotifications']['status']]=$value[0]['count'];
82
			//$finalResult[$value['pushnotifications']['notification_campaign_id']][$value['pushnotifications']['type']]=$value[0]['status'];			
83
		}
84
		//debug($finalResult);
85
		$this->set('notificationData', $userData);
86
		$this->set('notificationCampaign', $userActions);
87
		$this->set('notificationCount', $finalResult);
88
	}
89
 
90
/**
91
 * admin_add method
92
 *
93
 * @return void
94
 */
95
	public function admin_add() {
96
		if ($this->request->is('post')) {
97
			$this->NotificationCampaign->create();
98
			if ($this->NotificationCampaign->save($this->request->data)) {
99
				$this->Session->setFlash(__('The notification campaign has been saved.'));
100
				return $this->redirect(array('action' => 'index'));
101
			} else {
102
				$this->Session->setFlash(__('The notification campaign could not be saved. Please, try again.'));
103
			}
104
		}
105
	}
106
 
107
/**
108
 * admin_edit method
109
 *
110
 * @throws NotFoundException
111
 * @param string $id
112
 * @return void
113
 */
114
	public function admin_edit($id = null) {
115
		if (!$this->NotificationCampaign->exists($id)) {
116
			throw new NotFoundException(__('Invalid notification campaign'));
117
		}
118
		if ($this->request->is(array('post', 'put'))) {
119
			if ($this->NotificationCampaign->save($this->request->data)) {
120
				$this->Session->setFlash(__('The notification campaign has been saved.'));
121
				return $this->redirect(array('action' => 'index'));
122
			} else {
123
				$this->Session->setFlash(__('The notification campaign could not be saved. Please, try again.'));
124
			}
125
		} else {
126
			$options = array('conditions' => array('NotificationCampaign.' . $this->NotificationCampaign->primaryKey => $id));
127
			$this->request->data = $this->NotificationCampaign->find('first', $options);
128
		}
129
	}
130
 
131
/**
132
 * admin_delete method
133
 *
134
 * @throws NotFoundException
135
 * @param string $id
136
 * @return void
137
 */
138
	public function admin_delete($id = null) {
139
		$this->NotificationCampaign->id = $id;
140
		if (!$this->NotificationCampaign->exists()) {
141
			throw new NotFoundException(__('Invalid notification campaign'));
142
		}
143
		$this->request->onlyAllow('post', 'delete');
144
		if ($this->NotificationCampaign->delete()) {
145
			$this->Session->setFlash(__('The notification campaign has been deleted.'));
146
		} else {
147
			$this->Session->setFlash(__('The notification campaign could not be deleted. Please, try again.'));
148
		}
149
		return $this->redirect(array('action' => 'index'));
150
	}
151
 
152
	public function admin_show($id = null,$type=null,$status=null) {
153
		$sqlQuery = "SELECT * FROM pushnotifications where notification_campaign_id=$id and type='$type' and status=$status" ;
154
		$resul=$this->NotificationCampaign->query($sqlQuery);
155
 
156
		$sqlQuery1 = "SELECT * FROM notification_campaigns where id=$id" ;
157
		$resultData=$this->NotificationCampaign->query($sqlQuery1);
158
 
159
		$this->set('data', $resul);
160
		$this->set('notificationData', $resultData);
161
	}
162
 
163
	public function admin_user($id = null) {
15004 manas 164
		$sqlQuery = "SELECT * FROM pushnotifications where user_id=$id order by id desc" ;
14954 manas 165
		$resul=$this->NotificationCampaign->query($sqlQuery);
166
		$this->set('userdata', $resul);
167
	}
15261 anikendra 168
 
14954 manas 169
	public function admin_sort($id = null) {
170
		$sort = $this->request->query('type');
171
		$direction = $this->request->query('order');
172
		//$cid = $this->request->query('cid');
173
		if($sort=='user_id'){
174
			$sqlQuery = "SELECT * FROM pushnotifications where notification_campaign_id =$id order by $sort $direction" ;			
175
		}
176
		else{
177
			$sqlQuery = "SELECT * FROM pushnotifications where notification_campaign_id =$id order by type='$sort' $direction" ;
178
		}
179
		$resul=$this->NotificationCampaign->query($sqlQuery);
180
		$userActions = array();
181
		foreach ($resul as $key => $value) {
182
			if($value['pushnotifications']['type']=='sent'){
183
			$userActions[$value['pushnotifications']['user_id']][$value['pushnotifications']['type']] = $value['pushnotifications']['created'];
184
			$userActions[$value['pushnotifications']['user_id']]['status'] =$value['pushnotifications']['status'];
185
			}else{
186
				$userActions[$value['pushnotifications']['user_id']][$value['pushnotifications']['type']] = $value['pushnotifications']['response_time'];
187
			}			
188
		}
189
		$this->set('notificationId',$id);
190
		$this->set('sortdata', $userActions);
191
	}
192
 
14964 manas 193
	public function notificationactive(){
194
		$cid = $this->request->query('cid');
14967 manas 195
		$options = array('conditions' => array('id'=> $cid,'status'=>'active','expiresAt >'=>date('Y-m-d H:i:s',time())));
14964 manas 196
		$count = $this->NotificationCampaign->find('count',$options);
197
 
198
		if(!$count){
199
			$result = array('success'=>false);
200
		}else{
201
			$result = array('success'=>true);
14954 manas 202
		}
14964 manas 203
 
204
		$this->response->type('json');
205
		$this->layout = 'ajax';
206
		$this->set(array(
207
		    'result' => $result,
208
		    '_serialize' => array('result')
209
		));
210
		$this->render('/Elements/json');
211
	}
15261 anikendra 212
 
213
	public function admin_send(){
214
		if ($this->request->is('post')) {			
215
			$sql = $this->request->data['NotificationCampaign']['sql'];
216
			if(!empty($sql)){
217
				$users = $this->NotificationCampaign->query($sql);
218
				// debug($users);
219
				$message = $this->request->data['NotificationCampaign'];
220
				// $data = array('name'=>$message['name'],'title'=>$message['title'],'type'=>$message['type'],'message'=>$message['message'],'url'=>$message['url'],'expiresat'=>$message['expiresat'],'sql'=>$message['sql']);
221
				$this->NotificationCampaign->create();
222
				if($this->NotificationCampaign->save($message)){
223
					$message['cid'] = $this->NotificationCampaign->getLastInsertId();
224
				} else{
225
					debug($this->NotificationCampaign->validationErrors);
226
					$message['cid'] = $message['name'];
227
				}				
228
				$this->loadModel('Pushnotification');
229
				foreach ($users as $key => $value) {									
230
					$data = array('notification_campaign_id'=>$message['cid'],'user_id'=>$value['User']['id'],'type'=>'pending');
231
					$this->Pushnotification->create();
232
					$this->Pushnotification->save($data);
233
				}
234
				$this->Session->setFlash(__('Push notification scheduled for '.sizeof($users).' users'));
235
				return $this->redirect(array('controller' => 'administration', 'action' => 'dashboard', 'admin' => false));
236
			}
237
		}
238
	}
14954 manas 239
}