Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5935 | Rev 5974 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 5935 Rev 5973
Línea 30... Línea 30...
30
    /**
30
    /**
31
     *
31
     *
32
     * @var UserMapper
32
     * @var UserMapper
33
     */
33
     */
34
    private static $_instance;
34
    private static $_instance;
35
    
35
 
36
    /**
36
    /**
37
     *
37
     *
38
     * @param AdapterInterface $adapter
38
     * @param AdapterInterface $adapter
39
     */
39
     */
40
    private function __construct($adapter)
40
    private function __construct($adapter)
41
    {
41
    {
42
        parent::__construct($adapter);
42
        parent::__construct($adapter);
43
    }
43
    }
44
    
44
 
45
    /**
45
    /**
46
     *
46
     *
47
     * @param AdapterInterface $adapter
47
     * @param AdapterInterface $adapter
48
     * @return UserMapper
48
     * @return UserMapper
49
     */
49
     */
50
    public static function getInstance($adapter)
50
    public static function getInstance($adapter)
51
    {
51
    {
52
        if(self::$_instance == null) {
52
        if (self::$_instance == null) {
53
            self::$_instance = new UserMapper($adapter);
53
            self::$_instance = new UserMapper($adapter);
54
        }
54
        }
55
        return self::$_instance;
55
        return self::$_instance;
56
    }
56
    }
57
    
57
 
58
    /**
58
    /**
59
     *
59
     *
60
     * @param string $uuid
60
     * @param string $uuid
61
     * @return User
61
     * @return User
62
     */
62
     */
63
    public function fetchOneByUuid($uuid)
63
    public function fetchOneByUuid($uuid)
64
    {
64
    {
65
        $prototype = new User();
65
        $prototype = new User();
66
        $select = $this->sql->select(self::_TABLE);
66
        $select = $this->sql->select(self::_TABLE);
67
        $select->where->equalTo('uuid', $uuid);
67
        $select->where->equalTo('uuid', $uuid);
68
      
68
 
69
        
69
 
70
        return $this->executeFetchOneObject($select, $prototype);
70
        return $this->executeFetchOneObject($select, $prototype);
71
    }
71
    }
72
    
72
 
73
    
73
 
74
    /**
74
    /**
75
     *
75
     *
76
     * @return User
76
     * @return User
77
     */
77
     */
78
    public function fetchOneDefaultForConnection()
78
    public function fetchOneDefaultForConnection()
79
    {
79
    {
80
        $prototype = new User();
80
        $prototype = new User();
81
        $select = $this->sql->select(self::_TABLE);
81
        $select = $this->sql->select(self::_TABLE);
82
        $select->where->equalTo('default_for_connection', User::DEFAULT_FOR_CONNECTION_YES);
82
        $select->where->equalTo('default_for_connection', User::DEFAULT_FOR_CONNECTION_YES);
83
        
83
 
84
        
84
 
85
        return $this->executeFetchOneObject($select, $prototype);
85
        return $this->executeFetchOneObject($select, $prototype);
86
    }
86
    }
87
    
87
 
88
    
88
 
89
    
89
 
90
    /**
90
    /**
91
     *
91
     *
92
     * @param string $uuid
92
     * @param string $uuid
93
     * @param int $network_id
93
     * @param int $network_id
94
     * @return User
94
     * @return User
Línea 97... Línea 97...
97
    {
97
    {
98
        $prototype = new User();
98
        $prototype = new User();
99
        $select = $this->sql->select(self::_TABLE);
99
        $select = $this->sql->select(self::_TABLE);
100
        $select->where->equalTo('uuid', $uuid);
100
        $select->where->equalTo('uuid', $uuid);
101
        $select->where->equalTo('network_id', $network_id);
101
        $select->where->equalTo('network_id', $network_id);
102
        
102
 
103
        
103
 
104
        return $this->executeFetchOneObject($select, $prototype);
104
        return $this->executeFetchOneObject($select, $prototype);
105
    }
105
    }
106
    
106
 
107
    /**
107
    /**
108
     * 
108
     * 
109
     * @param int $id
109
     * @param int $id
110
     * @return User
110
     * @return User
111
     */
111
     */
112
    public function fetchOne($id)
112
    public function fetchOne($id)
113
    {
113
    {
114
        $prototype = new User();
114
        $prototype = new User();
115
        $select = $this->sql->select(self::_TABLE);
115
        $select = $this->sql->select(self::_TABLE);
116
        $select->where->equalTo('id', $id);
116
        $select->where->equalTo('id', $id);
117
        
117
 
118
        return $this->executeFetchOneObject($select, $prototype);
118
        return $this->executeFetchOneObject($select, $prototype);
119
    }
119
    }
120
    
120
 
121
    public function fetchOneRelation($id)
121
    public function fetchOneRelation($id)
122
    {
122
    {
123
        $prototype = new User();
123
        $prototype = new User();
124
        $select = $this->sql->select(self::_TABLE);
124
        $select = $this->sql->select(self::_TABLE);
125
        $select->where->equalTo('id', $id);
125
        $select->where->equalTo('id', $id);
126
        
126
 
127
        return $this->executeFetchOneObject($select, $prototype);
127
        return $this->executeFetchOneObject($select, $prototype);
128
    }
128
    }
129
    
129
 
Línea 130... Línea 130...
130
 
130
 
131
    /**
131
    /**
132
     * 
132
     * 
133
     * @param string $email
133
     * @param string $email
Línea 136... Línea 136...
136
    public function fetchOneByEmail($email)
136
    public function fetchOneByEmail($email)
137
    {
137
    {
138
        $prototype = new User();
138
        $prototype = new User();
139
        $select = $this->sql->select(self::_TABLE);
139
        $select = $this->sql->select(self::_TABLE);
140
        $select->where->equalTo('email', $email);
140
        $select->where->equalTo('email', $email);
141
        
141
 
142
        //echo $select->getSqlString($this->adapter->platform); exit;
142
        //echo $select->getSqlString($this->adapter->platform); exit;
143
        
143
 
144
        return $this->executeFetchOneObject($select, $prototype);
144
        return $this->executeFetchOneObject($select, $prototype);
145
    }
145
    }
146
    
146
 
147
    /**
147
    /**
148
     *
148
     *
149
     * @param string $email
149
     * @param string $email
150
     * @param int $network_id
150
     * @param int $network_id
151
     * @return void|User
151
     * @return void|User
Línea 154... Línea 154...
154
    {
154
    {
155
        $prototype = new User();
155
        $prototype = new User();
156
        $select = $this->sql->select(self::_TABLE);
156
        $select = $this->sql->select(self::_TABLE);
157
        $select->where->equalTo('email', $email);
157
        $select->where->equalTo('email', $email);
158
        $select->where->equalTo('network_id', $network_id);
158
        $select->where->equalTo('network_id', $network_id);
159
        
159
 
160
        //echo $select->getSqlString($this->adapter->platform); exit;
160
        //echo $select->getSqlString($this->adapter->platform); exit;
161
        
161
 
162
        return $this->executeFetchOneObject($select, $prototype);
162
        return $this->executeFetchOneObject($select, $prototype);
163
    }
163
    }
164
    
164
 
165
    /**
165
    /**
166
     *
166
     *
167
     * @param string $email
167
     * @param string $email
168
     * @param int $network_id
168
     * @param int $network_id
169
     * @return void|User
169
     * @return void|User
Línea 174... Línea 174...
174
        $select = $this->sql->select(self::_TABLE);
174
        $select = $this->sql->select(self::_TABLE);
175
        $select->where->equalTo('email', $email);
175
        $select->where->equalTo('email', $email);
176
        $select->where->equalTo('network_id', $network_id);
176
        $select->where->equalTo('network_id', $network_id);
177
        $select->where->equalTo('status', User::STATUS_ACTIVE);
177
        $select->where->equalTo('status', User::STATUS_ACTIVE);
178
        $select->where->equalTo('email_verified', User::EMAIL_VERIFIED_YES);
178
        $select->where->equalTo('email_verified', User::EMAIL_VERIFIED_YES);
179
        
179
 
180
        //echo $select->getSqlString($this->adapter->platform); exit;
180
        //echo $select->getSqlString($this->adapter->platform); exit;
181
        
181
 
182
        return $this->executeFetchOneObject($select, $prototype);
182
        return $this->executeFetchOneObject($select, $prototype);
183
    }
183
    }
184
    
184
 
185
    
185
 
186
    
186
 
187
    /**
187
    /**
188
     * 
188
     * 
189
     * @param string $password_reset_key
189
     * @param string $password_reset_key
190
     * @return void|User
190
     * @return void|User
191
     */
191
     */
192
    public function fetchOneByPasswordResetKey($password_reset_key)
192
    public function fetchOneByPasswordResetKey($password_reset_key)
193
    {
193
    {
194
        $prototype = new User();
194
        $prototype = new User();
195
        $select = $this->sql->select(self::_TABLE);
195
        $select = $this->sql->select(self::_TABLE);
196
        $select->where->equalTo('password_reset_key', $password_reset_key);
196
        $select->where->equalTo('password_reset_key', $password_reset_key);
197
        
197
 
198
        return $this->executeFetchOneObject($select, $prototype);
198
        return $this->executeFetchOneObject($select, $prototype);
199
    }
199
    }
200
    
200
 
201
    
201
 
202
    /**
202
    /**
203
     *
203
     *
204
     * @param string $password_reset_key
204
     * @param string $password_reset_key
205
     * @param int $network_id
205
     * @param int $network_id
206
     * @return void|User
206
     * @return void|User
Línea 209... Línea 209...
209
    {
209
    {
210
        $prototype = new User();
210
        $prototype = new User();
211
        $select = $this->sql->select(self::_TABLE);
211
        $select = $this->sql->select(self::_TABLE);
212
        $select->where->equalTo('password_reset_key', $password_reset_key);
212
        $select->where->equalTo('password_reset_key', $password_reset_key);
213
        $select->where->equalTo('network_id', $network_id);
213
        $select->where->equalTo('network_id', $network_id);
214
        
214
 
215
        return $this->executeFetchOneObject($select, $prototype);
215
        return $this->executeFetchOneObject($select, $prototype);
216
    }
216
    }
217
    
217
 
218
    /**
218
    /**
219
     * 
219
     * 
220
     * @param string $activation_key
220
     * @param string $activation_key
221
     * @return void|User
221
     * @return void|User
222
     */
222
     */
223
    public function fetchOneByActivationKey($activation_key)
223
    public function fetchOneByActivationKey($activation_key)
224
    {
224
    {
225
        $prototype = new User();
225
        $prototype = new User();
226
        $select = $this->sql->select(self::_TABLE);
226
        $select = $this->sql->select(self::_TABLE);
227
        $select->where->equalTo('activation_key', $activation_key);
227
        $select->where->equalTo('activation_key', $activation_key);
228
        
228
 
229
        return $this->executeFetchOneObject($select, $prototype);
229
        return $this->executeFetchOneObject($select, $prototype);
230
    }
230
    }
231
    
231
 
232
    /**
232
    /**
233
     *
233
     *
234
     * @param string $activation_key
234
     * @param string $activation_key
235
     * @param int $network_id
235
     * @param int $network_id
236
     * @return void|User
236
     * @return void|User
Línea 239... Línea 239...
239
    {
239
    {
240
        $prototype = new User();
240
        $prototype = new User();
241
        $select = $this->sql->select(self::_TABLE);
241
        $select = $this->sql->select(self::_TABLE);
242
        $select->where->equalTo('activation_key', $activation_key);
242
        $select->where->equalTo('activation_key', $activation_key);
243
        $select->where->equalTo('network_id', $network_id);
243
        $select->where->equalTo('network_id', $network_id);
244
        
-
 
Línea -... Línea 244...
-
 
244
 
245
 
245
 
246
        
246
 
247
        return $this->executeFetchOneObject($select, $prototype);
247
        return $this->executeFetchOneObject($select, $prototype);
248
    }
248
    }
249
    
249
 
250
    
250
 
251
    /**
251
    /**
252
     *
252
     *
253
     * @param int $network_id
253
     * @param int $network_id
254
     * @return int
254
     * @return int
255
     */
255
     */
256
    public function fetchCountByNetworkId($network_id)
256
    public function fetchCountByNetworkId($network_id)
257
    {
257
    {
258
        
258
 
259
        $select = $this->sql->select(self::_TABLE);
259
        $select = $this->sql->select(self::_TABLE);
260
        $select->columns(['total' => new Expression('COUNT(*)')]);
260
        $select->columns(['total' => new Expression('COUNT(*)')]);
261
        $select->where->equalTo('network_id', $network_id);
261
        $select->where->equalTo('network_id', $network_id);
262
       
262
 
263
        $record = $this->executeFetchOneArray($select);
263
        $record = $this->executeFetchOneArray($select);
264
        
264
 
265
        return $record['total'];
265
        return $record['total'];
266
    }
266
    }
267
    
267
 
268
    /**
268
    /**
269
     *
269
     *
270
     * @param int $network_id
270
     * @param int $network_id
271
     * @return int
271
     * @return int
272
     */
272
     */
273
    public function fetchCountActiveByDefaultNetworkId($network_id)
273
    public function fetchCountActiveByDefaultNetworkId($network_id)
274
    {
274
    {
275
        
275
 
276
        $select = $this->sql->select(self::_TABLE);
276
        $select = $this->sql->select(self::_TABLE);
277
        $select->columns(['total' => new Expression('COUNT(*)')]);
277
        $select->columns(['total' => new Expression('COUNT(*)')]);
278
        $select->where->equalTo('network_id', $network_id);
278
        $select->where->equalTo('network_id', $network_id);
279
        $select->where->in('usertype_id', [UserType::USER, UserType::ADMIN]);
279
        $select->where->in('usertype_id', [UserType::USER, UserType::ADMIN]);
280
        $select->where->equalTo('status', User::STATUS_ACTIVE);
280
        $select->where->equalTo('status', User::STATUS_ACTIVE);
281
        
281
 
282
        $record = $this->executeFetchOneArray($select);
282
        $record = $this->executeFetchOneArray($select);
283
        
283
 
284
        return $record['total'];
284
        return $record['total'];
285
    }
285
    }
286
   
286
 
287
    /**
287
    /**
288
     *
288
     *
289
     * @param int $network_id
289
     * @param int $network_id
290
     * @return int
290
     * @return int
291
     */
291
     */
292
    public function fetchCountActiveByOtherNetworkId($network_id)
292
    public function fetchCountActiveByOtherNetworkId($network_id)
293
    {
293
    {
294
        
294
 
295
        $select = $this->sql->select(self::_TABLE);
295
        $select = $this->sql->select(self::_TABLE);
296
        $select->columns(['total' => new Expression('COUNT(*)')]);
296
        $select->columns(['total' => new Expression('COUNT(*)')]);
297
        $select->where->equalTo('network_id', $network_id);
297
        $select->where->equalTo('network_id', $network_id);
298
        $select->where->in('usertype_id', [UserType::USER, UserType::ADMIN]);
298
        $select->where->in('usertype_id', [UserType::USER, UserType::ADMIN]);
299
        $select->where->equalTo('status', User::STATUS_ACTIVE);
299
        $select->where->equalTo('status', User::STATUS_ACTIVE);
300
        $select->where->equalTo('request_access', User::REQUEST_ACCESS_APPROVED);
300
        $select->where->equalTo('request_access', User::REQUEST_ACCESS_APPROVED);
Línea 301... Línea 301...
301
        
301
 
302
 
302
 
303
        $record = $this->executeFetchOneArray($select);
303
        $record = $this->executeFetchOneArray($select);
304
        
304
 
305
        return $record['total'];
305
        return $record['total'];
306
    }
306
    }
Línea 307... Línea 307...
307
    
307
 
308
    
308
 
309
 
309
 
310
    /**
310
    /**
311
     * 
311
     * 
312
     * @param string $keyword
312
     * @param string $keyword
313
     * @param int $current_user
313
     * @param int $current_user
314
     * @return User[]
314
     * @return User[]
315
     */
315
     */
316
    public function fetchAllByKeyword($keyword, $current_user = 0)
316
    public function fetchAllByKeyword($keyword, $current_user = 0)
Línea 317... Línea 317...
317
    {
317
    {
318
        
318
 
319
        $prototype = new User();
319
        $prototype = new User();
320
 
320
 
321
        $select = $this->sql->select(self::_TABLE);
321
        $select = $this->sql->select(self::_TABLE);
322
       
322
 
323
        $select->where->equalTo('status', User::STATUS_ACTIVE);
323
        $select->where->equalTo('status', User::STATUS_ACTIVE);
324
        $select->where->notEqualTo('id', $current_user);
324
        $select->where->notEqualTo('id', $current_user);
325
        $select->where->and->nest()
325
        $select->where->and->nest()
326
            ->like('first_name', '%' . $keyword . '%')
326
            ->like('first_name', '%' . $keyword . '%')
327
            ->or->like('last_name', '%' . $keyword . '%')
327
            ->or->like('last_name', '%' . $keyword . '%')
328
            ->or->like(new Expression("CONCAT(first_name,' ',last_name)"), '%'. $keyword . '%')
328
            ->or->like(new Expression("CONCAT(first_name,' ',last_name)"), '%' . $keyword . '%')
329
            ->unnest();
329
            ->unnest();
330
        
330
 
331
        
331
 
332
        return $this->executeFetchAllObject($select, $prototype);
332
        return $this->executeFetchAllObject($select, $prototype);
333
    }
333
    }
334
    
334
 
335
    /**
335
    /**
336
     * 
336
     * 
337
     * @param int[] $ids
337
     * @param int[] $ids
338
     * @param int $current_user
338
     * @param int $current_user
339
     * @param string $status
339
     * @param string $status
340
     * @return User[]
340
     * @return User[]
341
     */
341
     */
342
    public function fetchAllByIds($ids, $current_user = 0, $status = User::STATUS_ACTIVE)
342
    public function fetchAllByIds($ids, $current_user = 0, $status = User::STATUS_ACTIVE)
343
    {
343
    {
344
        
344
 
345
        $prototype = new User();
345
        $prototype = new User();
346
        $select = $this->sql->select(self::_TABLE);
346
        $select = $this->sql->select(self::_TABLE);
347
        
347
 
348
        
348
 
349
        $select->where->equalTo('status', User::STATUS_ACTIVE);
349
        $select->where->equalTo('status', User::STATUS_ACTIVE);
350
        $select->where->and->in('id',$ids);
350
        $select->where->and->in('id', $ids);
351
        
351
 
352
        if($current_user) {
352
        if ($current_user) {
353
            $select->where->and->notEqualTo('id ', $current_user);
353
            $select->where->and->notEqualTo('id ', $current_user);
354
        }
354
        }
355
        $select->order(['first_name ASC', 'last_name ASC', 'email ASC']);
355
        $select->order(['first_name ASC', 'last_name ASC', 'email ASC']);
356
        
356
 
357
        return $this->executeFetchAllObject($select, $prototype);
357
        return $this->executeFetchAllObject($select, $prototype);
358
    }
358
    }
359
    
359
 
360
    /**
360
    /**
361
     *
361
     *
362
     * @param int[] $ids
362
     * @param int[] $ids
363
     * @param string $search
363
     * @param string $search
364
     * @param int $current_user
364
     * @param int $current_user
365
     * @param string $status
365
     * @param string $status
366
     * @return User[]
366
     * @return User[]
367
     */
367
     */
368
    public function fetchAllByIdsAndSearch($ids, $search, $current_user = 0, $status = User::STATUS_ACTIVE)
368
    public function fetchAllByIdsAndSearch($ids, $search, $current_user = 0, $status = User::STATUS_ACTIVE)
369
    {
369
    {
370
        
370
 
371
        $prototype = new User();
371
        $prototype = new User();
372
        $select = $this->sql->select(self::_TABLE);
372
        $select = $this->sql->select(self::_TABLE);
373
        
373
 
374
        
374
 
375
        $select->where->equalTo('status', User::STATUS_ACTIVE);
375
        $select->where->equalTo('status', User::STATUS_ACTIVE);
376
        $select->where->and->in('id',$ids);
376
        $select->where->and->in('id', $ids);
377
        $select->where->nest()
377
        $select->where->nest()
378
        ->like('first_name', '%'.$search. '%')
378
            ->like('first_name', '%' . $search . '%')
379
        ->or->like('last_name', '%'.$search. '%')
379
            ->or->like('last_name', '%' . $search . '%')
380
        ->or->like('email', '%'.$search. '%')->unnest();
380
            ->or->like('email', '%' . $search . '%')->unnest();
381
        
381
 
382
        if($current_user) {
382
        if ($current_user) {
383
            $select->where->and->notEqualTo('id ', $current_user);
383
            $select->where->and->notEqualTo('id ', $current_user);
384
        }
384
        }
385
        $select->order(['first_name ASC', 'last_name ASC', 'email ASC']);
-
 
386
        
-
 
387
        return $this->executeFetchAllObject($select, $prototype);
-
 
Línea -... Línea 385...
-
 
385
        $select->order(['first_name ASC', 'last_name ASC', 'email ASC']);
388
    }
386
 
-
 
387
        return $this->executeFetchAllObject($select, $prototype);
-
 
388
    }
389
    
389
 
390
    
390
 
391
    
391
 
392
 
392
 
393
    
393
 
394
    
394
 
395
    /**
395
    /**
396
     *
396
     *
397
     * @return User[]
397
     * @return User[]
398
     */
398
     */
399
    public function fetchAllByActives()
399
    public function fetchAllByActives()
400
    {
400
    {
401
        
401
 
402
        $prototype = new User();
402
        $prototype = new User();
403
        $select = $this->sql->select(self::_TABLE);
403
        $select = $this->sql->select(self::_TABLE);
404
        
404
 
405
        
405
 
Línea 406... Línea 406...
406
        $select->where->equalTo('status', User::STATUS_ACTIVE);
406
        $select->where->equalTo('status', User::STATUS_ACTIVE);
407
        $select->where->equalTo('email_verified',User::EMAIL_VERIFIED_YES);
407
        $select->where->equalTo('email_verified', User::EMAIL_VERIFIED_YES);
408
        
408
 
409
        $select->order(['first_name DESC, last_name DESC, email_DESC']);
409
        $select->order(['first_name DESC, last_name DESC, email_DESC']);
410
        
410
 
411
 
411
 
412
        return $this->executeFetchAllObject($select, $prototype);
412
        return $this->executeFetchAllObject($select, $prototype);
413
    }
413
    }
414
    
414
 
415
    /**
415
    /**
416
     *
416
     *
417
     * @param int $network_id
417
     * @param int $network_id
Línea 418... Línea 418...
418
     * @param int $current_user_id;
418
     * @param int $current_user_id;
419
     * @return int[]
419
     * @return int[]
420
     */
420
     */
421
    public function fetchAllIdsByDefaultNetworkId($network_id, $current_user_id = 0)
421
    public function fetchAllIdsByDefaultNetworkId($network_id, $current_user_id = 0)
422
    {
422
    {
423
        
423
 
424
 
424
 
425
        $select = $this->sql->select(self::_TABLE);
425
        $select = $this->sql->select(self::_TABLE);
426
        $select->columns(['id']);
426
        $select->columns(['id']);
427
        $select->where->equalTo('network_id', $network_id);
427
        $select->where->equalTo('network_id', $network_id);
428
        $select->where->in('usertype_id', [UserType::ADMIN, UserType::USER]);
428
        $select->where->in('usertype_id', [UserType::ADMIN, UserType::USER]);
429
        $select->where->equalTo('status', User::STATUS_ACTIVE);
429
        $select->where->equalTo('status', User::STATUS_ACTIVE);
430
        
430
 
431
        if($current_user_id) {
431
        if ($current_user_id) {
432
            $select->where->notEqualTo('id', $current_user_id);
-
 
433
        }
432
            $select->where->notEqualTo('id', $current_user_id);
434
        
433
        }
435
        $ids = [];
434
 
436
        
435
        $ids = [];
437
        $records = $this->executeFetchAllArray($select);
436
 
438
        foreach($records as $record)
437
        $records = $this->executeFetchAllArray($select);
439
        {
438
        foreach ($records as $record) {
440
            array_push($ids, $record['id']);
439
            array_push($ids, $record['id']);
441
        }
440
        }
442
        
441
 
443
        return $ids;
442
        return $ids;
444
    }
443
    }
445
    
444
 
446
    /**
445
    /**
447
     *
446
     *
448
     * @param int $network_id
447
     * @param int $network_id
449
     * @param string $search
448
     * @param string $search
450
     * @param int $current_user_id;
449
     * @param int $current_user_id;
451
     * @return int[]
450
     * @return int[]
452
     */
451
     */
453
    public function fetchAllIdsByDefaultNetworkIdAndSearch($network_id, $search, $current_user_id = 0)
452
    public function fetchAllIdsByDefaultNetworkIdAndSearch($network_id, $search, $current_user_id = 0)
454
    {
453
    {
455
        
454
 
456
        
455
 
457
        $select = $this->sql->select(self::_TABLE);
456
        $select = $this->sql->select(self::_TABLE);
458
        $select->columns(['id']);
457
        $select->columns(['id']);
459
        $select->where->equalTo('network_id', $network_id);
458
        $select->where->equalTo('network_id', $network_id);
460
        $select->where->in('usertype_id', [UserType::ADMIN, UserType::USER]);
459
        $select->where->in('usertype_id', [UserType::ADMIN, UserType::USER]);
461
        $select->where->equalTo('status', User::STATUS_ACTIVE);
460
        $select->where->equalTo('status', User::STATUS_ACTIVE);
462
        $select->where->nest()
461
        $select->where->nest()
463
        ->like('first_name', '%'.$search. '%')
462
            ->like('first_name', '%' . $search . '%')
464
        ->or->like('last_name', '%'.$search. '%')
463
            ->or->like('last_name', '%' . $search . '%')
465
        ->or->like('email', '%'.$search. '%')->unnest();
464
            ->or->like('email', '%' . $search . '%')->unnest();
466
        
465
 
467
        if($current_user_id) {
466
        if ($current_user_id) {
468
            $select->where->notEqualTo('id', $current_user_id);
-
 
469
        }
467
            $select->where->notEqualTo('id', $current_user_id);
470
        
468
        }
471
        $ids = [];
469
 
472
        
470
        $ids = [];
473
        $records = $this->executeFetchAllArray($select);
471
 
474
        foreach($records as $record)
472
        $records = $this->executeFetchAllArray($select);
475
        {
473
        foreach ($records as $record) {
476
            array_push($ids, $record['id']);
474
            array_push($ids, $record['id']);
477
        }
475
        }
478
        
476
 
479
        return $ids;
477
        return $ids;
480
    }
478
    }
481
    
479
 
482
    /**
480
    /**
483
     *
481
     *
484
     * @param int $network_id
482
     * @param int $network_id
485
     * @param int $current_user_id;
483
     * @param int $current_user_id;
486
     * @return int[]
484
     * @return int[]
487
     */
485
     */
488
    public function fetchAllIdsByNonDefaultNetworkId($network_id, $current_user_id = 0)
486
    public function fetchAllIdsByNonDefaultNetworkId($network_id, $current_user_id = 0)
489
    {
487
    {
490
        
488
 
491
        
489
 
492
        $select = $this->sql->select(self::_TABLE);
490
        $select = $this->sql->select(self::_TABLE);
493
        $select->columns(['id']);
491
        $select->columns(['id']);
494
        $select->where->equalTo('network_id', $network_id);
492
        $select->where->equalTo('network_id', $network_id);
495
        $select->where->in('usertype_id', [UserType::ADMIN, UserType::USER]);
493
        $select->where->in('usertype_id', [UserType::ADMIN, UserType::USER]);
496
        $select->where->equalTo('status', User::STATUS_ACTIVE);
494
        $select->where->equalTo('status', User::STATUS_ACTIVE);
497
        $select->where->equalTo('request_access', User::REQUEST_ACCESS_APPROVED);
495
        $select->where->equalTo('request_access', User::REQUEST_ACCESS_APPROVED);
498
        
496
 
499
        if($current_user_id) {
497
        if ($current_user_id) {
500
            $select->where->notEqualTo('id', $current_user_id);
-
 
501
        }
498
            $select->where->notEqualTo('id', $current_user_id);
502
        
499
        }
503
        $ids = [];
500
 
504
        
501
        $ids = [];
505
        $records = $this->executeFetchAllArray($select);
502
 
506
        foreach($records as $record)
503
        $records = $this->executeFetchAllArray($select);
507
        {
504
        foreach ($records as $record) {
508
            array_push($ids, $record['id']);
505
            array_push($ids, $record['id']);
509
        }
506
        }
510
        
507
 
511
        return $ids;
508
        return $ids;
512
    }
509
    }
513
    
510
 
514
    
511
 
515
    /**
512
    /**
516
     *
513
     *
517
     * @param int $network_id
514
     * @param int $network_id
518
     * @param string $search
515
     * @param string $search
519
     * @param int $current_user_id;
516
     * @param int $current_user_id;
520
     * @return int[]
517
     * @return int[]
521
     */
518
     */
522
    public function fetchAllIdsByNonDefaultNetworkIdAndSearch($network_id, $search, $current_user_id = 0)
519
    public function fetchAllIdsByNonDefaultNetworkIdAndSearch($network_id, $search, $current_user_id = 0)
523
    {
520
    {
524
        
521
 
525
        
522
 
526
        $select = $this->sql->select(self::_TABLE);
523
        $select = $this->sql->select(self::_TABLE);
527
        $select->columns(['id']);
524
        $select->columns(['id']);
528
        $select->where->equalTo('network_id', $network_id);
525
        $select->where->equalTo('network_id', $network_id);
529
        $select->where->in('usertype_id', [UserType::ADMIN, UserType::USER]);
526
        $select->where->in('usertype_id', [UserType::ADMIN, UserType::USER]);
530
        $select->where->equalTo('status', User::STATUS_ACTIVE);
527
        $select->where->equalTo('status', User::STATUS_ACTIVE);
531
        $select->where->equalTo('request_access', User::REQUEST_ACCESS_APPROVED);
528
        $select->where->equalTo('request_access', User::REQUEST_ACCESS_APPROVED);
532
        $select->where->nest()
529
        $select->where->nest()
533
        ->like('first_name', '%'.$search. '%')
530
            ->like('first_name', '%' . $search . '%')
534
        ->or->like('last_name', '%'.$search. '%')
531
            ->or->like('last_name', '%' . $search . '%')
535
        ->or->like('email', '%'.$search. '%')->unnest();
532
            ->or->like('email', '%' . $search . '%')->unnest();
536
        
533
 
537
        if($current_user_id) {
534
        if ($current_user_id) {
538
            $select->where->notEqualTo('id', $current_user_id);
535
            $select->where->notEqualTo('id', $current_user_id);
539
        }
-
 
540
        
536
        }
541
        
537
 
542
        $ids = [];
538
 
543
        
539
        $ids = [];
544
        $records = $this->executeFetchAllArray($select);
540
 
545
        foreach($records as $record)
541
        $records = $this->executeFetchAllArray($select);
546
        {
542
        foreach ($records as $record) {
547
            array_push($ids, $record['id']);
543
            array_push($ids, $record['id']);
548
        }
544
        }
549
        
545
 
550
        return $ids;
546
        return $ids;
551
    }
547
    }
552
    
548
 
553
    
549
 
554
    /**
550
    /**
555
     * 
551
     * 
556
     * @param int $company_id
552
     * @param int $company_id
557
     * @return User[]
553
     * @return User[]
558
     */
554
     */
559
    public function fetchAllByCompanyId($company_id)
555
    public function fetchAllByCompanyId($company_id)
560
    {
556
    {
561
        
557
 
562
        $prototype = new User();
558
        $prototype = new User();
563
        $select = $this->sql->select();
559
        $select = $this->sql->select();
564
        $select->from(['tb1' => self::_TABLE]);
560
        $select->from(['tb1' => self::_TABLE]);
565
        $select->join(['tb2' => CompanyUserMapper::_TABLE], 'tb1.id = tb2.user_id', []);
561
        $select->join(['tb2' => CompanyUserMapper::_TABLE], 'tb1.id = tb2.user_id', []);
566
        
562
 
567
        
563
 
568
        $select->where->equalTo('tb2.company_id', $company_id);
564
        $select->where->equalTo('tb2.company_id', $company_id);
569
        $select->where->in('tb2.status', [CompanyUser::STATUS_ACCEPTED, CompanyUser::STATUS_ADMIN_WILL_ADD]);
565
        $select->where->in('tb2.status', [CompanyUser::STATUS_ACCEPTED, CompanyUser::STATUS_ADMIN_WILL_ADD]);
570
        
566
 
571
        $select->where->equalTo('tb1.status', User::STATUS_ACTIVE);
567
        $select->where->equalTo('tb1.status', User::STATUS_ACTIVE);
572
        $select->where->equalTo('tb1.email_verified',User::EMAIL_VERIFIED_YES);
568
        $select->where->equalTo('tb1.email_verified', User::EMAIL_VERIFIED_YES);
573
        
569
 
574
        $select->order(['first_name DESC, last_name DESC, email_DESC']);
570
        $select->order(['first_name DESC, last_name DESC, email_DESC']);
575
        
571
 
576
   
572
 
577
        
573
 
578
        return $this->executeFetchAllObject($select, $prototype);
574
        return $this->executeFetchAllObject($select, $prototype);
579
    }
575
    }
580
    
576
 
581
    /**
577
    /**
582
     * 
578
     * 
583
     * @param int $user_id
579
     * @param int $user_id
584
     * @return boolean
580
     * @return boolean
585
     */
581
     */
586
    public function leaveImpersonate($user_id)
582
    public function leaveImpersonate($user_id)
587
    {
583
    {
588
        $values = [
584
        $values = [
589
            'impersonate_user_id' => new Expression('NULL')
585
            'impersonate_user_id' => new Expression('NULL')
590
        ];
586
        ];
591
        
587
 
592
        $update = $this->sql->update(self::_TABLE);
588
        $update = $this->sql->update(self::_TABLE);
593
        $update->set($values);
589
        $update->set($values);
594
        $update->where->equalTo('id', $user_id);
590
        $update->where->equalTo('id', $user_id);
595
        
591
 
596
        return $this->executeUpdate($update);
592
        return $this->executeUpdate($update);
Línea 605... Línea 601...
605
    public function startImpersonate($user_id, $impersonate_user_id)
601
    public function startImpersonate($user_id, $impersonate_user_id)
606
    {
602
    {
607
        $values = [
603
        $values = [
608
            'impersonate_user_id' => $impersonate_user_id
604
            'impersonate_user_id' => $impersonate_user_id
609
        ];
605
        ];
610
        
606
 
611
        $update = $this->sql->update(self::_TABLE);
607
        $update = $this->sql->update(self::_TABLE);
612
        $update->set($values);
608
        $update->set($values);
613
        $update->where->equalTo('id', $user_id);
609
        $update->where->equalTo('id', $user_id);
614
        
610
 
615
        return $this->executeUpdate($update);
611
        return $this->executeUpdate($update);
616
    }
612
    }
617
    
613
 
618
    /**
614
    /**
619
     * 
615
     * 
620
     * @param int $user_id
616
     * @param int $user_id
621
     * @param string $password_reset_key
617
     * @param string $password_reset_key
622
     * @return boolean
618
     * @return boolean
Línea 630... Línea 626...
630
        ];
626
        ];
Línea 631... Línea 627...
631
 
627
 
632
        $update = $this->sql->update(self::_TABLE);
628
        $update = $this->sql->update(self::_TABLE);
633
        $update->set($values);
629
        $update->set($values);
634
        $update->where->equalTo('id', $user_id);
630
        $update->where->equalTo('id', $user_id);
635
        
631
 
636
        return $this->executeUpdate($update);
632
        return $this->executeUpdate($update);
637
    }
633
    }
638
    
634
 
639
    
635
 
640
    /**
636
    /**
641
     *
637
     *
642
     * @param int $user_id
638
     * @param int $user_id
643
     * @param string $delete_account_key
639
     * @param string $delete_account_key
Línea 648... Línea 644...
648
        $values = [
644
        $values = [
649
            'delete_account_key' => $delete_account_key,
645
            'delete_account_key' => $delete_account_key,
650
            'delete_account_generated_on' => date('Y-m-d H:i:s'),
646
            'delete_account_generated_on' => date('Y-m-d H:i:s'),
651
            'updated_on' => new Expression('NOW()')
647
            'updated_on' => new Expression('NOW()')
652
        ];
648
        ];
653
        
649
 
654
        $update = $this->sql->update(self::_TABLE);
650
        $update = $this->sql->update(self::_TABLE);
655
        $update->set($values);
651
        $update->set($values);
656
        $update->where->equalTo('id', $user_id);
652
        $update->where->equalTo('id', $user_id);
657
        
653
 
658
        return $this->executeUpdate($update);
654
        return $this->executeUpdate($update);
659
    }
655
    }
660
    
-
 
Línea -... Línea 656...
-
 
656
 
661
 
657
 
662
    
658
 
663
    /**
659
    /**
664
     * 
660
     * 
665
     * @param User $user
661
     * @param User $user
666
     * @param string $password_hash
662
     * @param string $password_hash
Línea 674... Línea 670...
674
            'password_updated_on'   => date('Y-m-d H:i:s'),
670
            'password_updated_on'   => date('Y-m-d H:i:s'),
675
            'login_attempt'         => 0,
671
            'login_attempt'         => 0,
676
            'blocked'               => User::BLOCKED_NO,
672
            'blocked'               => User::BLOCKED_NO,
677
            'updated_on'            => new Expression('NOW()')
673
            'updated_on'            => new Expression('NOW()')
678
        ];
674
        ];
679
        
675
 
680
        $update = $this->sql->update(self::_TABLE);
676
        $update = $this->sql->update(self::_TABLE);
681
        $update->set($values);
677
        $update->set($values);
682
        $update->where->equalTo('id', $user->id);
678
        $update->where->equalTo('id', $user->id);
683
        
679
 
684
        return $this->executeUpdate($update);
680
        return $this->executeUpdate($update);
685
    }
681
    }
686
    
682
 
687
    
683
 
688
    
684
 
689
    /**
685
    /**
690
     *
686
     *
691
     * @param User $user
687
     * @param User $user
692
     * @param int $usertype_id
688
     * @param int $usertype_id
693
     * @return boolean
689
     * @return boolean
Línea 696... Línea 692...
696
    {
692
    {
697
        $values = [
693
        $values = [
698
            'usertype_id'   => $usertype_id,
694
            'usertype_id'   => $usertype_id,
699
            'updated_on'    => new Expression('NOW()')
695
            'updated_on'    => new Expression('NOW()')
700
        ];
696
        ];
701
        
697
 
702
        $update = $this->sql->update(self::_TABLE);
698
        $update = $this->sql->update(self::_TABLE);
703
        $update->set($values);
699
        $update->set($values);
704
        $update->where->equalTo('id', $user->id);
700
        $update->where->equalTo('id', $user->id);
705
        
701
 
706
        return $this->executeUpdate($update);
702
        return $this->executeUpdate($update);
707
    }
703
    }
708
    
704
 
709
    
705
 
710
    /**
706
    /**
711
     *
707
     *
712
     * @param User $user
708
     * @param User $user
713
     * @return boolean
709
     * @return boolean
714
     */
710
     */
Línea 717... Línea 713...
717
        $values = [
713
        $values = [
718
            'login_attempt'         => 0,
714
            'login_attempt'         => 0,
719
            'blocked'               => User::BLOCKED_NO,
715
            'blocked'               => User::BLOCKED_NO,
720
            'updated_on'            => new Expression('NOW()')
716
            'updated_on'            => new Expression('NOW()')
721
        ];
717
        ];
722
        
718
 
723
        $update = $this->sql->update(self::_TABLE);
719
        $update = $this->sql->update(self::_TABLE);
724
        $update->set($values);
720
        $update->set($values);
725
        $update->where->equalTo('id', $user->id);
721
        $update->where->equalTo('id', $user->id);
726
        
722
 
727
        return $this->executeUpdate($update);
723
        return $this->executeUpdate($update);
728
    }
724
    }
729
    
725
 
730
    
726
 
731
    
727
 
732
    
728
 
733
    /**
729
    /**
734
     *
730
     *
735
     * @param User $user
731
     * @param User $user
736
     * @param string $one_time_password
732
     * @param string $one_time_password
737
     * @return boolean
733
     * @return boolean
Línea 740... Línea 736...
740
    {
736
    {
741
        $values = [
737
        $values = [
742
            'one_time_password' => $one_time_password,
738
            'one_time_password' => $one_time_password,
743
            'updated_on'        => new Expression('NOW()')
739
            'updated_on'        => new Expression('NOW()')
744
        ];
740
        ];
745
        
741
 
746
        $update = $this->sql->update(self::_TABLE);
742
        $update = $this->sql->update(self::_TABLE);
747
        $update->set($values);
743
        $update->set($values);
748
        $update->where->equalTo('id', $user->id);
744
        $update->where->equalTo('id', $user->id);
749
        
745
 
750
        return $this->executeUpdate($update);
746
        return $this->executeUpdate($update);
751
    }
747
    }
752
    
748
 
753
    
749
 
754
    /**
750
    /**
755
     * 
751
     * 
756
     * @param User $user
752
     * @param User $user
757
     * @return boolean
753
     * @return boolean
758
     */
754
     */
Línea 762... Línea 758...
762
        $values = $hydrator->extract($user);
758
        $values = $hydrator->extract($user);
763
        //$values = $this->removeEmpty($values);
759
        //$values = $this->removeEmpty($values);
Línea 764... Línea 760...
764
 
760
 
765
 
761
 
766
        unset($values['added_on']);
762
        unset($values['added_on']);
767
        $values['updated_on'] = new Expression('NOW()') ;
763
        $values['updated_on'] = new Expression('NOW()');
768
        
764
 
769
        $update = $this->sql->update(self::_TABLE);
765
        $update = $this->sql->update(self::_TABLE);
770
        $update->set($values);
766
        $update->set($values);
771
        $update->where->equalTo('id',$user->id);
767
        $update->where->equalTo('id', $user->id);
772
        
768
 
773
        //echo $update->getSqlString($this->adapter->platform); exit;
769
        //echo $update->getSqlString($this->adapter->platform); exit;
774
        
770
 
775
        return $this->executeUpdate($update);
771
        return $this->executeUpdate($update);
776
    }
772
    }
777
    
773
 
778
    /**
774
    /**
779
     *
775
     *
780
     * @param User $user
776
     * @param User $user
Línea 784... Línea 780...
784
    {
780
    {
785
        $values = [
781
        $values = [
786
            'show_in_search' => $user->show_in_search,
782
            'show_in_search' => $user->show_in_search,
787
            'updated_on' => new Expression('NOW()')
783
            'updated_on' => new Expression('NOW()')
788
        ];
784
        ];
789
        
785
 
790
        $update = $this->sql->update(self::_TABLE);
786
        $update = $this->sql->update(self::_TABLE);
791
        $update->set($values);
787
        $update->set($values);
792
        $update->where->equalTo('id',$user->id);
788
        $update->where->equalTo('id', $user->id);
793
        
789
 
794
        return $this->executeUpdate($update);
790
        return $this->executeUpdate($update);
795
    }
791
    }
796
    
792
 
797
    /**
793
    /**
798
     *
794
     *
799
     * @param User $user
795
     * @param User $user
800
     * @return boolean
796
     * @return boolean
801
     */
797
     */
Línea 808... Línea 804...
808
            'gender' => $user->gender,
804
            'gender' => $user->gender,
809
            'timezone' => $user->timezone,
805
            'timezone' => $user->timezone,
810
            'is_adult' => $user->is_adult,
806
            'is_adult' => $user->is_adult,
811
            'updated_on' => new Expression('NOW()')
807
            'updated_on' => new Expression('NOW()')
812
        ];
808
        ];
813
        
809
 
814
        $update = $this->sql->update(self::_TABLE);
810
        $update = $this->sql->update(self::_TABLE);
815
        $update->set($values);
811
        $update->set($values);
816
        $update->where->equalTo('id',$user->id);
812
        $update->where->equalTo('id', $user->id);
817
        
813
 
818
        return $this->executeUpdate($update);
814
        return $this->executeUpdate($update);
819
    }
815
    }
820
   
816
 
821
    
817
 
822
    /**
818
    /**
823
     *
819
     *
824
     * @param User $user
820
     * @param User $user
825
     * @return boolean
821
     * @return boolean
826
     */
822
     */
Línea 828... Línea 824...
828
    {
824
    {
829
        $values = [
825
        $values = [
830
            'image' => $user->image,
826
            'image' => $user->image,
831
            'updated_on' => new Expression('NOW()')
827
            'updated_on' => new Expression('NOW()')
832
        ];
828
        ];
833
        
829
 
834
        $update = $this->sql->update(self::_TABLE);
830
        $update = $this->sql->update(self::_TABLE);
835
        $update->set($values);
831
        $update->set($values);
836
        $update->where->equalTo('id',$user->id);
832
        $update->where->equalTo('id', $user->id);
837
        
833
 
838
        return $this->executeUpdate($update);
834
        return $this->executeUpdate($update);
839
    }
835
    }
840
    
836
 
841
    /**
837
    /**
842
     *
838
     *
843
     * @param User $user
839
     * @param User $user
844
     * @return boolean
840
     * @return boolean
845
     */
841
     */
Línea 847... Línea 843...
847
    {
843
    {
848
        $values = [
844
        $values = [
849
            'location_id' => $user->location_id,
845
            'location_id' => $user->location_id,
850
            'updated_on' => new Expression('NOW()')
846
            'updated_on' => new Expression('NOW()')
851
        ];
847
        ];
852
        
848
 
853
        $update = $this->sql->update(self::_TABLE);
849
        $update = $this->sql->update(self::_TABLE);
854
        $update->set($values);
850
        $update->set($values);
855
        $update->where->equalTo('id',$user->id);
851
        $update->where->equalTo('id', $user->id);
856
        
852
 
857
        return $this->executeUpdate($update);
853
        return $this->executeUpdate($update);
858
    }
854
    }
859
    
855
 
860
    /**
856
    /**
861
     * 
857
     * 
862
     * @param int $user_id
858
     * @param int $user_id
863
     * @return boolean
859
     * @return boolean
864
     */
860
     */
Línea 868... Línea 864...
868
            'email_verified'    => User::EMAIL_VERIFIED_YES,
864
            'email_verified'    => User::EMAIL_VERIFIED_YES,
869
            'status'            => User::STATUS_ACTIVE,
865
            'status'            => User::STATUS_ACTIVE,
870
            'activation_key'    => '',
866
            'activation_key'    => '',
871
            'updated_on' => new Expression('NOW()')
867
            'updated_on' => new Expression('NOW()')
872
        ];
868
        ];
873
        
869
 
874
        $update = $this->sql->update(self::_TABLE);
870
        $update = $this->sql->update(self::_TABLE);
875
        $update->set($values);
871
        $update->set($values);
876
        $update->where->equalTo('id', $user_id);
872
        $update->where->equalTo('id', $user_id);
877
        
873
 
878
        return $this->executeUpdate($update);
874
        return $this->executeUpdate($update);
879
    }
875
    }
880
    
876
 
881
    /**
877
    /**
882
     * 
878
     * 
883
     * @param User $user
879
     * @param User $user
884
     * @return boolean
880
     * @return boolean
885
     */
881
     */
886
    public function insert($user)
882
    public function insert($user)
887
    {
883
    {
888
        
884
 
889
        $hydrator = new ObjectPropertyHydrator();
885
        $hydrator = new ObjectPropertyHydrator();
890
        $values = $hydrator->extract($user);
886
        $values = $hydrator->extract($user);
891
        $values = $this->removeEmpty($values);
887
        $values = $this->removeEmpty($values);
892
        
888
 
893
        $insert = $this->sql->insert(self::_TABLE);
889
        $insert = $this->sql->insert(self::_TABLE);
894
        $insert->values($values);
890
        $insert->values($values);
895
        
891
 
896
        $response = $this->executeInsert($insert);
892
        $response = $this->executeInsert($insert);
897
        if($response) {
893
        if ($response) {
898
            $user->id = $this->lastInsertId;
894
            $user->id = $this->lastInsertId;
899
        }
895
        }
900
        
896
 
901
        return $response;
897
        return $response;
902
    }
898
    }
903
    
899
 
904
    
900
 
905
    /**
901
    /**
906
     *
902
     *
907
     * @return boolean
903
     * @return boolean
908
     */
904
     */
909
    public function truncate()
905
    public function truncate()
910
    {
906
    {
911
        $sql = sprintf('TRUNCATE TABLE `%s` ', self::_TABLE);
907
        $sql = sprintf('TRUNCATE TABLE `%s` ', self::_TABLE);
912
        return $this->executeSentenceWithParameters($sql);
908
        return $this->executeSentenceWithParameters($sql);
913
    }
909
    }
914
    
910
 
915
    /**
911
    /**
916
     *
912
     *
917
     * @param int $company_id
913
     * @param int $company_id
918
     * @param string $status
914
     * @param string $status
919
     * @param string $search
915
     * @param string $search
Línea 921... Línea 917...
921
     * @param int $records_per_page
917
     * @param int $records_per_page
922
     * @param string $order_field
918
     * @param string $order_field
923
     * @param string $order_direction
919
     * @param string $order_direction
924
     * @return Paginator
920
     * @return Paginator
925
     */
921
     */
926
    public function fetchAllDataTableByCompanyId($company_id, $status = '', $search, $page = 1, $records_per_page = 10, $order_field= 'name', $order_direction = 'ASC')
922
    public function fetchAllDataTableByCompanyId($company_id, $status = '', $search, $page = 1, $records_per_page = 10, $order_field = 'name', $order_direction = 'ASC')
927
    {
923
    {
928
        $select = $this->sql->select(); 
924
        $select = $this->sql->select();
929
        $select->columns(['status', 'backend', 'creator']);
925
        $select->columns(['status', 'backend', 'creator']);
930
        $select->from(['tb1' => CompanyUserMapper::_TABLE]);
926
        $select->from(['tb1' => CompanyUserMapper::_TABLE]);
931
        $select->join(['tb2' => self::_TABLE] , 'tb1.user_id = tb2.id', [
927
        $select->join(['tb2' => self::_TABLE], 'tb1.user_id = tb2.id', [
932
            'id', 'uuid', 'first_name', 'last_name', 'email', 'last_activity_on', 'image',
928
            'id', 'uuid', 'first_name', 'last_name', 'email', 'last_activity_on', 'image',
933
            'blocked', 'login_attempt', 'email_verified'
929
            'blocked', 'login_attempt', 'email_verified'
934
            
930
 
935
        ]);
931
        ]);
936
        
932
 
937
        $select->where->equalTo('tb1.company_id', $company_id);
933
        $select->where->equalTo('tb1.company_id', $company_id);
938
        $select->where->equalTo('tb1.owner', CompanyUser::OWNER_NO);
934
        $select->where->equalTo('tb1.owner', CompanyUser::OWNER_NO);
939
        
935
 
940
        if($status) {
936
        if ($status) {
941
            $select->where->equalTo('tb1.status', $status); 
937
            $select->where->equalTo('tb1.status', $status);
942
           
-
 
943
        } 
938
        }
944
        
939
 
945
        if($search) {
940
        if ($search) {
946
            $select->where->nest()
941
            $select->where->nest()
947
            ->like('first_name', '%' . $search . '%')
942
                ->like('first_name', '%' . $search . '%')
948
            ->or->like('last_name', '%' . $search . '%')
943
                ->or->like('last_name', '%' . $search . '%')
949
            ->or->like('email', '%' . $search . '%')
944
                ->or->like('email', '%' . $search . '%')
950
            ->unnest();
945
                ->unnest();
951
            
-
 
952
        }
946
        }
953
        
947
 
954
        
948
 
955
        $select->order($order_field . ' ' . $order_direction);
949
        $select->order($order_field . ' ' . $order_direction);
956
        
950
 
957
        $hydrator   = new ArraySerializableHydrator();
951
        $hydrator   = new ArraySerializableHydrator();
958
        $resultset  = new HydratingResultSet($hydrator);
952
        $resultset  = new HydratingResultSet($hydrator);
959
        
953
 
960
        $adapter = new DbSelect($select, $this->sql, $resultset);
954
        $adapter = new DbSelect($select, $this->sql, $resultset);
961
        $paginator = new Paginator($adapter);
955
        $paginator = new Paginator($adapter);
962
        $paginator->setItemCountPerPage($records_per_page);
956
        $paginator->setItemCountPerPage($records_per_page);
963
        $paginator->setCurrentPageNumber($page);
957
        $paginator->setCurrentPageNumber($page);
964
        
958
 
965
        
959
 
966
        return $paginator;
960
        return $paginator;
967
    }
961
    }
968
    
962
 
969
    
963
 
970
    /**
964
    /**
971
     *
965
     *
972
     * @param int $company_id
966
     * @param int $company_id
973
     * @param string $search
967
     * @param string $search
974
     * @param int $page
968
     * @param int $page
975
     * @param int $records_per_page
969
     * @param int $records_per_page
976
     * @param string $order_field
970
     * @param string $order_field
977
     * @param string $order_direction
971
     * @param string $order_direction
978
     * @return Paginator
972
     * @return Paginator
979
     */
973
     */
980
    public function fetchAllDataTableStudensByCompanyId($company_id,  $search, $page = 1, $records_per_page = 10, $order_field= 'name', $order_direction = 'ASC')
974
    public function fetchAllDataTableStudensByCompanyId($company_id,  $search, $page = 1, $records_per_page = 10, $order_field = 'name', $order_direction = 'ASC')
981
    {
975
    {
982
        $date = date('Y-m-d');
976
        $date = date('Y-m-d');
983
        
977
 
984
        $selectCapsuleUser = $this->getSql()->select();
978
        $selectCapsuleUser = $this->getSql()->select();
985
        $selectCapsuleUser->columns(['user_id' => new Expression('DISTINCT(user_id)')  ]);
979
        $selectCapsuleUser->columns(['user_id' => new Expression('DISTINCT(user_id)')]);
986
        $selectCapsuleUser->from(CompanyMicrolearningCapsuleUserMapper::_TABLE); 
980
        $selectCapsuleUser->from(CompanyMicrolearningCapsuleUserMapper::_TABLE);
987
        $selectCapsuleUser->where->equalTo('company_id', $company_id);
981
        $selectCapsuleUser->where->equalTo('company_id', $company_id);
988
        $selectCapsuleUser->where->nest->equalTo('access', CompanyMicrolearningCapsuleUser::ACCESS_UNLIMITED)->or->nest()
982
        $selectCapsuleUser->where->nest->equalTo('access', CompanyMicrolearningCapsuleUser::ACCESS_UNLIMITED)->or->nest()
989
        ->equalTo('access', CompanyMicrolearningCapsuleUser::ACCESS_PAY_PERIOD)
983
            ->equalTo('access', CompanyMicrolearningCapsuleUser::ACCESS_PAY_PERIOD)
990
        ->and->lessThanOrEqualTo(new Expression('DATE(paid_from)'), $date)
984
            ->and->lessThanOrEqualTo(new Expression('DATE(paid_from)'), $date)
991
        ->and->greaterThanOrEqualTo(new Expression('DATE(paid_to)'), $date )->unnest()->unnest();
985
            ->and->greaterThanOrEqualTo(new Expression('DATE(paid_to)'), $date)->unnest()->unnest();
992
        
986
 
993
        //echo $select->getSqlString($this->adapter->platform); exit;
987
        //echo $select->getSqlString($this->adapter->platform); exit;
994
        
988
 
995
        $select = $this->sql->select();
989
        $select = $this->sql->select();
996
        $select->columns(['id' , 'uuid', 'first_name', 'last_name', 'email','blocked']);
990
        $select->columns(['id', 'uuid', 'first_name', 'last_name', 'email', 'blocked']);
997
        $select->from(UserMapper::_TABLE);
991
        $select->from(UserMapper::_TABLE);
998
        $select->where->in('id', $selectCapsuleUser);
992
        $select->where->in('id', $selectCapsuleUser);
999
        
-
 
Línea -... Línea 993...
-
 
993
 
1000
 
994
 
1001
        if($search) {
995
        if ($search) {
1002
            $select->where->nest()
996
            $select->where->nest()
1003
            ->like('first_name', '%' . $search . '%')
997
                ->like('first_name', '%' . $search . '%')
1004
            ->or->like('last_name', '%' . $search . '%')
998
                ->or->like('last_name', '%' . $search . '%')
1005
            ->or->like('email', '%' . $search . '%')
999
                ->or->like('email', '%' . $search . '%')
1006
            ->unnest();
-
 
1007
            
1000
                ->unnest();
1008
        }
1001
        }
1009
        
1002
 
1010
        
1003
 
1011
        $select->order($order_field . ' ' . $order_direction);
1004
        $select->order($order_field . ' ' . $order_direction);
1012
        
1005
 
1013
        $hydrator   = new ArraySerializableHydrator();
1006
        $hydrator   = new ArraySerializableHydrator();
1014
        $resultset  = new HydratingResultSet($hydrator);
1007
        $resultset  = new HydratingResultSet($hydrator);
1015
        
1008
 
1016
        $adapter = new DbSelect($select, $this->sql, $resultset);
1009
        $adapter = new DbSelect($select, $this->sql, $resultset);
1017
        $paginator = new Paginator($adapter);
1010
        $paginator = new Paginator($adapter);
1018
        $paginator->setItemCountPerPage($records_per_page);
1011
        $paginator->setItemCountPerPage($records_per_page);
1019
        $paginator->setCurrentPageNumber($page);
1012
        $paginator->setCurrentPageNumber($page);
1020
        
1013
 
1021
        
1014
 
1022
        return $paginator;
1015
        return $paginator;
1023
    }
1016
    }
Línea 1024... Línea 1017...
1024
        
1017
 
1025
 
1018
 
1026
    /**
1019
    /**
1027
     *
1020
     *
Línea 1033... Línea 1026...
1033
     * @param string $order_direction
1026
     * @param string $order_direction
1034
     * @return Paginator
1027
     * @return Paginator
1035
     */
1028
     */
1036
    public function fetchAllStudensByCompanyId($company_id)
1029
    public function fetchAllStudensByCompanyId($company_id)
1037
    {
1030
    {
1038
                
1031
 
1039
        $date = date('Y-m-d');
1032
        $date = date('Y-m-d');
1040
        
1033
 
1041
        $selectCapsuleUser = $this->getSql()->select();
1034
        $selectCapsuleUser = $this->getSql()->select();
1042
        $selectCapsuleUser->columns(['user_id' => new Expression('DISTINCT(user_id)')  ]);
1035
        $selectCapsuleUser->columns(['user_id' => new Expression('DISTINCT(user_id)')]);
1043
        $selectCapsuleUser->from(CompanyMicrolearningCapsuleUserMapper::_TABLE); 
1036
        $selectCapsuleUser->from(CompanyMicrolearningCapsuleUserMapper::_TABLE);
1044
        $selectCapsuleUser->where->equalTo('company_id', $company_id);
1037
        $selectCapsuleUser->where->equalTo('company_id', $company_id);
1045
        $selectCapsuleUser->where->nest->equalTo('access', CompanyMicrolearningCapsuleUser::ACCESS_UNLIMITED)->or->nest()
1038
        $selectCapsuleUser->where->nest->equalTo('access', CompanyMicrolearningCapsuleUser::ACCESS_UNLIMITED)->or->nest()
1046
        ->equalTo('access', CompanyMicrolearningCapsuleUser::ACCESS_PAY_PERIOD)
1039
            ->equalTo('access', CompanyMicrolearningCapsuleUser::ACCESS_PAY_PERIOD)
1047
        ->and->lessThanOrEqualTo(new Expression('DATE(paid_from)'), $date)
1040
            ->and->lessThanOrEqualTo(new Expression('DATE(paid_from)'), $date)
1048
        ->and->greaterThanOrEqualTo(new Expression('DATE(paid_to)'), $date )->unnest()->unnest();
1041
            ->and->greaterThanOrEqualTo(new Expression('DATE(paid_to)'), $date)->unnest()->unnest();
1049
        
1042
 
1050
        //echo $select->getSqlString($this->adapter->platform); exit;
1043
        //echo $select->getSqlString($this->adapter->platform); exit;
1051
        $prototype = new User();
1044
        $prototype = new User();
1052
        $select = $this->sql->select();
1045
        $select = $this->sql->select();
1053
        $select->columns(['id' , 'uuid', 'first_name', 'last_name', 'email','blocked']);
1046
        $select->columns(['id', 'uuid', 'first_name', 'last_name', 'email', 'blocked']);
1054
        $select->from(UserMapper::_TABLE);
1047
        $select->from(UserMapper::_TABLE);
1055
        $select->where->in('id', $selectCapsuleUser);
1048
        $select->where->in('id', $selectCapsuleUser);
1056
        return $this->executeFetchAllObject($select, $prototype);
1049
        return $this->executeFetchAllObject($select, $prototype);
1057
 
-
 
1058
    }
1050
    }
Línea 1059... Línea 1051...
1059
 
1051
 
1060
    /**
1052
    /**
1061
     *
1053
     *
Línea 1067... Línea 1059...
1067
 
1059
 
1068
        $select = $this->sql->select();
1060
        $select = $this->sql->select();
1069
        $select->from(self::_TABLE);
1061
        $select->from(self::_TABLE);
1070
        $select->where->equalTo('status', User::STATUS_ACTIVE);
1062
        $select->where->equalTo('status', User::STATUS_ACTIVE);
1071
        $select->where->equalTo('email_verified', User::EMAIL_VERIFIED_YES);
1063
        $select->where->equalTo('email_verified', User::EMAIL_VERIFIED_YES);
1072
        
1064
 
1073
        if($search) {
1065
        if ($search) {
1074
            $select->where->nest()
1066
            $select->where->nest()
1075
            ->like('first_name', '%' . $search . '%')
1067
                ->like('first_name', '%' . $search . '%')
1076
            ->or->like('last_name', '%' . $search . '%')
1068
                ->or->like('last_name', '%' . $search . '%')
1077
            ->or->like('email', '%' . $search . '%')
1069
                ->or->like('email', '%' . $search . '%')
1078
            ->unnest();
-
 
1079
            
1070
                ->unnest();
1080
        }
1071
        }
1081
        
1072
 
1082
        $select->order(['first_name', 'last_name']);
1073
        $select->order(['first_name', 'last_name']);
1083
        
1074
 
1084
        // echo $select->getSqlString($this->adapter->platform); exit;
1075
        // echo $select->getSqlString($this->adapter->platform); exit;
1085
        
1076
 
1086
        $prototype = new User();
1077
        $prototype = new User();
1087
        
1078
 
1088
        return $this->executeFetchAllObject($select, $prototype);
1079
        return $this->executeFetchAllObject($select, $prototype);
1089
    }
1080
    }
1090
    
1081
 
1091
    /**
1082
    /**
1092
     *
1083
     *
1093
     * @param int $network_id
1084
     * @param int $network_id
1094
     * @param string $search
1085
     * @param string $search
1095
     * @return User[]
1086
     * @return User[]
1096
     */
1087
     */
1097
    public function fetchAllSuggestByNetworkIdAndSearch($network_id, $search)
1088
    public function fetchAllSuggestByNetworkIdAndSearch($network_id, $search)
1098
    {
1089
    {
1099
        
1090
 
1100
        $select = $this->sql->select();
1091
        $select = $this->sql->select();
1101
        $select->from(self::_TABLE);
1092
        $select->from(self::_TABLE);
1102
        $select->where->equalTo('network_id', $network_id);
1093
        $select->where->equalTo('network_id', $network_id);
1103
        $select->where->equalTo('status', User::STATUS_ACTIVE);
1094
        $select->where->equalTo('status', User::STATUS_ACTIVE);
1104
        $select->where->equalTo('email_verified', User::EMAIL_VERIFIED_YES);
1095
        $select->where->equalTo('email_verified', User::EMAIL_VERIFIED_YES);
1105
        
1096
 
1106
        if($search) {
1097
        if ($search) {
1107
            $select->where->nest()
1098
            $select->where->nest()
1108
            ->like('first_name', '%' . $search . '%')
1099
                ->like('first_name', '%' . $search . '%')
-
 
1100
                ->or->like('last_name', '%' . $search . '%')
-
 
1101
                ->or->like('first_name', '%' . $search . '%')
1109
            ->or->like('last_name', '%' . $search . '%')
1102
                ->and->like('last_name', '%' . $search . '%')
1110
            ->or->like('email', '%' . $search . '%')
1103
                ->or->like('email', '%' . $search . '%')
1111
            ->unnest();
-
 
1112
            
1104
                ->unnest();
1113
        }
1105
        }
1114
        
1106
 
1115
        $select->order(['first_name', 'last_name']);
1107
        $select->order(['first_name', 'last_name']);
1116
        
1108
 
1117
        // echo $select->getSqlString($this->adapter->platform); exit;
1109
        // echo $select->getSqlString($this->adapter->platform); exit;
1118
        
1110
 
1119
        $prototype = new User();
1111
        $prototype = new User();
1120
        
1112
 
1121
        return $this->executeFetchAllObject($select, $prototype);
1113
        return $this->executeFetchAllObject($select, $prototype);
1122
    }
1114
    }
1123
    
1115
 
1124
    /**
1116
    /**
1125
     *
1117
     *
1126
     * @param int $company_id
1118
     * @param int $company_id
1127
     * @param int $network_id
1119
     * @param int $network_id
Línea 1135... Línea 1127...
1135
        $selectCompanyUsers->where->equalTo('company_id', $company_id);
1127
        $selectCompanyUsers->where->equalTo('company_id', $company_id);
1136
        $selectCompanyUsers->where->in('status', [
1128
        $selectCompanyUsers->where->in('status', [
1137
            CompanyUser::STATUS_ACCEPTED,
1129
            CompanyUser::STATUS_ACCEPTED,
1138
            CompanyUser::STATUS_PENDING,
1130
            CompanyUser::STATUS_PENDING,
1139
            CompanyUser::STATUS_SENT,
1131
            CompanyUser::STATUS_SENT,
1140
            
1132
 
1141
        ]);
1133
        ]);
1142
        
1134
 
1143
        //echo $selectCompanyUsers->getSqlString($this->adapter->platform); exit;
1135
        //echo $selectCompanyUsers->getSqlString($this->adapter->platform); exit;
1144
        
1136
 
1145
        $select = $this->sql->select();
1137
        $select = $this->sql->select();
1146
        $select->from(self::_TABLE);
1138
        $select->from(self::_TABLE);
1147
        $select->where->notIn('id', $selectCompanyUsers);
1139
        $select->where->notIn('id', $selectCompanyUsers);
1148
        $select->where->equalTo('network_id', $network_id);
1140
        $select->where->equalTo('network_id', $network_id);
1149
        $select->where->equalTo('status', User::STATUS_ACTIVE);
1141
        $select->where->equalTo('status', User::STATUS_ACTIVE);
1150
        $select->where->equalTo('email_verified', User::EMAIL_VERIFIED_YES);
1142
        $select->where->equalTo('email_verified', User::EMAIL_VERIFIED_YES);
1151
        
1143
 
1152
        if($search) {
1144
        if ($search) {
1153
            $select->where->nest()
1145
            $select->where->nest()
1154
            ->like('first_name', '%' . $search . '%')
1146
                ->like('first_name', '%' . $search . '%')
1155
            ->or->like('last_name', '%' . $search . '%')
1147
                ->or->like('last_name', '%' . $search . '%')
1156
            ->or->like('email', '%' . $search . '%')
1148
                ->or->like('email', '%' . $search . '%')
1157
            ->unnest();
1149
                ->unnest();
1158
            
-
 
1159
        }
1150
        }
1160
        
1151
 
1161
        $select->order(['first_name', 'last_name']);
1152
        $select->order(['first_name', 'last_name']);
1162
        
1153
 
1163
        // echo $select->getSqlString($this->adapter->platform); exit;
1154
        // echo $select->getSqlString($this->adapter->platform); exit;
1164
        
1155
 
1165
        $prototype = new User();
1156
        $prototype = new User();
1166
        
1157
 
1167
        return $this->executeFetchAllObject($select, $prototype);
1158
        return $this->executeFetchAllObject($select, $prototype);
1168
    }
1159
    }
1169
    
1160
 
1170
    /**
1161
    /**
1171
     *
1162
     *
1172
     * @param int $company_id
1163
     * @param int $company_id
1173
     * @param string $search
1164
     * @param string $search
1174
     * @return User[]
1165
     * @return User[]
Línea 1176... Línea 1167...
1176
    public function fetchAllSuggestForInvitationByCompanyId($company_id, $search)
1167
    public function fetchAllSuggestForInvitationByCompanyId($company_id, $search)
1177
    {
1168
    {
1178
        $selectCompanyUsers = $this->sql->select(CompanyUserMapper::_TABLE);
1169
        $selectCompanyUsers = $this->sql->select(CompanyUserMapper::_TABLE);
1179
        $selectCompanyUsers->columns(['user_id']);
1170
        $selectCompanyUsers->columns(['user_id']);
1180
        $selectCompanyUsers->where->equalTo('company_id', $company_id);
1171
        $selectCompanyUsers->where->equalTo('company_id', $company_id);
1181
        $selectCompanyUsers->where->in('status', [ 
1172
        $selectCompanyUsers->where->in('status', [
1182
            CompanyUser::STATUS_ACCEPTED,
1173
            CompanyUser::STATUS_ACCEPTED,
1183
            CompanyUser::STATUS_PENDING,
1174
            CompanyUser::STATUS_PENDING,
1184
            CompanyUser::STATUS_SENT,
1175
            CompanyUser::STATUS_SENT,
Línea 1185... Línea 1176...
1185
 
1176
 
1186
        ]);
1177
        ]);
1187
        
1178
 
1188
        //echo $selectCompanyUsers->getSqlString($this->adapter->platform); exit;
1179
        //echo $selectCompanyUsers->getSqlString($this->adapter->platform); exit;
1189
        
1180
 
1190
        $select = $this->sql->select();
1181
        $select = $this->sql->select();
1191
        $select->from(self::_TABLE);
1182
        $select->from(self::_TABLE);
1192
        $select->where->notIn('id', $selectCompanyUsers);
1183
        $select->where->notIn('id', $selectCompanyUsers);
1193
        $select->where->equalTo('status', User::STATUS_ACTIVE);
1184
        $select->where->equalTo('status', User::STATUS_ACTIVE);
1194
        $select->where->equalTo('email_verified', User::EMAIL_VERIFIED_YES);
1185
        $select->where->equalTo('email_verified', User::EMAIL_VERIFIED_YES);
1195
        
1186
 
1196
        if($search) {
1187
        if ($search) {
1197
            $select->where->nest()
1188
            $select->where->nest()
1198
            ->like('first_name', '%' . $search . '%')
1189
                ->like('first_name', '%' . $search . '%')
1199
            ->or->like('last_name', '%' . $search . '%')
1190
                ->or->like('last_name', '%' . $search . '%')
1200
            ->or->like('email', '%' . $search . '%')
1191
                ->or->like('email', '%' . $search . '%')
1201
            ->unnest();
-
 
1202
            
1192
                ->unnest();
1203
        }
1193
        }
1204
        
1194
 
1205
        $select->order(['first_name', 'last_name']);
1195
        $select->order(['first_name', 'last_name']);
1206
        
1196
 
1207
       // echo $select->getSqlString($this->adapter->platform); exit;
1197
        // echo $select->getSqlString($this->adapter->platform); exit;
1208
        
1198
 
1209
        $prototype = new User(); 
1199
        $prototype = new User();
1210
        
1200
 
1211
        return $this->executeFetchAllObject($select, $prototype);
1201
        return $this->executeFetchAllObject($select, $prototype);
1212
    }
1202
    }
1213
    
1203
 
1214
    /**
1204
    /**
1215
     *
1205
     *
1216
     * @param int $group_id
1206
     * @param int $group_id
1217
     * @param int $network_id
1207
     * @param int $network_id
Línea 1224... Línea 1214...
1224
        $selectGroupMembers->columns(['user_id']);
1214
        $selectGroupMembers->columns(['user_id']);
1225
        $selectGroupMembers->where->equalTo('group_id', $group_id);
1215
        $selectGroupMembers->where->equalTo('group_id', $group_id);
1226
        $selectGroupMembers->where->in('status', [
1216
        $selectGroupMembers->where->in('status', [
1227
            CompanyUser::STATUS_ACCEPTED,
1217
            CompanyUser::STATUS_ACCEPTED,
1228
        ]);
1218
        ]);
1229
        
1219
 
1230
        //echo $selectGroupMembers->getSqlString($this->adapter->platform); exit;
1220
        //echo $selectGroupMembers->getSqlString($this->adapter->platform); exit;
1231
        
1221
 
1232
        $select = $this->sql->select();
1222
        $select = $this->sql->select();
1233
        $select->from(self::_TABLE);
1223
        $select->from(self::_TABLE);
1234
        $select->where->equalTo('network_id', $network_id);
1224
        $select->where->equalTo('network_id', $network_id);
1235
        $select->where->notIn('id', $selectGroupMembers);
1225
        $select->where->notIn('id', $selectGroupMembers);
1236
        $select->where->equalTo('status', User::STATUS_ACTIVE);
1226
        $select->where->equalTo('status', User::STATUS_ACTIVE);
1237
        $select->where->equalTo('email_verified', User::EMAIL_VERIFIED_YES);
1227
        $select->where->equalTo('email_verified', User::EMAIL_VERIFIED_YES);
1238
        
1228
 
1239
        if($search) {
1229
        if ($search) {
1240
            $select->where->nest()
1230
            $select->where->nest()
1241
            ->like('first_name', '%' . $search . '%')
1231
                ->like('first_name', '%' . $search . '%')
1242
            ->or->like('last_name', '%' . $search . '%')
1232
                ->or->like('last_name', '%' . $search . '%')
1243
            ->or->like('email', '%' . $search . '%')
1233
                ->or->like('email', '%' . $search . '%')
1244
            ->unnest();
1234
                ->unnest();
1245
            
-
 
1246
        }
1235
        }
1247
        
1236
 
1248
        $select->order(['first_name', 'last_name']);
1237
        $select->order(['first_name', 'last_name']);
1249
        
1238
 
1250
        // echo $select->getSqlString($this->adapter->platform); exit;
1239
        // echo $select->getSqlString($this->adapter->platform); exit;
1251
        
1240
 
1252
        $prototype = new User();
1241
        $prototype = new User();
1253
        
1242
 
1254
        return $this->executeFetchAllObject($select, $prototype);
1243
        return $this->executeFetchAllObject($select, $prototype);
1255
    }
1244
    }
1256
    
1245
 
1257
    /**
1246
    /**
1258
     *
1247
     *
1259
     * @param int $group_id
1248
     * @param int $group_id
1260
     * @param string $search
1249
     * @param string $search
1261
     * @return User[]
1250
     * @return User[]
Línea 1264... Línea 1253...
1264
    {
1253
    {
1265
        $selectGroupMembers = $this->sql->select(GroupMemberMapper::_TABLE);
1254
        $selectGroupMembers = $this->sql->select(GroupMemberMapper::_TABLE);
1266
        $selectGroupMembers->columns(['user_id']);
1255
        $selectGroupMembers->columns(['user_id']);
1267
        $selectGroupMembers->where->equalTo('group_id', $group_id);
1256
        $selectGroupMembers->where->equalTo('group_id', $group_id);
1268
        $selectGroupMembers->where->in('status', [
1257
        $selectGroupMembers->where->in('status', [
1269
         CompanyUser::STATUS_ACCEPTED,
1258
            CompanyUser::STATUS_ACCEPTED,
1270
        ]);
1259
        ]);
1271
        
1260
 
1272
        //echo $selectGroupMembers->getSqlString($this->adapter->platform); exit;
1261
        //echo $selectGroupMembers->getSqlString($this->adapter->platform); exit;
1273
        
1262
 
1274
        $select = $this->sql->select();
1263
        $select = $this->sql->select();
1275
        $select->from(self::_TABLE);
1264
        $select->from(self::_TABLE);
1276
        $select->where->notIn('id', $selectGroupMembers);
1265
        $select->where->notIn('id', $selectGroupMembers);
1277
        $select->where->equalTo('status', User::STATUS_ACTIVE);
1266
        $select->where->equalTo('status', User::STATUS_ACTIVE);
1278
        $select->where->equalTo('email_verified', User::EMAIL_VERIFIED_YES);
1267
        $select->where->equalTo('email_verified', User::EMAIL_VERIFIED_YES);
1279
        
1268
 
1280
        if($search) {
1269
        if ($search) {
1281
            $select->where->nest()
1270
            $select->where->nest()
1282
            ->like('first_name', '%' . $search . '%')
1271
                ->like('first_name', '%' . $search . '%')
1283
            ->or->like('last_name', '%' . $search . '%')
1272
                ->or->like('last_name', '%' . $search . '%')
1284
            ->or->like('email', '%' . $search . '%')
1273
                ->or->like('email', '%' . $search . '%')
1285
            ->unnest();
1274
                ->unnest();
1286
            
-
 
1287
        }
1275
        }
1288
        
1276
 
1289
        $select->order(['first_name', 'last_name']);
1277
        $select->order(['first_name', 'last_name']);
1290
        
1278
 
1291
        // echo $select->getSqlString($this->adapter->platform); exit;
1279
        // echo $select->getSqlString($this->adapter->platform); exit;
1292
        
1280
 
1293
        $prototype = new User();
1281
        $prototype = new User();
1294
        
1282
 
1295
        return $this->executeFetchAllObject($select, $prototype);
1283
        return $this->executeFetchAllObject($select, $prototype);
1296
    }
1284
    }
Línea 1297... Línea 1285...
1297
 
1285
 
1298
    
1286
 
1299
    
1287
 
1300
    public function fetchAllSuggestForInvitationByHptgId($group_id,$company_id, $search)
1288
    public function fetchAllSuggestForInvitationByHptgId($group_id, $company_id, $search)
1301
    {
1289
    {
1302
        $selectGroupMembers = $this->sql->select(HighPerformanceTeamsGroupsMembersMapper::_TABLE);
1290
        $selectGroupMembers = $this->sql->select(HighPerformanceTeamsGroupsMembersMapper::_TABLE);
1303
        $selectGroupMembers->columns(['user_id']);
1291
        $selectGroupMembers->columns(['user_id']);
1304
        $selectGroupMembers->where->equalTo('group_id', $group_id);
1292
        $selectGroupMembers->where->equalTo('group_id', $group_id);
1305
        $selectGroupMembers->where->in('status', [
1293
        $selectGroupMembers->where->in('status', [
1306
            HighPerformanceTeamsGroupsMembers::STATUS_ACCEPTED,
1294
            HighPerformanceTeamsGroupsMembers::STATUS_ACCEPTED,
1307
            HighPerformanceTeamsGroupsMembers::STATUS_ADDED_BY_ADMIN,
1295
            HighPerformanceTeamsGroupsMembers::STATUS_ADDED_BY_ADMIN,
1308
            HighPerformanceTeamsGroupsMembers::STATUS_INVITED,
1296
            HighPerformanceTeamsGroupsMembers::STATUS_INVITED,
1309
        ]);
1297
        ]);
1310
        
1298
 
1311
        //echo $selectGroupMembers->getSqlString($this->adapter->platform); exit;
1299
        //echo $selectGroupMembers->getSqlString($this->adapter->platform); exit;
1312
        
1300
 
1313
        $select = $this->sql->select();
1301
        $select = $this->sql->select();
1314
        $select->from(['u' => self::_TABLE]);
1302
        $select->from(['u' => self::_TABLE]);
1315
        $select->join(['cu' => CompanyUserMapper::_TABLE], 'cu.user_id = u.id', []);
1303
        $select->join(['cu' => CompanyUserMapper::_TABLE], 'cu.user_id = u.id', []);
1316
        $select->where->notIn('u.id', $selectGroupMembers);
1304
        $select->where->notIn('u.id', $selectGroupMembers);
1317
        $select->where->equalTo('u.status', User::STATUS_ACTIVE);
1305
        $select->where->equalTo('u.status', User::STATUS_ACTIVE);
1318
        $select->where->equalTo('u.email_verified', User::EMAIL_VERIFIED_YES);
1306
        $select->where->equalTo('u.email_verified', User::EMAIL_VERIFIED_YES);
Línea 1319... Línea 1307...
1319
        $select->where->equalTo('cu.company_id', $company_id);
1307
        $select->where->equalTo('cu.company_id', $company_id);
1320
 
1308
 
1321
        
1309
 
1322
        if($search) {
1310
        if ($search) {
1323
            $select->where->nest()
1311
            $select->where->nest()
1324
            ->like('u.first_name', '%' . $search . '%')
1312
                ->like('u.first_name', '%' . $search . '%')
1325
            ->or->like('u.last_name', '%' . $search . '%')
1313
                ->or->like('u.last_name', '%' . $search . '%')
1326
            ->or->like('u.email', '%' . $search . '%')
-
 
1327
            ->unnest();
1314
                ->or->like('u.email', '%' . $search . '%')
1328
            
1315
                ->unnest();
1329
        }
1316
        }
1330
        
1317
 
1331
        $select->order(['u.first_name', 'u.last_name']);
1318
        $select->order(['u.first_name', 'u.last_name']);
1332
        
1319
 
1333
        // echo $select->getSqlString($this->adapter->platform); exit;
1320
        // echo $select->getSqlString($this->adapter->platform); exit;
1334
        
1321
 
1335
        $prototype = new User();
1322
        $prototype = new User();
1336
        
1323
 
1337
        return $this->executeFetchAllObject($select, $prototype);
1324
        return $this->executeFetchAllObject($select, $prototype);
1338
    }
1325
    }
1339
    
1326
 
1340
    /**
1327
    /**
1341
     *
1328
     *
1342
     * @param string $search
1329
     * @param string $search
1343
     * @param int $page
1330
     * @param int $page
1344
     * @param int $records_per_page
1331
     * @param int $records_per_page
1345
     * @param string $order_field
1332
     * @param string $order_field
1346
     * @param string $order_direction
1333
     * @param string $order_direction
1347
     * @return Paginator
1334
     * @return Paginator
1348
     */
1335
     */
1349
    public function fetchAllDataTable($search, $page = 1, $records_per_page = 10, $order_field= 'name', $order_direction = 'ASC')
1336
    public function fetchAllDataTable($search, $page = 1, $records_per_page = 10, $order_field = 'name', $order_direction = 'ASC')
1350
    {
1337
    {
1351
        $prototype = new User();
1338
        $prototype = new User();
1352
        $select = $this->sql->select(self::_TABLE);
1339
        $select = $this->sql->select(self::_TABLE);
1353
        $select->where->in('usertype_id', [UserType::ADMIN, UserType::USER]);
1340
        $select->where->in('usertype_id', [UserType::ADMIN, UserType::USER]);
1354
        
1341
 
1355
 
1342
 
1356
        if($search) {
1343
        if ($search) {
1357
            $select->where->nest()
1344
            $select->where->nest()
1358
            ->like('first_name', '%' . $search . '%')
1345
                ->like('first_name', '%' . $search . '%')
1359
            ->or->like('last_name', '%' . $search . '%')
1346
                ->or->like('last_name', '%' . $search . '%')
1360
            ->or->like('email', '%' . $search . '%')
-
 
1361
            ->unnest();
1347
                ->or->like('email', '%' . $search . '%')
Línea 1362... Línea 1348...
1362
            
1348
                ->unnest();
1363
        }
1349
        }
1364
 
1350
 
1365
        
1351
 
1366
        $select->order($order_field . ' ' . $order_direction);
1352
        $select->order($order_field . ' ' . $order_direction);
1367
        
1353
 
1368
        $hydrator   = new ObjectPropertyHydrator();
1354
        $hydrator   = new ObjectPropertyHydrator();
1369
        $resultset  = new HydratingResultSet($hydrator, $prototype);
1355
        $resultset  = new HydratingResultSet($hydrator, $prototype);
1370
        
1356
 
1371
        $adapter = new DbSelect($select, $this->sql, $resultset);
1357
        $adapter = new DbSelect($select, $this->sql, $resultset);
1372
        $paginator = new Paginator($adapter);
1358
        $paginator = new Paginator($adapter);
1373
        $paginator->setItemCountPerPage($records_per_page);
1359
        $paginator->setItemCountPerPage($records_per_page);
1374
        $paginator->setCurrentPageNumber($page);
1360
        $paginator->setCurrentPageNumber($page);
1375
        
1361
 
1376
        
1362
 
1377
        return $paginator;
1363
        return $paginator;
1378
    }
1364
    }
1379
    
1365
 
1380
    /**
1366
    /**
1381
     *
1367
     *
1382
     * @param int $network_id
1368
     * @param int $network_id
1383
     * @param string $search
1369
     * @param string $search
1384
     * @param int $page
1370
     * @param int $page
1385
     * @param int $records_per_page
1371
     * @param int $records_per_page
1386
     * @param string $order_field
1372
     * @param string $order_field
1387
     * @param string $order_direction
1373
     * @param string $order_direction
1388
     * @return Paginator
1374
     * @return Paginator
1389
     */
1375
     */
1390
    public function fetchAllDataTableByNetworkId($network_id, $search, $page = 1, $records_per_page = 10, $order_field= 'name', $order_direction = 'ASC')
1376
    public function fetchAllDataTableByNetworkId($network_id, $search, $page = 1, $records_per_page = 10, $order_field = 'name', $order_direction = 'ASC')
1391
    {
1377
    {
1392
        $prototype = new User();
1378
        $prototype = new User();
1393
        $select = $this->sql->select(self::_TABLE);
1379
        $select = $this->sql->select(self::_TABLE);
1394
        $select->where->in('usertype_id', [UserType::ADMIN, UserType::USER]);
1380
        $select->where->in('usertype_id', [UserType::ADMIN, UserType::USER]);
1395
        $select->where->equalTo('network_id', $network_id);
1381
        $select->where->equalTo('network_id', $network_id);
1396
        $select->where->equalTo('request_access', User::REQUEST_ACCESS_APPROVED);
1382
        $select->where->equalTo('request_access', User::REQUEST_ACCESS_APPROVED);
1397
        
1383
 
1398
        
1384
 
1399
        if($search) {
1385
        if ($search) {
1400
            $select->where->nest()
1386
            $select->where->nest()
1401
            ->like('first_name', '%' . $search . '%')
1387
                ->like('first_name', '%' . $search . '%')
1402
            ->or->like('last_name', '%' . $search . '%')
-
 
1403
            ->or->like('email', '%' . $search . '%')
1388
                ->or->like('last_name', '%' . $search . '%')
1404
            ->unnest();
1389
                ->or->like('email', '%' . $search . '%')
1405
            
1390
                ->unnest();
1406
        }
1391
        }
1407
        
1392
 
1408
        
1393
 
1409
        $select->order($order_field . ' ' . $order_direction);
1394
        $select->order($order_field . ' ' . $order_direction);
1410
        
1395
 
1411
        $hydrator   = new ObjectPropertyHydrator();
1396
        $hydrator   = new ObjectPropertyHydrator();
1412
        $resultset  = new HydratingResultSet($hydrator, $prototype);
1397
        $resultset  = new HydratingResultSet($hydrator, $prototype);
1413
        
1398
 
1414
        $adapter = new DbSelect($select, $this->sql, $resultset);
1399
        $adapter = new DbSelect($select, $this->sql, $resultset);
1415
        $paginator = new Paginator($adapter);
1400
        $paginator = new Paginator($adapter);
1416
        $paginator->setItemCountPerPage($records_per_page);
1401
        $paginator->setItemCountPerPage($records_per_page);
1417
        $paginator->setCurrentPageNumber($page);
1402
        $paginator->setCurrentPageNumber($page);
1418
        
1403
 
1419
        
1404
 
1420
        return $paginator;
1405
        return $paginator;
1421
    }
1406
    }
1422
    
1407
 
1423
    
1408
 
1424
   
1409
 
1425
    
1410
 
1426
    /**
1411
    /**
1427
     *
1412
     *
1428
     * @param int $network_id
1413
     * @param int $network_id
1429
     * @param string $search
1414
     * @param string $search
1430
     * @param int $page
1415
     * @param int $page
1431
     * @param int $records_per_page
1416
     * @param int $records_per_page
1432
     * @param string $order_field
1417
     * @param string $order_field
1433
     * @param string $order_direction
1418
     * @param string $order_direction
1434
     * @return Paginator
1419
     * @return Paginator
1435
     */
1420
     */
1436
    public function fetchAllDataTableRequestAccessPendingByNetworkId($network_id, $search, $page = 1, $records_per_page = 10, $order_field= 'name', $order_direction = 'ASC')
1421
    public function fetchAllDataTableRequestAccessPendingByNetworkId($network_id, $search, $page = 1, $records_per_page = 10, $order_field = 'name', $order_direction = 'ASC')
1437
    {
1422
    {
1438
        $prototype = new User();
1423
        $prototype = new User();
1439
        $select = $this->sql->select(self::_TABLE);
1424
        $select = $this->sql->select(self::_TABLE);
1440
        $select->where->in('usertype_id', [UserType::ADMIN, UserType::USER]);
1425
        $select->where->in('usertype_id', [UserType::ADMIN, UserType::USER]);
1441
        $select->where->equalTo('network_id', $network_id);
1426
        $select->where->equalTo('network_id', $network_id);
1442
        $select->where->equalTo('request_access', User::REQUEST_ACCESS_PENDING);
1427
        $select->where->equalTo('request_access', User::REQUEST_ACCESS_PENDING);
1443
        
1428
 
1444
        if($search) {
1429
        if ($search) {
1445
            $select->where->nest()
1430
            $select->where->nest()
1446
            ->like('first_name', '%' . $search . '%')
1431
                ->like('first_name', '%' . $search . '%')
1447
            ->or->like('last_name', '%' . $search . '%')
-
 
1448
            ->or->like('email', '%' . $search . '%')
1432
                ->or->like('last_name', '%' . $search . '%')
1449
            ->unnest();
1433
                ->or->like('email', '%' . $search . '%')
1450
            
1434
                ->unnest();
1451
        }
1435
        }
1452
        
1436
 
1453
        
1437
 
1454
        $select->order($order_field . ' ' . $order_direction);
1438
        $select->order($order_field . ' ' . $order_direction);
1455
        
1439
 
1456
        $hydrator   = new ObjectPropertyHydrator();
1440
        $hydrator   = new ObjectPropertyHydrator();
1457
        $resultset  = new HydratingResultSet($hydrator, $prototype);
1441
        $resultset  = new HydratingResultSet($hydrator, $prototype);
1458
        
1442
 
1459
        $adapter = new DbSelect($select, $this->sql, $resultset);
1443
        $adapter = new DbSelect($select, $this->sql, $resultset);
1460
        $paginator = new Paginator($adapter);
1444
        $paginator = new Paginator($adapter);
1461
        $paginator->setItemCountPerPage($records_per_page);
1445
        $paginator->setItemCountPerPage($records_per_page);
1462
        $paginator->setCurrentPageNumber($page);
1446
        $paginator->setCurrentPageNumber($page);
1463
        
1447
 
Línea 1464... Línea 1448...
1464
        
1448
 
1465
        return $paginator;
1449
        return $paginator;
1466
    }
1450
    }
1467
 
1451
 
1468
    
1452
 
1469
    /**
1453
    /**
Línea 1476... Línea 1460...
1476
        $update = $this->sql->update(self::_TABLE);
1460
        $update = $this->sql->update(self::_TABLE);
1477
        $update->set([
1461
        $update->set([
1478
            'id_adult' => User::IS_ADULT_YES,
1462
            'id_adult' => User::IS_ADULT_YES,
1479
        ]);
1463
        ]);
1480
        $update->where->equalTo('id', $id);
1464
        $update->where->equalTo('id', $id);
1481
        
1465
 
1482
        return $this->executeUpdate($update);
1466
        return $this->executeUpdate($update);
1483
    }
1467
    }
1484
    
1468
 
1485
    /**
1469
    /**
1486
     *
1470
     *
1487
     * @param int $id
1471
     * @param int $id
1488
     * @return boolean
1472
     * @return boolean
1489
     */
1473
     */
Línea 1492... Línea 1476...
1492
        $update = $this->sql->update(self::_TABLE);
1476
        $update = $this->sql->update(self::_TABLE);
1493
        $update->set([
1477
        $update->set([
1494
            'id_adult' => User::IS_ADULT_NO,
1478
            'id_adult' => User::IS_ADULT_NO,
1495
        ]);
1479
        ]);
1496
        $update->where->equalTo('id', $id);
1480
        $update->where->equalTo('id', $id);
1497
        
1481
 
1498
        return $this->executeUpdate($update);
1482
        return $this->executeUpdate($update);
1499
    }
1483
    }
1500
    
1484
 
1501
    /**
1485
    /**
1502
     * 
1486
     * 
1503
     * @param int $id
1487
     * @param int $id
1504
     * @return boolean
1488
     * @return boolean
1505
     */
1489
     */
1506
    public function updateChatOnlineStatus($id)
1490
    public function updateChatOnlineStatus($id)
1507
    {
1491
    {
1508
        $update = $this->sql->update(self::_TABLE);
1492
        $update = $this->sql->update(self::_TABLE);
1509
        $update->set([
1493
        $update->set([
1510
            'online' => 1, 
1494
            'online' => 1,
1511
        ]);
1495
        ]);
1512
        $update->where->equalTo('id', $id);
1496
        $update->where->equalTo('id', $id);
1513
        
1497
 
1514
        return $this->executeUpdate($update);
1498
        return $this->executeUpdate($update);
1515
    }
1499
    }
1516
   
-
 
Línea -... Línea 1500...
-
 
1500
 
1517
 
1501
 
1518
    
1502
 
1519
    /**
1503
    /**
1520
     * 
1504
     * 
1521
     * @param int $id
1505
     * @param int $id
1522
     * @return boolean
1506
     * @return boolean
Línea 1527... Línea 1511...
1527
        $update->set([
1511
        $update->set([
1528
            'last_activity_on' => new Expression('NOW()'),
1512
            'last_activity_on' => new Expression('NOW()'),
1529
            'online' => 1,
1513
            'online' => 1,
1530
        ]);
1514
        ]);
1531
        $update->where->equalTo('id', $id);
1515
        $update->where->equalTo('id', $id);
1532
        
1516
 
1533
        return $this->executeUpdate($update);
1517
        return $this->executeUpdate($update);
1534
    }
1518
    }
1535
    
1519
 
1536
    
1520
 
1537
    /**
1521
    /**
1538
     *
1522
     *
1539
     * @param int $id
1523
     * @param int $id
1540
     * @return boolean
1524
     * @return boolean
1541
     */
1525
     */
Línea 1546... Línea 1530...
1546
            'last_heart_beat_at' => new Expression('NOW()'),
1530
            'last_heart_beat_at' => new Expression('NOW()'),
1547
            'online' => 1,
1531
            'online' => 1,
Línea 1548... Línea 1532...
1548
 
1532
 
1549
        ]);
1533
        ]);
1550
        $update->where->equalTo('id', $id);
1534
        $update->where->equalTo('id', $id);
1551
        
1535
 
1552
        return $this->executeUpdate($update);
1536
        return $this->executeUpdate($update);
1553
    }
1537
    }
1554
    
1538
 
1555
    /**
1539
    /**
1556
     *
1540
     *
1557
     * @param int $id
1541
     * @param int $id
1558
     * @return boolean
1542
     * @return boolean
1559
     */
1543
     */
1560
    public function emailVerifyAndActive($id)
1544
    public function emailVerifyAndActive($id)
1561
    {
1545
    {
1562
        $update = $this->sql->update(self::_TABLE);
1546
        $update = $this->sql->update(self::_TABLE);
1563
        $update->set([
1547
        $update->set([
1564
            'email_verified' => User::EMAIL_VERIFIED_YES,
1548
            'email_verified' => User::EMAIL_VERIFIED_YES,
1565
            'status' => User::STATUS_ACTIVE, 
1549
            'status' => User::STATUS_ACTIVE,
1566
        ]);
1550
        ]);
1567
        $update->where->equalTo('id', $id);
1551
        $update->where->equalTo('id', $id);
1568
        
1552
 
1569
        return $this->executeUpdate($update);
1553
        return $this->executeUpdate($update);
1570
    }
1554
    }
1571
        
1555
 
1572
    
1556
 
1573
    /**
1557
    /**
1574
     *
1558
     *
1575
     * @param int $company_id
1559
     * @param int $company_id
1576
     * @return User[]
1560
     * @return User[]
1577
     */
1561
     */
1578
    public function fetchAllVerifyAndActiveByCompanyId($company_id)
1562
    public function fetchAllVerifyAndActiveByCompanyId($company_id)
1579
    {
1563
    {
1580
        $select = $this->sql->select();
1564
        $select = $this->sql->select();
1581
        $select->columns(['status', 'company_id']);
1565
        $select->columns(['status', 'company_id']);
1582
        $select->from(['tb1' => CompanyUserMapper::_TABLE]);
1566
        $select->from(['tb1' => CompanyUserMapper::_TABLE]);
-
 
1567
        $select->join(['tb2' => self::_TABLE], 'tb1.user_id = tb2.id');
1583
        $select->join(['tb2' => self::_TABLE] , 'tb1.user_id = tb2.id');
1568
 
Línea 1584... Línea -...
1584
        
-
 
1585
 
1569
 
1586
        
1570
 
1587
        $select->where->equalTo('tb1.company_id', $company_id);
1571
        $select->where->equalTo('tb1.company_id', $company_id);
1588
        $select->where->equalTo('tb1.owner', CompanyUser::OWNER_NO);
1572
        $select->where->equalTo('tb1.owner', CompanyUser::OWNER_NO);
1589
        $select->where->in('tb1.status', [CompanyUser::STATUS_ACCEPTED, CompanyUser::STATUS_ADMIN_WILL_ADD]);
1573
        $select->where->in('tb1.status', [CompanyUser::STATUS_ACCEPTED, CompanyUser::STATUS_ADMIN_WILL_ADD]);
1590
        $select->where->equalTo('tb2.email_verified', User::EMAIL_VERIFIED_YES);
1574
        $select->where->equalTo('tb2.email_verified', User::EMAIL_VERIFIED_YES);
1591
        $select->where->equalTo('tb2.status', User::STATUS_ACTIVE);
1575
        $select->where->equalTo('tb2.status', User::STATUS_ACTIVE);
Línea 1592... Línea 1576...
1592
        
1576
 
1593
        $select->order('first_name', 'last_name', 'email');
1577
        $select->order('first_name', 'last_name', 'email');
1594
 
1578
 
1595
        $prototype = User();
1579
        $prototype = User();
1596
      
1580