Subversion Repositories SmartDukaan

Rev

Rev 15378 | Rev 15654 | 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
 * SocialProfiles Controller
5
 *
6
 * @property SocialProfile $SocialProfile
7
 * @property PaginatorComponent $Paginator
8
 */
9
class SocialProfilesController extends AppController {
10
 
11
/**
12
 * Components
13
 *
14
 * @var array
15
 */
16
	public $components = array('Paginator');
17
 
18
	public function beforeFilter() {
19
		parent::beforeFilter();
20
		$this->Auth->allow('add');
21
		$callback = $this->request->query('callback');
13946 anikendra 22
		//Configure::load('dev');
13673 anikendra 23
		$this->apihost = Configure::read('saholicapihost');
13532 anikendra 24
	}
25
/**
26
 * index method
27
 *
28
 * @return void
29
 */
30
	public function index() {
31
		throw new NotFoundException(__('Access Denied'));
32
		$this->SocialProfile->recursive = 0;
33
		$this->set('socialProfiles', $this->Paginator->paginate());
34
	}
35
 
36
/**
37
 * view method
38
 *
39
 * @throws NotFoundException
40
 * @param string $id
41
 * @return void
42
 */
43
	public function view($id = null) {
44
		throw new NotFoundException(__('Access Denied'));
45
		if (!$this->SocialProfile->exists($id)) {
46
			throw new NotFoundException(__('Invalid social profile'));
47
		}
48
		$options = array('conditions' => array('SocialProfile.' . $this->SocialProfile->primaryKey => $id));
49
		$this->set('socialProfile', $this->SocialProfile->find('first', $options));
50
	}
51
 
52
/**
53
 * add method
54
 *
55
 * @return void
56
 */
57
	public function add() {
14068 anikendra 58
		$mobileRequired = true;
14768 anikendra 59
		$referrerRequired = true;
13532 anikendra 60
		if ($this->request->is('post')) {
13633 anikendra 61
			$this->log(print_r($this->request->data,1),'registration');
13532 anikendra 62
			$data = $this->request->data;
63
			$data['social_id'] = $this->request->data['id'];
64
			$data['access_token'] = $this->request->data['token'];
65
			unset($data['id']);
66
			unset($data['token']);
67
			unset($data['gender']);
68
			$this->response->type('json');
69
			$this->layout = 'ajax';
70
			$conditions = array('social_id'=>$this->request->data['id'],'type'=>$this->request->data['type']);
71
			$socialProfile = $this->SocialProfile->find('first',array('conditions'=>$conditions));
14783 anikendra 72
			//If Social profile doesn't exist
73
			if(empty($socialProfile)) {
13532 anikendra 74
				//Check if user with same email is registered and if so just add his profile
13659 anikendra 75
				if(!empty($this->request->data['email'])) {
76
					$conditions = array('email'=>$this->request->data['email']);
77
					$user = $this->SocialProfile->User->find('first',array('conditions'=>$conditions));
14783 anikendra 78
					/*if(!empty($this->request->data['referrer']) || !empty($this->request->data['utm_campaign'])){
14768 anikendra 79
						$referrerRequired = false;
14783 anikendra 80
					}*/
13659 anikendra 81
					if(!empty($user)) {
14068 anikendra 82
						//Existing user
83
						if(!empty($user['User']['mobile_number'])){
84
							$mobileRequired = false;
85
						}
14783 anikendra 86
						if(!empty($user['User']['activated']) && $user['User']['activated']==1) {
14768 anikendra 87
							$referrerRequired = false;
88
						}
14561 anikendra 89
						//Don't update referrer
90
						// if(strlen(trim($this->request->data['referrer']))>0) {
91
							// $userData = array('id'=>$user['User']['id'],'email'=>$this->request->data['email'],'username'=>$this->request->data['email'],'first_name'=>$this->request->data['name'],'gender'=>$this->request->data['gender'],'referrer'=>$this->request->data['referrer'],'profile_pic'=> $this->request->data['profile_pic']);
92
						// } else{
14424 anikendra 93
							$userData = array('id'=>$user['User']['id'],'email'=>$this->request->data['email'],'username'=>$this->request->data['email'],'first_name'=>$this->request->data['name'],'gender'=>$this->request->data['gender'],'profile_pic'=> $this->request->data['profile_pic']);
14561 anikendra 94
						// }
13768 anikendra 95
						$this->SocialProfile->User->save($userData);
13659 anikendra 96
						$data['user_id'] = $user['User']['id'];	
14884 anikendra 97
					} else {						
13659 anikendra 98
						//Create a new user and then insert user_id in social_profiles table
13769 anikendra 99
						$userData = array('profile_pic'=> $this->request->data['profile_pic'], 'email'=>$this->request->data['email'],'username'=>$this->request->data['email'],'first_name'=>$this->request->data['name'],'gender'=>$this->request->data['gender'],'referrer'=>$this->request->data['referrer']);
14768 anikendra 100
						//Check for utm parameters
14702 anikendra 101
						if(!empty($this->request->data['utm_source'])){
102
							$userData['utm_source'] = $this->request->data['utm_source'];
103
						}
104
						if(!empty($this->request->data['utm_medium'])){
105
							$userData['utm_medium'] = $this->request->data['utm_medium'];
106
						}
107
						if(!empty($this->request->data['utm_term'])){
108
							$userData['utm_term'] = $this->request->data['utm_term'];
109
						}
110
						if(!empty($this->request->data['utm_content'])){
111
							$userData['utm_content'] = $this->request->data['utm_content'];
112
						}
113
						if(!empty($this->request->data['utm_campaign'])){
114
							$userData['utm_campaign'] = $this->request->data['utm_campaign'];
115
						}
14783 anikendra 116
						if(!empty($this->request->data['utm_campaign']) || !empty($this->request->data['referrer'])) {
15378 anikendra 117
							$userData['activated'] = 1;							
14783 anikendra 118
							$referrerRequired = false;
119
						}
13659 anikendra 120
						if($this->SocialProfile->User->save($userData)) {
14424 anikendra 121
							$data['user_id'] = $this->SocialProfile->User->getLastInsertId();
14068 anikendra 122
						} else{
14768 anikendra 123
							$result = array('success' => false, 'message' => $this->SocialProfile->User->validationErrors,'mobileRequired'=>$mobileRequired,'referrerRequired'=>$referrerRequired);
13659 anikendra 124
							break;
125
						}
13532 anikendra 126
					}
13659 anikendra 127
					$this->SocialProfile->create();
128
					if ($this->SocialProfile->save($data)) {
14768 anikendra 129
						$result = array('success' => true, 'message' => 'Social Profile Created','id' => $data['user_id'],'mobileRequired'=>$mobileRequired,'referrerRequired'=>$referrerRequired);
15378 anikendra 130
						if(!$referrerRequired) {
131
							$this->markUserActivated($data['user_id']);
132
						}
13659 anikendra 133
					} else {
14783 anikendra 134
						$result = array('success' => false, 'message' => 'Social Profile Could Not Be Created','id' => -1,'mobileRequired'=>$mobileRequired,'referrerRequired'=>$referrerRequired);
13659 anikendra 135
					}
13532 anikendra 136
				} else {
14783 anikendra 137
					$result = array('success' => false, 'message' => "Email is missing",'mobileRequired'=>$mobileRequired,'referrerRequired'=>$referrerRequired);
13659 anikendra 138
					break;
139
				}				
13532 anikendra 140
			} else {
14783 anikendra 141
				//If Social Profile exists, do not update referrer
14768 anikendra 142
				$userData = array('id'=>$socialProfile['SocialProfile']['user_id'],'email'=>$this->request->data['email'],'username'=>$this->request->data['email'],'first_name'=>$this->request->data['name'],'gender'=>$this->request->data['gender'],'profile_pic'=> $this->request->data['profile_pic']);
143
				//Check for utm parameters
144
				if(!empty($this->request->data['utm_source'])){
145
					$userData['utm_source'] = $this->request->data['utm_source'];
146
				}
147
				if(!empty($this->request->data['utm_medium'])){
148
					$userData['utm_medium'] = $this->request->data['utm_medium'];
149
				}
150
				if(!empty($this->request->data['utm_term'])){
151
					$userData['utm_term'] = $this->request->data['utm_term'];
152
				}
153
				if(!empty($this->request->data['utm_content'])){
154
					$userData['utm_content'] = $this->request->data['utm_content'];
155
				}
156
				if(!empty($this->request->data['utm_campaign'])){
157
					$userData['utm_campaign'] = $this->request->data['utm_campaign'];
158
				}				
13768 anikendra 159
				$this->SocialProfile->User->save($userData);
14890 anikendra 160
				//Update token ra
161
				$socialProfile['SocialProfile']['access_token'] = $data['access_token'];
162
				$this->SocialProfile->save($socialProfile);
14139 anikendra 163
				//Check for mobile number
164
				$mobilenumber = $this->SocialProfile->User->find('first',array('conditions'=>array('id'=>$socialProfile['SocialProfile']['user_id']),'recursive'=>-1));
165
				if(!empty($mobilenumber['User']['mobile_number'])){
166
					$mobileRequired = false;
167
				}
14783 anikendra 168
				//Check if activated feild is set or not.
169
				if(!empty($mobilenumber['User']['activated'])) {
14768 anikendra 170
					$referrerRequired = false;
171
				}
13683 anikendra 172
				$data['user_id'] = $socialProfile['SocialProfile']['user_id'];
14768 anikendra 173
				$result = array('success' => true, 'message' => 'Existing Social Profile','id' => $socialProfile['SocialProfile']['user_id'],'mobileRequired'=>$mobileRequired,'referrerRequired'=>$referrerRequired);
13591 anikendra 174
			}
13532 anikendra 175
		}
13673 anikendra 176
		$this->updateSaholicUser($data['user_id'],$this->request->data['email']);
13532 anikendra 177
		$this->set(array(
178
		    'result' => $result,
179
		    'callback' => $callback,
180
		    '_serialize' => array('result')
181
		));
14425 anikendra 182
		$this->log(print_r($result,1),'registration');
15606 anikendra 183
		$this->identifyUser($$data['user_id']);
13532 anikendra 184
		$this->render('/Elements/json');
185
	}
186
 
15606 anikendra 187
	private function identifyUser($id) {
188
		$options = array('conditions'=>array('id'=>$id),'recursive'=>-1);
189
		$user = $this->User->find('first',$options);
190
		$pmaurl = Configure::read('pmaurl');
191
		if(!empty($user)) {
192
			$data = array('id'=>$user['User']['id'],'email'=>$user['User']['email'],'mobilenumber'=>$user['User']['mobilenumber'],'name'=>$user['User']['first_name'],'referral_code'=>$user['User']['referrer']);
193
			$this->post_request($pmaurl.'/identify',$data);	
194
		}
195
	}
196
 
13673 anikendra 197
	private function updateSaholicUser($userId,$email=null) {
198
		if(!$email){
199
			//Handle it properly
200
			return;
201
		}
13683 anikendra 202
		$this->log('userId '.$userId,'registration');
203
		$this->log('email '.$email ,'registration');
13673 anikendra 204
		$this->loadModel('UserAccount');
205
		$options = array('conditions'=>array('user_id' => $userId,'account_type' => 'saholic'),'recursive'=>-1);
206
		$exists = $this->UserAccount->find('count',$options);
207
		if(!$exists){
14685 anikendra 208
			$url = $this->apihost."register?email=$email&from=profitmandi";
13673 anikendra 209
			$response = $this->make_request($url,null);
13683 anikendra 210
			$this->log('response '.print_r($response,1),'registration');
13673 anikendra 211
			if(!empty($response)){
14685 anikendra 212
				if($response['userId']<1)return;
13673 anikendra 213
				$data = array('account_type'=>'saholic','user_id'=>$userId,'account_key'=>$response['userId']);
214
				$this->UserAccount->create();
13683 anikendra 215
				$this->UserAccount->save($data);
14166 anikendra 216
				$data = array('account_type'=>'cartId','user_id'=>$userId,'account_key'=>$response['cartId']);
217
				$this->UserAccount->create();
218
				$this->UserAccount->save($data);
13673 anikendra 219
			}
220
		}
221
	}
13532 anikendra 222
/**
223
 * edit method
224
 *
225
 * @throws NotFoundException
226
 * @param string $id
227
 * @return void
228
 */
229
	public function edit($id = null) {
230
		if (!$this->SocialProfile->exists($id)) {
231
			throw new NotFoundException(__('Invalid social profile'));
232
		}
233
		if ($this->request->is(array('post', 'put'))) {
234
			if ($this->SocialProfile->save($this->request->data)) {
235
				$this->Session->setFlash(__('The social profile has been saved.'));
236
				return $this->redirect(array('action' => 'index'));
237
			} else {
238
				$this->Session->setFlash(__('The social profile could not be saved. Please, try again.'));
239
			}
240
		} else {
241
			$options = array('conditions' => array('SocialProfile.' . $this->SocialProfile->primaryKey => $id));
242
			$this->request->data = $this->SocialProfile->find('first', $options);
243
		}
244
		$users = $this->SocialProfile->User->find('list');
245
		$this->set(compact('users'));
246
	}
247
 
248
/**
249
 * delete method
250
 *
251
 * @throws NotFoundException
252
 * @param string $id
253
 * @return void
254
 */
255
	public function delete($id = null) {
256
		throw new NotFoundException(__('Access Denied'));
257
		$this->SocialProfile->id = $id;
258
		if (!$this->SocialProfile->exists()) {
259
			throw new NotFoundException(__('Invalid social profile'));
260
		}
261
		$this->request->onlyAllow('post', 'delete');
262
		if ($this->SocialProfile->delete()) {
263
			$this->Session->setFlash(__('The social profile has been deleted.'));
264
		} else {
265
			$this->Session->setFlash(__('The social profile could not be deleted. Please, try again.'));
266
		}
267
		return $this->redirect(array('action' => 'index'));
268
	}
269
 
270
/**
271
 * admin_index method
272
 *
273
 * @return void
274
 */
275
	public function admin_index() {
276
		$this->SocialProfile->recursive = 0;
277
		$this->set('socialProfiles', $this->Paginator->paginate());
278
	}
279
 
280
/**
281
 * admin_view method
282
 *
283
 * @throws NotFoundException
284
 * @param string $id
285
 * @return void
286
 */
287
	public function admin_view($id = null) {
288
		if (!$this->SocialProfile->exists($id)) {
289
			throw new NotFoundException(__('Invalid social profile'));
290
		}
291
		$options = array('conditions' => array('SocialProfile.' . $this->SocialProfile->primaryKey => $id));
292
		$this->set('socialProfile', $this->SocialProfile->find('first', $options));
293
	}
294
 
295
/**
296
 * admin_add method
297
 *
298
 * @return void
299
 */
300
	public function admin_add() {
301
		if ($this->request->is('post')) {
302
			$this->SocialProfile->create();
303
			if ($this->SocialProfile->save($this->request->data)) {
304
				$this->Session->setFlash(__('The social profile has been saved.'));
305
				return $this->redirect(array('action' => 'index'));
306
			} else {
307
				$this->Session->setFlash(__('The social profile could not be saved. Please, try again.'));
308
			}
309
		}
310
		$users = $this->SocialProfile->User->find('list');
311
		$this->set(compact('users'));
312
	}
313
 
314
/**
315
 * admin_edit method
316
 *
317
 * @throws NotFoundException
318
 * @param string $id
319
 * @return void
320
 */
321
	public function admin_edit($id = null) {
322
		if (!$this->SocialProfile->exists($id)) {
323
			throw new NotFoundException(__('Invalid social profile'));
324
		}
325
		if ($this->request->is(array('post', 'put'))) {
326
			if ($this->SocialProfile->save($this->request->data)) {
327
				$this->Session->setFlash(__('The social profile has been saved.'));
328
				return $this->redirect(array('action' => 'index'));
329
			} else {
330
				$this->Session->setFlash(__('The social profile could not be saved. Please, try again.'));
331
			}
332
		} else {
333
			$options = array('conditions' => array('SocialProfile.' . $this->SocialProfile->primaryKey => $id));
334
			$this->request->data = $this->SocialProfile->find('first', $options);
335
		}
336
		$users = $this->SocialProfile->User->find('list');
337
		$this->set(compact('users'));
338
	}
339
 
340
/**
341
 * admin_delete method
342
 *
343
 * @throws NotFoundException
344
 * @param string $id
345
 * @return void
346
 */
347
	public function admin_delete($id = null) {
348
		$this->SocialProfile->id = $id;
349
		if (!$this->SocialProfile->exists()) {
350
			throw new NotFoundException(__('Invalid social profile'));
351
		}
352
		$this->request->onlyAllow('post', 'delete');
353
		if ($this->SocialProfile->delete()) {
354
			$this->Session->setFlash(__('The social profile has been deleted.'));
355
		} else {
356
			$this->Session->setFlash(__('The social profile could not be deleted. Please, try again.'));
357
		}
358
		return $this->redirect(array('action' => 'index'));
359
	}}