Newer
Older
<?php
/**
* Copyright Maarch since 2008 under licence GPLv3.
* See LICENCE.txt file at the root folder for more details.
* This file is part of Maarch software.
*
*/
/**
* @brief Auto Complete Controller
* @author dev@maarch.org
*/
namespace SrcCore\controllers;
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
use Slim\Http\Request;
use Slim\Http\Response;
use Entity\models\EntityModel;
use Status\models\StatusModel;
use User\models\UserModel;
class AutoCompleteController
{
public static function getUsers(Request $request, Response $response)
{
$excludedUsers = ['superadmin'];
$users = UserModel::get([
'select' => ['user_id', 'firstname', 'lastname'],
'where' => ['enabled = ?', 'status != ?', 'user_id not in (?)'],
'data' => ['Y', 'DEL', $excludedUsers],
'orderBy' => ['lastname']
]);
$data = [];
foreach ($users as $key => $value) {
$primaryEntity = UserModel::getPrimaryEntityByUserId(['userId' => $value['user_id']]);
$data[] = [
'type' => 'user',
'id' => $value['user_id'],
'idToDisplay' => "{$value['firstname']} {$value['lastname']}",
'otherInfo' => $primaryEntity['entity_label']
];
}
return $response->withJson($data);
}
public static function getUsersForVisa(Request $request, Response $response)
{
$excludedUsers = ['superadmin'];
$users = UserModel::get([
'select' => ['user_id', 'firstname', 'lastname'],
'where' => ['enabled = ?', 'status != ?', 'user_id not in (?)'],
'data' => ['Y', 'DEL', $excludedUsers],
'orderBy' => ['lastname']
]);
$data = [];
foreach ($users as $key => $value) {
if (ServiceModel::hasService(['id' => 'visa_documents', 'userId' => $value['user_id'], 'location' => 'visa', 'type' => 'use'])
|| ServiceModel::hasService(['id' => 'sign_document', 'userId' => $value['user_id'], 'location' => 'visa', 'type' => 'use'])) {
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
$primaryEntity = UserModel::getPrimaryEntityByUserId(['userId' => $value['user_id']]);
$data[] = [
'type' => 'user',
'id' => $value['user_id'],
'idToDisplay' => "{$value['firstname']} {$value['lastname']}",
'otherInfo' => $primaryEntity['entity_label']
];
}
}
return $response->withJson($data);
}
public static function getEntities(Request $request, Response $response)
{
$entities = EntityModel::get([
'select' => ['entity_id', 'entity_label', 'short_label'],
'where' => ['enabled = ?'],
'data' => ['Y'],
'orderBy' => ['entity_label']
]);
$data = [];
foreach ($entities as $key => $value) {
$data[] = [
'type' => 'entity',
'id' => $value['entity_id'],
'idToDisplay' => $value['entity_label'],
'otherInfo' => $value['short_label']
];
}
return $response->withJson($data);
}
public static function getStatuses(Request $request, Response $response)
{
$statuses = StatusModel::get([
'select' => ['id', 'label_status', 'img_filename']
]);
$data = [];
foreach ($statuses as $key => $value) {
$data[] = [
'type' => 'status',
'id' => $value['id'],
'idToDisplay' => $value['label_status'],
'otherInfo' => $value['img_filename']
];
}
return $response->withJson($data);
}
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
public static function getBanAddresses(Request $request, Response $response)
{
$data = $request->getQueryParams();
$check = Validator::stringType()->notEmpty()->validate($data['address']);
if (!$check) {
return $response->withStatus(400)->withJson(['errors' => 'Bad Request']);
}
\Zend_Search_Lucene_Analysis_Analyzer::setDefault(new \Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive());
\Zend_Search_Lucene_Search_QueryParser::setDefaultOperator(\Zend_Search_Lucene_Search_QueryParser::B_AND);
\Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8');
$index = \Zend_Search_Lucene::open('addresses_ban/indexes');
$hits = $index->find($data['address']);
$addresses = [];
foreach($hits as $key => $hit){
$addresses[] = [
$hit->id,
$hit->afnorName,
$hit->postalCode,
$hit->streetNumber
];
}
return $response->withJson(['count' => count($hits), 'addresses' => $addresses]);
}