| 7811 | nelberth | 1 | <?php
 | 
        
           |  |  | 2 | declare(strict_types=1);
 | 
        
           |  |  | 3 |   | 
        
           |  |  | 4 | namespace LeadersLinked\Controller;
 | 
        
           |  |  | 5 |   | 
        
           |  |  | 6 | use Laminas\Authentication\AuthenticationService;
 | 
        
           |  |  | 7 | use Laminas\Authentication\Result as AuthResult;
 | 
        
           |  |  | 8 | use Laminas\Db\Adapter\AdapterInterface;
 | 
        
           |  |  | 9 | use Laminas\Cache\Storage\Adapter\AbstractAdapter;
 | 
        
           |  |  | 10 | use Laminas\Mvc\Controller\AbstractActionController;
 | 
        
           |  |  | 11 | use Laminas\Mvc\I18n\Translator;
 | 
        
           |  |  | 12 | use Laminas\Log\LoggerInterface;
 | 
        
           |  |  | 13 | use Laminas\View\Model\ViewModel;
 | 
        
           |  |  | 14 | use Laminas\View\Model\JsonModel;
 | 
        
           | 7818 | nelberth | 15 | use LeadersLinked\Model\HighPerformanceTeamsGroupsMembers;
 | 
        
           | 7811 | nelberth | 16 | use LeadersLinked\Hydrator\ObjectPropertyHydrator;
 | 
        
           | 7818 | nelberth | 17 | use LeadersLinked\Form\HighPerformanceTeamsGroupsMembersForm;
 | 
        
           | 7811 | nelberth | 18 | use LeadersLinked\Library\Functions;
 | 
        
           |  |  | 19 | use LeadersLinked\Mapper\UserMapper;
 | 
        
           | 7818 | nelberth | 20 | use LeadersLinked\Mapper\HighPerformanceTeamsGroupsMembersMapper;
 | 
        
           | 7811 | nelberth | 21 | use LeadersLinked\Mapper\CompanyMapper;
 | 
        
           |  |  | 22 | use LeadersLinked\Mapper\CompanyUserMapper;
 | 
        
           |  |  | 23 |   | 
        
           | 7827 | nelberth | 24 | use LeadersLinked\Mapper\HighPerformanceTeamsGroupsMapper;
 | 
        
           | 7811 | nelberth | 25 |   | 
        
           | 7827 | nelberth | 26 | class HighPerformanceTeamsGroupsMembersController extends AbstractActionController
 | 
        
           | 7811 | nelberth | 27 | {
 | 
        
           |  |  | 28 |     /**
 | 
        
           |  |  | 29 |      *
 | 
        
           |  |  | 30 |      * @var AdapterInterface
 | 
        
           |  |  | 31 |      */
 | 
        
           |  |  | 32 |     private $adapter;
 | 
        
           |  |  | 33 |   | 
        
           |  |  | 34 |   | 
        
           |  |  | 35 |     /**
 | 
        
           |  |  | 36 |      *
 | 
        
           |  |  | 37 |      * @var AbstractAdapter
 | 
        
           |  |  | 38 |      */
 | 
        
           |  |  | 39 |     private $cache;
 | 
        
           |  |  | 40 |   | 
        
           |  |  | 41 |     /**
 | 
        
           |  |  | 42 |      *
 | 
        
           |  |  | 43 |      * @var  LoggerInterface
 | 
        
           |  |  | 44 |      */
 | 
        
           |  |  | 45 |     private $logger;
 | 
        
           |  |  | 46 |   | 
        
           |  |  | 47 |     /**
 | 
        
           |  |  | 48 |      *
 | 
        
           |  |  | 49 |      * @var array
 | 
        
           |  |  | 50 |      */
 | 
        
           |  |  | 51 |     private $config;
 | 
        
           |  |  | 52 |   | 
        
           |  |  | 53 |   | 
        
           |  |  | 54 |   | 
        
           |  |  | 55 |     /**
 | 
        
           |  |  | 56 |      *
 | 
        
           |  |  | 57 |      * @param AdapterInterface $adapter
 | 
        
           |  |  | 58 |      * @param AbstractAdapter $cache
 | 
        
           |  |  | 59 |      * @param LoggerInterface $logger
 | 
        
           |  |  | 60 |      * @param array $config
 | 
        
           |  |  | 61 |      */
 | 
        
           |  |  | 62 |     public function __construct($adapter, $cache , $logger, $config)
 | 
        
           |  |  | 63 |     {
 | 
        
           |  |  | 64 |         $this->adapter      = $adapter;
 | 
        
           |  |  | 65 |         $this->cache        = $cache;
 | 
        
           |  |  | 66 |         $this->logger       = $logger;
 | 
        
           |  |  | 67 |         $this->config       = $config;
 | 
        
           |  |  | 68 |   | 
        
           |  |  | 69 |   | 
        
           |  |  | 70 |     }
 | 
        
           |  |  | 71 |   | 
        
           |  |  | 72 |   | 
        
           |  |  | 73 |   | 
        
           |  |  | 74 |   | 
        
           |  |  | 75 |     public function indexAction()
 | 
        
           |  |  | 76 |     {
 | 
        
           |  |  | 77 |   | 
        
           | 7829 | nelberth | 78 |   | 
        
           | 7827 | nelberth | 79 |   | 
        
           | 7811 | nelberth | 80 |         $currentUserPlugin = $this->plugin('currentUserPlugin');
 | 
        
           |  |  | 81 |         $currentUser = $currentUserPlugin->getUser();
 | 
        
           |  |  | 82 |         $currentCompany = $currentUserPlugin->getCompany();
 | 
        
           | 7863 | nelberth | 83 |         $group_uuid= $this->params()->fromRoute('group_uuid');
 | 
        
           | 7811 | nelberth | 84 |   | 
        
           |  |  | 85 |         $request = $this->getRequest();
 | 
        
           | 8053 | nelberth | 86 |         $acl = $this->getEvent()->getViewModel()->getVariable('acl');
 | 
        
           |  |  | 87 |         $allowInvite = $acl->isAllowed($currentUser->usertype_id,'high-performance-teams/groups/view/members/invite');
 | 
        
           |  |  | 88 |   | 
        
           |  |  | 89 |         $allowDelete = $acl->isAllowed($currentUser->usertype_id,'high-performance-teams/groups/view/members/delete');
 | 
        
           | 7811 | nelberth | 90 |         if($request->isGet()) {
 | 
        
           |  |  | 91 |   | 
        
           |  |  | 92 |   | 
        
           |  |  | 93 |             $headers  = $request->getHeaders();
 | 
        
           |  |  | 94 |   | 
        
           |  |  | 95 |             $isJson = false;
 | 
        
           |  |  | 96 |             if($headers->has('Accept')) {
 | 
        
           |  |  | 97 |                 $accept = $headers->get('Accept');
 | 
        
           |  |  | 98 |   | 
        
           |  |  | 99 |                 $prioritized = $accept->getPrioritized();
 | 
        
           |  |  | 100 |   | 
        
           |  |  | 101 |                 foreach($prioritized as $key => $value) {
 | 
        
           |  |  | 102 |                     $raw = trim($value->getRaw());
 | 
        
           |  |  | 103 |   | 
        
           |  |  | 104 |                     if(!$isJson) {
 | 
        
           |  |  | 105 |                         $isJson = strpos($raw, 'json');
 | 
        
           |  |  | 106 |                     }
 | 
        
           |  |  | 107 |   | 
        
           |  |  | 108 |                 }
 | 
        
           |  |  | 109 |             }
 | 
        
           |  |  | 110 |   | 
        
           |  |  | 111 |             if($isJson) {
 | 
        
           |  |  | 112 |   | 
        
           | 7864 | nelberth | 113 |   | 
        
           | 7820 | nelberth | 114 |                 $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
 | 
        
           |  |  | 115 |                 $highPerformanceTeamsGroups = $highPerformanceTeamsGroupsMapper->fetchOneByUuid($group_uuid);
 | 
        
           |  |  | 116 |   | 
        
           |  |  | 117 |                 if (!$highPerformanceTeamsGroups) {
 | 
        
           |  |  | 118 |                     $data = [
 | 
        
           |  |  | 119 |                         'success' => false,
 | 
        
           |  |  | 120 |                         'data' => 'ERROR_RECORD_NOT_FOUND'
 | 
        
           |  |  | 121 |                     ];
 | 
        
           |  |  | 122 |   | 
        
           |  |  | 123 |                     return new JsonModel($data);
 | 
        
           |  |  | 124 |                 }
 | 
        
           | 7811 | nelberth | 125 |   | 
        
           | 7873 | nelberth | 126 |   | 
        
           | 7818 | nelberth | 127 |                 $highPerformanceTeamsGroupsMembersMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
 | 
        
           | 7891 | nelberth | 128 |                 $records = $highPerformanceTeamsGroupsMembersMapper->fetchAllInnerJoinUser($highPerformanceTeamsGroups->id,UserMapper::_TABLE);
 | 
        
           |  |  | 129 |                 $items=[];
 | 
        
           |  |  | 130 |   | 
        
           |  |  | 131 |                 foreach($records as $record)
 | 
        
           |  |  | 132 |                 {
 | 
        
           |  |  | 133 |   | 
        
           |  |  | 134 |                     $item = [
 | 
        
           |  |  | 135 |                         'first_name' => $record->first_name,
 | 
        
           |  |  | 136 |                         'last_name' => $record->last_name,
 | 
        
           | 7910 | nelberth | 137 |                         'image'=>  $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $record->uuid, 'filename' => $record->image]),
 | 
        
           | 8054 | nelberth | 138 |                         'link_delete' => $allowDelete ? $this->url()->fromRoute('high-performance-teams/groups/view/members/delete', ['group_uuid' => $highPerformanceTeamsGroups->uuid,'user_uuid'=>$record->uuid]) : '',
 | 
        
           | 7891 | nelberth | 139 |   | 
        
           | 8053 | nelberth | 140 |   | 
        
           | 7868 | nelberth | 141 |                     ];
 | 
        
           | 7891 | nelberth | 142 |   | 
        
           |  |  | 143 |                     array_push($items, $item);
 | 
        
           |  |  | 144 |   | 
        
           | 7868 | nelberth | 145 |                 }
 | 
        
           | 7891 | nelberth | 146 |   | 
        
           |  |  | 147 |   | 
        
           | 7811 | nelberth | 148 |   | 
        
           |  |  | 149 |                 return new JsonModel([
 | 
        
           |  |  | 150 |                     'success' => true,
 | 
        
           |  |  | 151 |                     'data' => [
 | 
        
           | 7818 | nelberth | 152 |                         'items' => $items
 | 
        
           | 7811 | nelberth | 153 |                     ]
 | 
        
           |  |  | 154 |                 ]);
 | 
        
           |  |  | 155 |   | 
        
           |  |  | 156 |             }
 | 
        
           | 7948 | nelberth | 157 |         }else if($request->isPost()){
 | 
        
           | 7963 | nelberth | 158 |   | 
        
           | 7948 | nelberth | 159 |             $headers  = $request->getHeaders();
 | 
        
           |  |  | 160 |   | 
        
           |  |  | 161 |             $isJson = false;
 | 
        
           |  |  | 162 |             if($headers->has('Accept')) {
 | 
        
           |  |  | 163 |                 $accept = $headers->get('Accept');
 | 
        
           |  |  | 164 |   | 
        
           |  |  | 165 |                 $prioritized = $accept->getPrioritized();
 | 
        
           |  |  | 166 |   | 
        
           |  |  | 167 |                 foreach($prioritized as $key => $value) {
 | 
        
           |  |  | 168 |                     $raw = trim($value->getRaw());
 | 
        
           |  |  | 169 |   | 
        
           |  |  | 170 |                     if(!$isJson) {
 | 
        
           |  |  | 171 |                         $isJson = strpos($raw, 'json');
 | 
        
           |  |  | 172 |                     }
 | 
        
           |  |  | 173 |   | 
        
           |  |  | 174 |                 }
 | 
        
           |  |  | 175 |             }
 | 
        
           |  |  | 176 |   | 
        
           |  |  | 177 |             if($isJson) {
 | 
        
           | 8053 | nelberth | 178 |   | 
        
           | 7973 | nelberth | 179 |                 $dataPost = $request->getPost()->toArray();
 | 
        
           |  |  | 180 |                 $search = $dataPost['search'];
 | 
        
           | 7996 | nelberth | 181 |                 $search = empty($search) ? '' : filter_var($search, FILTER_SANITIZE_STRING);
 | 
        
           | 7997 | nelberth | 182 |   | 
        
           | 7948 | nelberth | 183 |                 $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
 | 
        
           |  |  | 184 |                 $highPerformanceTeamsGroups = $highPerformanceTeamsGroupsMapper->fetchOneByUuid($group_uuid);
 | 
        
           |  |  | 185 |   | 
        
           |  |  | 186 |                 if (!$highPerformanceTeamsGroups) {
 | 
        
           |  |  | 187 |                     $data = [
 | 
        
           |  |  | 188 |                         'success' => false,
 | 
        
           |  |  | 189 |                         'data' => 'ERROR_RECORD_NOT_FOUND'
 | 
        
           |  |  | 190 |                     ];
 | 
        
           |  |  | 191 |   | 
        
           |  |  | 192 |                     return new JsonModel($data);
 | 
        
           |  |  | 193 |                 }
 | 
        
           |  |  | 194 |   | 
        
           | 7995 | nelberth | 195 |   | 
        
           | 7969 | nelberth | 196 |                 $userMapper = UserMapper::getInstance($this->adapter);
 | 
        
           | 7994 | nelberth | 197 |                 $records = $userMapper->fetchAllSuggestForInvitationByHptgId($highPerformanceTeamsGroups->id,$search);
 | 
        
           | 7948 | nelberth | 198 |                 $items=[];
 | 
        
           |  |  | 199 |   | 
        
           |  |  | 200 |                 foreach($records as $record)
 | 
        
           |  |  | 201 |                 {
 | 
        
           |  |  | 202 |   | 
        
           |  |  | 203 |                     $item = [
 | 
        
           |  |  | 204 |                         'first_name' => $record->first_name,
 | 
        
           |  |  | 205 |                         'last_name' => $record->last_name,
 | 
        
           |  |  | 206 |                         'image'=>  $this->url()->fromRoute('storage', ['type' => 'user', 'code' => $record->uuid, 'filename' => $record->image]),
 | 
        
           | 7997 | nelberth | 207 |                         'email'=> $record->email,
 | 
        
           | 8014 | nelberth | 208 |                         'link_invite'=> $allowInvite ? $this->url()->fromRoute('high-performance-teams/groups/view/members/invite', ['group_uuid' => $highPerformanceTeamsGroups->uuid,'user_uuid'=>$record->uuid]) : '',
 | 
        
           | 7948 | nelberth | 209 |   | 
        
           |  |  | 210 |                     ];
 | 
        
           |  |  | 211 |   | 
        
           |  |  | 212 |                     array_push($items, $item);
 | 
        
           |  |  | 213 |   | 
        
           |  |  | 214 |                 }
 | 
        
           |  |  | 215 |   | 
        
           |  |  | 216 |   | 
        
           |  |  | 217 |   | 
        
           |  |  | 218 |                 return new JsonModel([
 | 
        
           |  |  | 219 |                     'success' => true,
 | 
        
           |  |  | 220 |                     'data' => [
 | 
        
           |  |  | 221 |                         'items' => $items
 | 
        
           |  |  | 222 |                     ]
 | 
        
           |  |  | 223 |                 ]);
 | 
        
           |  |  | 224 |   | 
        
           |  |  | 225 |             }
 | 
        
           | 7811 | nelberth | 226 |         } else {
 | 
        
           |  |  | 227 |             return new JsonModel([
 | 
        
           |  |  | 228 |                 'success' => false,
 | 
        
           |  |  | 229 |                 'data' => 'ERROR_METHOD_NOT_ALLOWED'
 | 
        
           |  |  | 230 |             ]);
 | 
        
           |  |  | 231 |         }
 | 
        
           |  |  | 232 |     }
 | 
        
           |  |  | 233 |   | 
        
           | 8012 | nelberth | 234 |     public function inviteAction()
 | 
        
           | 7811 | nelberth | 235 |     {
 | 
        
           | 8020 | nelberth | 236 |   | 
        
           | 8017 | nelberth | 237 |   | 
        
           |  |  | 238 |   | 
        
           | 8020 | nelberth | 239 |         $currentUserPlugin = $this->plugin('currentUserPlugin');
 | 
        
           | 7811 | nelberth | 240 |         $currentUser = $currentUserPlugin->getUser();
 | 
        
           |  |  | 241 |         $currentCompany = $currentUserPlugin->getCompany();
 | 
        
           | 8028 | nelberth | 242 |   | 
        
           |  |  | 243 |         $user_uuid = $this->params()->fromRoute('user_uuid');
 | 
        
           | 8040 | nelberth | 244 |         $group_uuid = $this->params()->fromRoute('group_uuid');
 | 
        
           | 8029 | nelberth | 245 |   | 
        
           | 7811 | nelberth | 246 |         $request = $this->getRequest();
 | 
        
           |  |  | 247 |         if($request->isPost()) {
 | 
        
           | 8031 | nelberth | 248 |   | 
        
           | 8047 | nelberth | 249 |   | 
        
           | 8023 | nelberth | 250 |                 $userMapper = UserMapper::getInstance($this->adapter);
 | 
        
           |  |  | 251 |                 $user = $userMapper->fetchOneByUuid($user_uuid);
 | 
        
           |  |  | 252 |   | 
        
           | 8040 | nelberth | 253 |                 if(!$user) {
 | 
        
           |  |  | 254 |                     return new JsonModel([
 | 
        
           |  |  | 255 |                         'success' => false,
 | 
        
           |  |  | 256 |                         'data' => 'ERROR_RECORD_NOT_FOUND'
 | 
        
           |  |  | 257 |                     ]);
 | 
        
           |  |  | 258 |                 }
 | 
        
           |  |  | 259 |   | 
        
           | 8023 | nelberth | 260 |                 $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
 | 
        
           |  |  | 261 |                 $companyUser = $companyUserMapper->fetchOneByCompanyIdAndUserId($currentCompany->id,$user->id);
 | 
        
           | 8048 | nelberth | 262 |   | 
        
           |  |  | 263 |                 $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
 | 
        
           |  |  | 264 |                 $highPerformanceTeamsGroups = $highPerformanceTeamsGroupsMapper->fetchOneByUuid($group_uuid);
 | 
        
           | 8049 | nelberth | 265 |   | 
        
           | 8050 | nelberth | 266 |                 if(!$highPerformanceTeamsGroups) {
 | 
        
           | 8040 | nelberth | 267 |                     return new JsonModel([
 | 
        
           |  |  | 268 |                         'success' => false,
 | 
        
           |  |  | 269 |                         'data' => 'ERROR_RECORD_NOT_FOUND'
 | 
        
           |  |  | 270 |                     ]);
 | 
        
           |  |  | 271 |                 }
 | 
        
           | 8050 | nelberth | 272 |   | 
        
           | 8046 | nelberth | 273 |   | 
        
           | 8044 | nelberth | 274 |                 $highPerformanceTeamsGroupsMember = new HighPerformanceTeamsGroupsMembers();
 | 
        
           |  |  | 275 |                 $highPerformanceTeamsGroupsMember->group_id  = $highPerformanceTeamsGroups->id;
 | 
        
           |  |  | 276 |                 $highPerformanceTeamsGroupsMember->user_id = $user->id;
 | 
        
           |  |  | 277 |                 $highPerformanceTeamsGroupsMember->type = HighPerformanceTeamsGroupsMembers::TYPE_USER;
 | 
        
           | 8053 | nelberth | 278 |   | 
        
           | 8038 | nelberth | 279 |                 if($companyUser){
 | 
        
           | 8044 | nelberth | 280 |                     $highPerformanceTeamsGroupsMember->status = HighPerformanceTeamsGroupsMembers::STATUS_ADDED_BY_ADMIN;
 | 
        
           | 8061 | nelberth | 281 |                     $data = [
 | 
        
           |  |  | 282 |                         'success'   => true,
 | 
        
           |  |  | 283 |                         'data'   => 'LABEL_RECORD_ADDED'
 | 
        
           |  |  | 284 |                     ];
 | 
        
           | 8023 | nelberth | 285 |                 }else{
 | 
        
           | 8044 | nelberth | 286 |                     $highPerformanceTeamsGroupsMember->status = HighPerformanceTeamsGroupsMembers::STATUS_INVITED;
 | 
        
           | 8061 | nelberth | 287 |                     $data = [
 | 
        
           |  |  | 288 |                         'success'   => true,
 | 
        
           |  |  | 289 |                         'data'   => 'LABEL_USER_COMPANY_HAS_BEEN_REQUESTED'
 | 
        
           |  |  | 290 |                     ];
 | 
        
           | 8023 | nelberth | 291 |                 }
 | 
        
           | 8044 | nelberth | 292 |                 $highPerformanceTeamsGroupsMemberMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
 | 
        
           |  |  | 293 |                 $highPerformanceTeamsGroupsMemberMapper->insert($highPerformanceTeamsGroupsMember);
 | 
        
           | 8045 | nelberth | 294 |   | 
        
           | 8044 | nelberth | 295 |                if($highPerformanceTeamsGroupsMemberMapper) {
 | 
        
           | 7811 | nelberth | 296 |   | 
        
           | 8044 | nelberth | 297 |                     $this->logger->info('Se agrego el miembro de grupo  con el correo: ' . $user->email, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
 | 
        
           | 7811 | nelberth | 298 |   | 
        
           |  |  | 299 |                 } else {
 | 
        
           |  |  | 300 |                     $data = [
 | 
        
           |  |  | 301 |                         'success'   => false,
 | 
        
           | 7818 | nelberth | 302 |                         'data'      => $highPerformanceTeamsGroupsMembersMapper->getError()
 | 
        
           | 7811 | nelberth | 303 |                     ];
 | 
        
           |  |  | 304 |   | 
        
           |  |  | 305 |                 }
 | 
        
           |  |  | 306 |   | 
        
           |  |  | 307 |                 return new JsonModel($data);
 | 
        
           | 8044 | nelberth | 308 |   | 
        
           | 8030 | nelberth | 309 |   | 
        
           | 7811 | nelberth | 310 |   | 
        
           |  |  | 311 |         } else {
 | 
        
           |  |  | 312 |             $data = [
 | 
        
           |  |  | 313 |                 'success' => false,
 | 
        
           |  |  | 314 |                 'data' => 'ERROR_METHOD_NOT_ALLOWED'
 | 
        
           |  |  | 315 |             ];
 | 
        
           |  |  | 316 |   | 
        
           |  |  | 317 |             return new JsonModel($data);
 | 
        
           |  |  | 318 |         }
 | 
        
           |  |  | 319 |   | 
        
           |  |  | 320 |         return new JsonModel($data);
 | 
        
           |  |  | 321 |   | 
        
           |  |  | 322 |   | 
        
           |  |  | 323 |     }
 | 
        
           |  |  | 324 |   | 
        
           |  |  | 325 |   | 
        
           |  |  | 326 |   | 
        
           |  |  | 327 |      public function editAction(){
 | 
        
           |  |  | 328 |   | 
        
           |  |  | 329 |         $currentUserPlugin = $this->plugin('currentUserPlugin');
 | 
        
           |  |  | 330 |         $currentUser = $currentUserPlugin->getUser();
 | 
        
           |  |  | 331 |         $currentCompany = $currentUserPlugin->getCompany();
 | 
        
           |  |  | 332 |         $request = $this->getRequest();
 | 
        
           |  |  | 333 |         $uuid = $this->params()->fromRoute('id');
 | 
        
           |  |  | 334 |   | 
        
           |  |  | 335 |   | 
        
           |  |  | 336 |         if(!$uuid) {
 | 
        
           |  |  | 337 |             $data = [
 | 
        
           |  |  | 338 |                 'success'   => false,
 | 
        
           |  |  | 339 |                 'data'   => 'ERROR_INVALID_PARAMETER'
 | 
        
           |  |  | 340 |             ];
 | 
        
           |  |  | 341 |   | 
        
           |  |  | 342 |             return new JsonModel($data);
 | 
        
           |  |  | 343 |         }
 | 
        
           |  |  | 344 |   | 
        
           | 7818 | nelberth | 345 |         $highPerformanceTeamsGroupsMembersMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
 | 
        
           |  |  | 346 |         $group = $highPerformanceTeamsGroupsMembersMapper->fetchOneByUuid($uuid);
 | 
        
           | 7811 | nelberth | 347 |   | 
        
           |  |  | 348 |         if (!$group) {
 | 
        
           |  |  | 349 |             $data = [
 | 
        
           |  |  | 350 |                 'success' => false,
 | 
        
           |  |  | 351 |                 'data' => 'ERROR_RECORD_NOT_FOUND'
 | 
        
           |  |  | 352 |             ];
 | 
        
           |  |  | 353 |   | 
        
           |  |  | 354 |             return new JsonModel($data);
 | 
        
           |  |  | 355 |         }
 | 
        
           |  |  | 356 |   | 
        
           |  |  | 357 |         if ($group->company_id != $currentCompany->id) {
 | 
        
           |  |  | 358 |             return new JsonModel([
 | 
        
           |  |  | 359 |                 'success' => false,
 | 
        
           |  |  | 360 |                 'data' => 'ERROR_UNAUTHORIZED'
 | 
        
           |  |  | 361 |             ]);
 | 
        
           |  |  | 362 |         }
 | 
        
           |  |  | 363 |   | 
        
           |  |  | 364 |         if($request->isPost()) {
 | 
        
           | 7818 | nelberth | 365 |             $form = new  HighPerformanceTeamsGroupsMembersForm($this->adapter, $currentCompany->id);
 | 
        
           | 7811 | nelberth | 366 |             $dataPost = $request->getPost()->toArray();
 | 
        
           | 7818 | nelberth | 367 |             $dataPost['status'] =  isset($dataPost['status']) ? $dataPost['status'] : HighPerformanceTeamsGroupsMembers::STATUS_INACTIVE;
 | 
        
           | 7811 | nelberth | 368 |             $form->setData($dataPost);
 | 
        
           |  |  | 369 |   | 
        
           |  |  | 370 |             if($form->isValid()) {
 | 
        
           |  |  | 371 |                 $dataPost = (array) $form->getData();
 | 
        
           |  |  | 372 |   | 
        
           |  |  | 373 |                 $hydrator = new ObjectPropertyHydrator();
 | 
        
           |  |  | 374 |                 $hydrator->hydrate($dataPost, $group);
 | 
        
           | 7818 | nelberth | 375 |                 $result = $highPerformanceTeamsGroupsMembersMapper->update($group);
 | 
        
           | 7811 | nelberth | 376 |   | 
        
           |  |  | 377 |                 if($result) {
 | 
        
           |  |  | 378 |                     $this->logger->info('Se actualizo el grupo de alto rendimiento ' . $group->title, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
 | 
        
           |  |  | 379 |   | 
        
           |  |  | 380 |                     $data = [
 | 
        
           |  |  | 381 |                         'success' => true,
 | 
        
           |  |  | 382 |                         'data' => 'LABEL_RECORD_UPDATED'
 | 
        
           |  |  | 383 |                     ];
 | 
        
           |  |  | 384 |                 } else {
 | 
        
           |  |  | 385 |                     $data = [
 | 
        
           |  |  | 386 |                         'success'   => false,
 | 
        
           | 7818 | nelberth | 387 |                         'data'      => $highPerformanceTeamsGroupsMembersMapper->getError()
 | 
        
           | 7811 | nelberth | 388 |                     ];
 | 
        
           |  |  | 389 |                 }
 | 
        
           |  |  | 390 |   | 
        
           |  |  | 391 |                 return new JsonModel($data);
 | 
        
           |  |  | 392 |   | 
        
           |  |  | 393 |             } else {
 | 
        
           |  |  | 394 |                 $messages = [];
 | 
        
           |  |  | 395 |                 $form_messages = (array) $form->getMessages();
 | 
        
           |  |  | 396 |                 foreach($form_messages  as $fieldname => $field_messages)
 | 
        
           |  |  | 397 |                 {
 | 
        
           |  |  | 398 |                     $messages[$fieldname] = array_values($field_messages);
 | 
        
           |  |  | 399 |                 }
 | 
        
           |  |  | 400 |   | 
        
           |  |  | 401 |                 return new JsonModel([
 | 
        
           |  |  | 402 |                     'success'   => false,
 | 
        
           |  |  | 403 |                     'data'   => $messages
 | 
        
           |  |  | 404 |                 ]);
 | 
        
           |  |  | 405 |             }
 | 
        
           |  |  | 406 |         }else if ($request->isGet()) {
 | 
        
           |  |  | 407 |             $hydrator = new ObjectPropertyHydrator();
 | 
        
           |  |  | 408 |   | 
        
           |  |  | 409 |             $data = [
 | 
        
           |  |  | 410 |                 'success' => true,
 | 
        
           |  |  | 411 |                 'data' => $hydrator->extract($group)
 | 
        
           |  |  | 412 |             ];
 | 
        
           |  |  | 413 |   | 
        
           |  |  | 414 |             return new JsonModel($data);
 | 
        
           |  |  | 415 |         } else {
 | 
        
           |  |  | 416 |             $data = [
 | 
        
           |  |  | 417 |                 'success' => false,
 | 
        
           |  |  | 418 |                 'data' => 'ERROR_METHOD_NOT_ALLOWED'
 | 
        
           |  |  | 419 |             ];
 | 
        
           |  |  | 420 |   | 
        
           |  |  | 421 |             return new JsonModel($data);
 | 
        
           |  |  | 422 |         }
 | 
        
           |  |  | 423 |   | 
        
           |  |  | 424 |         return new JsonModel($data);
 | 
        
           |  |  | 425 |   | 
        
           |  |  | 426 |     }
 | 
        
           |  |  | 427 |   | 
        
           |  |  | 428 |   | 
        
           |  |  | 429 |   | 
        
           |  |  | 430 |   | 
        
           |  |  | 431 |     public function deleteAction(){
 | 
        
           | 8053 | nelberth | 432 |   | 
        
           |  |  | 433 |   | 
        
           |  |  | 434 |   | 
        
           | 7811 | nelberth | 435 |         $currentUserPlugin = $this->plugin('currentUserPlugin');
 | 
        
           |  |  | 436 |         $currentCompany = $currentUserPlugin->getCompany();
 | 
        
           |  |  | 437 |         $currentUser = $currentUserPlugin->getUser();
 | 
        
           |  |  | 438 |   | 
        
           |  |  | 439 |         $request = $this->getRequest();
 | 
        
           | 8053 | nelberth | 440 |         $group_uuid = $this->params()->fromRoute('group_uuid');
 | 
        
           | 8055 | nelberth | 441 |         $user_uuid = $this->params()->fromRoute('user_uuid');
 | 
        
           | 8057 | nelberth | 442 |         if (!$group_uuid) {
 | 
        
           |  |  | 443 |             $data = [
 | 
        
           |  |  | 444 |                 'success' => false,
 | 
        
           |  |  | 445 |                 'data' => 'ERROR_INVALID_PARAMETER'
 | 
        
           |  |  | 446 |             ];
 | 
        
           |  |  | 447 |   | 
        
           |  |  | 448 |             return new JsonModel($data);
 | 
        
           |  |  | 449 |         }
 | 
        
           |  |  | 450 |   | 
        
           |  |  | 451 |         if (!$user_uuid) {
 | 
        
           |  |  | 452 |             $data = [
 | 
        
           |  |  | 453 |                 'success' => false,
 | 
        
           |  |  | 454 |                 'data' => 'ERROR_INVALID_PARAMETER'
 | 
        
           |  |  | 455 |             ];
 | 
        
           |  |  | 456 |   | 
        
           |  |  | 457 |             return new JsonModel($data);
 | 
        
           |  |  | 458 |         }
 | 
        
           |  |  | 459 |   | 
        
           |  |  | 460 |         if ($request->isPost()) {
 | 
        
           |  |  | 461 |   | 
        
           |  |  | 462 |   | 
        
           |  |  | 463 |   | 
        
           | 8058 | nelberth | 464 |   | 
        
           | 8055 | nelberth | 465 |             $userMapper = UserMapper::getInstance($this->adapter);
 | 
        
           |  |  | 466 |             $user = $userMapper->fetchOneByUuid($user_uuid);
 | 
        
           | 7811 | nelberth | 467 |   | 
        
           | 8055 | nelberth | 468 |             if (!$user) {
 | 
        
           |  |  | 469 |                 $data = [
 | 
        
           |  |  | 470 |                     'success' => false,
 | 
        
           |  |  | 471 |                     'data' => 'ERROR_RECORD_NOT_FOUND'
 | 
        
           |  |  | 472 |                 ];
 | 
        
           | 7811 | nelberth | 473 |   | 
        
           | 8055 | nelberth | 474 |                 return new JsonModel($data);
 | 
        
           |  |  | 475 |             }
 | 
        
           | 8059 | nelberth | 476 |   | 
        
           | 8055 | nelberth | 477 |             $highPerformanceTeamsGroupsMapper = HighPerformanceTeamsGroupsMapper::getInstance($this->adapter);
 | 
        
           |  |  | 478 |             $highPerformanceTeamsGroups = $highPerformanceTeamsGroupsMapper->fetchOneByUuid($group_uuid);
 | 
        
           |  |  | 479 |   | 
        
           | 8059 | nelberth | 480 |             if (!$highPerformanceTeamsGroups) {
 | 
        
           | 8055 | nelberth | 481 |                 $data = [
 | 
        
           |  |  | 482 |                     'success' => false,
 | 
        
           |  |  | 483 |                     'data' => 'ERROR_RECORD_NOT_FOUND'
 | 
        
           |  |  | 484 |                 ];
 | 
        
           |  |  | 485 |   | 
        
           |  |  | 486 |                 return new JsonModel($data);
 | 
        
           |  |  | 487 |             }
 | 
        
           | 8059 | nelberth | 488 |   | 
        
           | 8055 | nelberth | 489 |             $highPerformanceTeamsGroupsMembersMapper = HighPerformanceTeamsGroupsMembersMapper::getInstance($this->adapter);
 | 
        
           |  |  | 490 |             $highPerformanceTeamsGroupsMembers = $highPerformanceTeamsGroupsMembersMapper->fetchOneByGroupIdAndUserId($highPerformanceTeamsGroups->id,$user->id);
 | 
        
           |  |  | 491 |             $result = $highPerformanceTeamsGroupsMembersMapper->delete($highPerformanceTeamsGroupsMembers->id);
 | 
        
           | 8056 | nelberth | 492 |   | 
        
           | 7811 | nelberth | 493 |             if ($result) {
 | 
        
           | 8055 | nelberth | 494 |                 $this->logger->info('Se borro el grupo el miembro con el email de  ' . $user->email, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
 | 
        
           | 7811 | nelberth | 495 |   | 
        
           |  |  | 496 |                 $data = [
 | 
        
           |  |  | 497 |                     'success' => true,
 | 
        
           |  |  | 498 |                     'data' => 'LABEL_RECORD_DELETED'
 | 
        
           |  |  | 499 |                 ];
 | 
        
           |  |  | 500 |             } else {
 | 
        
           |  |  | 501 |   | 
        
           |  |  | 502 |                 $data = [
 | 
        
           |  |  | 503 |                     'success' => false,
 | 
        
           | 7818 | nelberth | 504 |                     'data' => $highPerformanceTeamsGroupsMembersMapper->getError()
 | 
        
           | 7811 | nelberth | 505 |                 ];
 | 
        
           |  |  | 506 |   | 
        
           |  |  | 507 |                 return new JsonModel($data);
 | 
        
           |  |  | 508 |             }
 | 
        
           |  |  | 509 |         } else {
 | 
        
           |  |  | 510 |             $data = [
 | 
        
           |  |  | 511 |                 'success' => false,
 | 
        
           |  |  | 512 |                 'data' => 'ERROR_METHOD_NOT_ALLOWED'
 | 
        
           |  |  | 513 |             ];
 | 
        
           |  |  | 514 |   | 
        
           |  |  | 515 |             return new JsonModel($data);
 | 
        
           |  |  | 516 |         }
 | 
        
           |  |  | 517 |   | 
        
           |  |  | 518 |         return new JsonModel($data);
 | 
        
           |  |  | 519 |     }
 | 
        
           |  |  | 520 |   | 
        
           |  |  | 521 |   | 
        
           |  |  | 522 |   | 
        
           |  |  | 523 |   | 
        
           |  |  | 524 | }
 |