Rev 780 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?phpdeclare(strict_types=1);namespace LeadersLinked\Controller;use Laminas\Db\Adapter\AdapterInterface;use Laminas\Mvc\Controller\AbstractActionController;use Laminas\Log\LoggerInterface;use Laminas\View\Model\ViewModel;use Laminas\View\Model\JsonModel;use LeadersLinked\Library\Functions;use LeadersLinked\Hydrator\ObjectPropertyHydrator;use LeadersLinked\Form\MyGroups\CreateForm;use LeadersLinked\Model\Group;use LeadersLinked\Mapper\GroupMapper;use LeadersLinked\Form\MyGroup\AccessibilityForm;use LeadersLinked\Form\MyGroup\CoverForm;use LeadersLinked\Form\MyGroup\ExtendedForm;use LeadersLinked\Form\MyGroup\GroupTypeForm;use LeadersLinked\Form\MyGroup\ImageForm;use LeadersLinked\Form\MyGroup\IndustryForm;use LeadersLinked\Form\MyGroup\PrivacyForm;use LeadersLinked\Form\MyGroup\WebsiteForm;use LeadersLinked\Mapper\IndustryMapper;use LeadersLinked\Mapper\GroupTypeMapper;use LeadersLinked\Mapper\GroupMemberMapper;use LeadersLinked\Mapper\QueryMapper;use LeadersLinked\Model\GroupMember;use LeadersLinked\Library\Storage;class MyGroupsController extends AbstractActionController{/**** @var \Laminas\Db\Adapter\AdapterInterface*/private $adapter;/**** @var \LeadersLinked\Cache\CacheInterface*/private $cache;/**** @var \Laminas\Log\LoggerInterface*/private $logger;/**** @var array*/private $config;/**** @var \Laminas\Mvc\I18n\Translator*/private $translator;/**** @param \Laminas\Db\Adapter\AdapterInterface $adapter* @param \LeadersLinked\Cache\CacheInterface $cache* @param \Laminas\Log\LoggerInterface LoggerInterface $logger* @param array $config* @param \Laminas\Mvc\I18n\Translator $translator*/public function __construct($adapter, $cache, $logger, $config, $translator){$this->adapter = $adapter;$this->cache = $cache;$this->logger = $logger;$this->config = $config;$this->translator = $translator;}/**** Generación del listado de perfiles* {@inheritDoc}* @see \Laminas\Mvc\Controller\AbstractActionController::indexAction()*/public function indexAction(){$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$request = $this->getRequest();if ($request->isGet()) {$search = Functions::sanitizeFilterString($this->params()->fromQuery('search', ''));$acl = $this->getEvent()->getViewModel()->getVariable('acl');$allowView = $acl->isAllowed($currentUser->usertype_id, 'group/view');$allowEdit = $acl->isAllowed($currentUser->usertype_id, 'group/my-groups/edit');$allowDelete = $acl->isAllowed($currentUser->usertype_id, 'group/my-groups/delete');$queryMapper = QueryMapper::getInstance($this->adapter);$select = $queryMapper->getSql()->select(GroupMapper::_TABLE);$select->columns(['id', 'uuid', 'name', 'privacy', 'image', 'status', 'cover']);$select->where->equalTo('status', Group::STATUS_ACTIVE);$select->where->equalTo('network_id', $currentUser->network_id);if ($search) {$select->where->like('name', '%' . $search . '%');}$select->where->equalTo('user_id', $currentUser->id);$select->order('name ASC');$records = $queryMapper->fetchAll($select);$values = [Group::PRIVACY_IS_PRIVATE => 'LABEL_PRIVATE',Group::PRIVACY_IS_PUBLIC => 'LABEL_PUBLIC'];$storage = Storage::getInstance($this->config, $this->adapter);$items = [];foreach ($records as $record) {$item = ['name' => $record['name'],'privacy' => $values[$record['privacy']],'image' => $storage->getGroupImageForCodeAndFilename($record['uuid'], $record['image']),'cover' => $storage->getGroupImageForCodeAndFilename($record['uuid'], $record['cover']),'link_view' => $allowView ? $this->url()->fromRoute('group/view', ['id' => $record['uuid']]) : '','link_edit' => $allowEdit ? $this->url()->fromRoute('group/my-groups/edit', ['id' => $record['uuid']]) : '','link_delete' => $allowDelete ? $this->url()->fromRoute('group/my-groups/delete', ['id' => $record['uuid']]) : '',];array_push($items, $item);}$response = ['success' => true,'data' => $items];return new JsonModel($response);} else {return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);}}/**** Agregar un nuevo perfil* @return \Laminas\View\Model\JsonModel*/public function addAction(){$request = $this->getRequest();if ($request->isPost()) {$form = new CreateForm($this->adapter);$dataPost = $request->getPost()->toArray();$form->setData($dataPost);if ($form->isValid()) {$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$dataPost = (array) $form->getData();$industryMapper = IndustryMapper::getInstance($this->adapter);$industry = $industryMapper->fetchOneByUuid($dataPost['industry_id']);$groupTypeMapper = GroupTypeMapper::getInstance($this->adapter);$groupType = $groupTypeMapper->fetchOneByUuid($dataPost['type_id']);$group = new Group();$group->network_id = $currentUser->network_id;$group->name = $dataPost['name'];$group->industry_id = $industry->id;$group->type_id = $groupType->id;$group->user_id = $currentUser->id;$groupMapper = GroupMapper::getInstance($this->adapter);$result = $groupMapper->insert($group);if ($result) {$groupMember = new GroupMember();$groupMember->group_id = $group->id;$groupMember->user_id = $group->user_id;$groupMember->status = GroupMember::STATUS_ACCEPTED;$groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);$groupMemberMapper->insert($groupMember);$this->logger->info('Se agrego el grupo : ' . $group->name, ['user_id' => $group->user_id, 'ip' => Functions::getUserIP()]);$data = ['success' => true,'data' => 'LABEL_RECORD_ADDED'];} else {$data = ['success' => false,'data' => $group->getError()];}return new JsonModel($data);} else {$messages = [];$form_messages = (array) $form->getMessages();foreach ($form_messages as $fieldname => $field_messages) {$messages[$fieldname] = array_values($field_messages);}return new JsonModel(['success' => false,'data' => $messages]);}} else {$data = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];return new JsonModel($data);}return new JsonModel($data);}/**** Borrar un perfil excepto el público* @return \Laminas\View\Model\JsonModel*/public function deleteAction(){$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$request = $this->getRequest();$id = $this->params()->fromRoute('id');if (!$id) {$data = ['success' => false,'data' => 'ERROR_INVALID_PARAMETER'];return new JsonModel($data);}$groupMapper = GroupMapper::getInstance($this->adapter);$group = $groupMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);if (!$group) {$data = ['success' => false,'data' => 'ERROR_RECORD_NOT_FOUND'];return new JsonModel($data);}if ($currentUser->id != $group->user_id) {$response = ['success' => false,'data' => 'ERROR_UNAUTHORIZED'];return new JsonModel($response);}if ($request->isPost()) {$result = $groupMapper->delete($group);if ($result) {$this->logger->info('Se borro el grupo : ' . $group->name, ['user_id' => $group->user_id, 'ip' => Functions::getUserIP()]);$data = ['success' => true,'data' => 'LABEL_RECORD_DELETED'];} else {$data = ['success' => false,'data' => $groupMapper->getError()];return new JsonModel($data);}} else {$data = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];return new JsonModel($data);}return new JsonModel($data);}/*** Presenta el perfil con las opciónes de edición de cada sección* @return \Laminas\Http\Response|\Laminas\View\Model\ViewModel|\Laminas\View\Model\JsonModel*/public function editAction(){$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$flashMessenger = $this->plugin('FlashMessenger');$request = $this->getRequest();$id = $this->params()->fromRoute('id');if (!$id) {$flashMessenger->addErrorMessage('ERROR_INVALID_PARAMETER');return $this->redirect()->toRoute('dashboard');}$groupMapper = GroupMapper::getInstance($this->adapter);$group = $groupMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);if (!$group) {$flashMessenger->addErrorMessage('ERROR_RECORD_NOT_FOUND');return $this->redirect()->toRoute('dashboard');}if ($currentUser->id != $group->user_id) {$flashMessenger->addErrorMessage('ERROR_UNAUTHORIZED');return $this->redirect()->toRoute('dashboard');}if ($request->isGet()) {$accessibilities = [Group::ACCESSIBILITY_AUTO_JOIN => 'LABEL_AUTO_JOIN',Group::ACCESSIBILITY_REQUEST_TO_JOIN => 'LABEL_REQUEST_TO_JOIN',Group::ACCESSIBILITY_ADMIN_WILL_ADD => 'LABEL_ADMIN_WILL_ADD',];$accessibility = $accessibilities[$group->accessibility];$privacies = [Group::PRIVACY_IS_PRIVATE => 'LABEL_PRIVATE',Group::PRIVACY_IS_PUBLIC => 'LABEL_PUBLIC'];$privacy = $privacies[$group->privacy];$industryMapper = IndustryMapper::getInstance($this->adapter);$record = $industryMapper->fetchOne($group->industry_id);$industry = $record->name;$industries = [];$records = $industryMapper->fetchAllActive();foreach ($records as $record) {$industries[$record->uuid] = $record->name;}$groupTypeMapper = GroupTypeMapper::getInstance($this->adapter);$record = $groupTypeMapper->fetchOne($group->type_id);$recordUuid = $record->uuid;$group_type = $record->name;$types = [];$records = $groupTypeMapper->fetchAllActive();foreach ($records as $record) {$types[$record->uuid] = $record->name;}$groupMemberMapper = GroupMemberMapper::getInstance($this->adapter);$total_ = $groupMemberMapper->fetchTotalByGroupId($group->id);$image_size_cover = $this->config['leaderslinked.image_sizes.group_cover_upload'];$image_size_profile = $this->config['leaderslinked.image_sizes.group_image_upload'];$storage = Storage::getInstance($this->config, $this->adapter);return new JsonModel(['total_' => $total_,'accessibility' => $accessibility,'privacy' => $privacy,'industry' => $industry,'group_id' => $group->id,'group_type' => $group_type,'group_uuid' => $group->uuid,'name' => trim($group->name),'image' => $storage->getGroupImage($group),'cover' => $storage->getGroupCover($group),'overview' => $group->description,'website' => $group->website,'image_size_cover' => $image_size_cover,'image_size_profile' => $image_size_profile,'industries' => $industries,'types' => $types,'privacies' => $privacies,'accessibilities' => $accessibilities,/* 'link_members' => $this->url()->fromRoute('group/my-groups/members', ['id' => $record['uuid']]),'link_extended' => $this->url()->fromRoute('group/my-groups/extended', ['id' => $recordUuid]),'link_image' => $this->url()->fromRoute('group/my-groups/image', ['id' => $recordUuid]),'link_cover' => $this->url()->fromRoute('group/my-groups/cover', ['id' => $recordUuid]),'link_privacy' => $this->url()->fromRoute('group/my-groups/privacy', ['id' => $recordUuid]),'link_website' => $this->url()->fromRoute('group/my-groups/website', ['id' => $recordUuid]),'link_industry' => $this->url()->fromRoute('group/my-groups/industry', ['id' => $recordUuid]),'link_accessibility' => $this->url()->fromRoute('group/my-groups/accessibility', ['id' => $recordUuid]),'link_type' => $this->url()->fromRoute('group/my-groups/type', ['id' => $recordUuid]),'link_status' => $this->url()->fromRoute('group/my-groups/status', ['id' => $recordUuid]), */]);} else {$data = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];return new JsonModel($data);}return new JsonModel($data);}/*** Actualización de la descripción y cualquier otro campo extendido del perfil a futuro* @return \Laminas\View\Model\JsonModel*/public function extendedAction(){$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$user_group_id = $this->params()->fromRoute('id');$groupMapper = GroupMapper::getInstance($this->adapter);$group = $groupMapper->fetchOneByUuidAndNetworkId($user_group_id, $currentUser->network_id);if (!$group) {$response = ['success' => false,'data' => 'ERROR_INVALID_PARAMETER'];return new JsonModel($response);}if ($currentUser->id != $group->user_id) {$response = ['success' => false,'data' => 'ERROR_UNAUTHORIZED'];return new JsonModel($response);}$request = $this->getRequest();if ($request->isGet()) {$data = ['success' => true,'data' => $group->description,];return new JsonModel($data);} else if ($request->isPost()) {$form = new ExtendedForm();$dataPost = $request->getPost()->toArray();$form->setData($dataPost);if ($form->isValid()) {$dataPost = (array) $form->getData();$hydrator = new ObjectPropertyHydrator();$hydrator->hydrate($dataPost, $group);$groupMapper->updateExtended($group);$this->logger->info('Se actualizo las descripción del grupo : ' . $group->name, ['user_id' => $group->user_id, 'ip' => Functions::getUserIP()]);return new JsonModel(['success' => true,'data' => $group->description,]);} else {$messages = [];$form_messages = (array) $form->getMessages();foreach ($form_messages as $fieldname => $field_messages) {$messages[$fieldname] = array_values($field_messages);}return new JsonModel(['success' => false,'data' => $messages]);}}$data = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];return new JsonModel($data);}public function imageAction(){// Obtener el usuario actual$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();// Obtener el id del grupo$user_group_id = $this->params()->fromRoute('id');// Instanciar el mapper de grupos$groupMapper = GroupMapper::getInstance($this->adapter);// Obtener el grupo por el id del grupo y el id de la red del usuario actual$group = $groupMapper->fetchOneByUuidAndNetworkId($user_group_id, $currentUser->network_id);if (!$group) {return new JsonModel(['success' => false,'data' => 'ERROR_INVALID_PARAMETER']);}if ($currentUser->id != $group->user_id) {return new JsonModel(['success' => false,'data' => 'ERROR_UNAUTHORIZED']);}// Obtener el request$request = $this->getRequest();// Si el request es postif (!$request->isPost()) {return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);}// Obtener el operation$operation = $this->params()->fromRoute('operation');// Obtener el path de los archivos de los grupos$storage = Storage::getInstance($this->config, $this->adapter);$target_path = $storage->getPathGroup();if ($operation == 'delete') {// Si el grupo no tiene imageif (!$group->image) {return new JsonModel(['success' => false,'data' => 'ERROR_RECORD_NOT_FOUND']);}// Si no se puede borrar el archivoif (!$storage->deleteFile($target_path, $group->uuid, $group->image)) {return new JsonModel(['success' => false,'data' => 'ERROR_THERE_WAS_AN_ERROR']);}// Actualizar el grupo$group->image = '';if (!$groupMapper->updateImage($group)) {return new JsonModel(['success' => false,'data' => 'ERROR_THERE_WAS_AN_ERROR']);}// Si se borro la imagen$this->logger->info('Se borro el image del grupo : ' . $group->name, ['user_id' => $group->user_id, 'ip' => Functions::getUserIP()]);}if ($operation == 'upload') {$form = new ImageForm($this->config);$data = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());$form->setData($data);if (!$form->isValid()) {$messages = [];$form_messages = (array) $form->getMessages();foreach ($form_messages as $fieldname => $field_messages) {$messages[$fieldname] = array_values($field_messages);}return new JsonModel(['success' => false,'data' => $messages]);}// Obtener el tamaño de la imagenlist($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.group_image_size']);// Setear los archivos$storage->setFiles($request->getFiles()->toArray());// Setear el archivo actualif (!$storage->setCurrentFilename('image')) {return new JsonModel(['success' => false,'data' => 'ERROR_UPLOAD_FILE']);}// Obtener la información del archivo$source_filename = $storage->getTmpFilename();$filename = $storage->getFilename();$target_filename = $storage->composePathToFilename(Storage::TYPE_GROUP, $group->uuid, $filename);$this->logger->info('Source filename: ' . $source_filename . ' - Filename: ' . $filename . ' - Target filename: ' . $target_filename);if (!$storage->uploadImageWithOutChangeSize($source_filename, $target_filename)) {$this->logger->err('Error al subir la imagen del grupo: ' . $group->name, ['user_id' => $group->user_id, 'ip' => Functions::getUserIP()]);return new JsonModel(['success' => false,'data' => 'ERROR_THERE_WAS_AN_ERROR']);}// Si el grupo tiene image, se borraif ($group->image) {$storage->deleteFile($target_path, $group->uuid, $group->image);}// Actualizar el grupo$group->image = $filename;if (!$groupMapper->updateImage($group)) {$this->logger->err('Error al actualizar el image del grupo: ' . $group->name, ['user_id' => $group->user_id, 'ip' => Functions::getUserIP()]);return new JsonModel(['success' => false,'data' => $groupMapper->getError()]);}$this->logger->info('Se actualizo el image del grupo : ' . $group->name, ['user_id' => $group->user_id, 'ip' => Functions::getUserIP()]);return new JsonModel(['success' => true,'data' => $storage->getGroupImage($group),]);}}public function coverAction(){$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$user_group_id = $this->params()->fromRoute('id');$groupMapper = GroupMapper::getInstance($this->adapter);$group = $groupMapper->fetchOneByUuidAndNetworkId($user_group_id, $currentUser->network_id);if (!$group) {$response = ['success' => false,'data' => 'ERROR_INVALID_PARAMETER'];return new JsonModel($response);}if ($currentUser->id != $group->user_id) {$response = ['success' => false,'data' => 'ERROR_UNAUTHORIZED'];return new JsonModel($response);}$request = $this->getRequest();if ($request->isPost()) {$operation = $this->params()->fromRoute('operation');$storage = Storage::getInstance($this->config, $this->adapter);$target_path = $storage->getPathGroup();if ($operation == 'delete') {if ($group->cover) {if (!$storage->deleteFile($target_path, $group->uuid, $group->cover)) {return new JsonModel(['success' => false,'data' => 'ERROR_THERE_WAS_AN_ERROR']);}}$this->logger->info('Se borro el cover del grupo : ' . $group->name, ['user_id' => $group->user_id, 'ip' => Functions::getUserIP()]);$group->cover = '';if (!$groupMapper->updateCover($group)) {return new JsonModel(['success' => false,'data' => 'ERROR_THERE_WAS_AN_ERROR']);}} else {$form = new CoverForm($this->config);$data = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());$form->setData($data);if ($form->isValid()) {$storage->setFiles($request->getFiles()->toArray());if (!$storage->setCurrentFilename('cover')) {return new JsonModel(['success' => false,'data' => 'ERROR_UPLOAD_FILE']);}list($target_width, $target_height) = explode('x', $this->config['leaderslinked.image_sizes.group_cover_size']);$source_filename = $storage->getTmpFilename();$filename = 'group-cover-' . uniqid() . '.png';$target_filename = $storage->composePathToFilename(Storage::TYPE_GROUP, $group->uuid, $filename);if ($storage->uploadImageResize($source_filename, $target_filename, $target_width, $target_height)) {if ($group->cover) {if (!$storage->deleteFile($target_path, $group->uuid, $group->cover)) {return new JsonModel(['success' => false,'data' => 'ERROR_THERE_WAS_AN_ERROR']);}}$group->cover = $filename;if (!$groupMapper->updateCover($group)) {return new JsonModel(['success' => false,'data' => 'ERROR_THERE_WAS_AN_ERROR']);}} else {return new JsonModel(['success' => false,'data' => 'ERROR_THERE_WAS_AN_ERROR']);}$this->logger->info('Se actualizo el cover del grupo : ' . $group->name, ['user_id' => $group->user_id, 'ip' => Functions::getUserIP()]);} else {$messages = [];$form_messages = (array) $form->getMessages();foreach ($form_messages as $fieldname => $field_messages) {$messages[$fieldname] = array_values($field_messages);}return new JsonModel(['success' => false,'data' => $messages]);}}$storage = Storage::getInstance($this->config, $this->adapter);return new JsonModel(['success' => true,'data' => $storage->getGroupCover($group),]);}$data = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];return new JsonModel($data);}public function industryAction(){$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$id = $this->params()->fromRoute('id');if (!$id) {$response = ['success' => false,'data' => 'ERROR_INVALID_PARAMETER'];return new JsonModel($response);}$groupMapper = GroupMapper::getInstance($this->adapter);$group = $groupMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);if (!$group) {$response = ['success' => false,'data' => 'ERROR_RECORD_NOT_FOUND'];return new JsonModel($response);}if ($currentUser->id != $group->user_id) {$response = ['success' => false,'data' => 'ERROR_UNAUTHORIZED'];return new JsonModel($response);}$request = $this->getRequest();if ($request->isGet()) {$industryMapper = IndustryMapper::getInstance($this->adapter);$industry = $industryMapper->fetchOne($group->industry_id);$data = ['success' => true,'data' => $industry->uuid,];return new JsonModel($data);} else if ($request->isPost()) {$form = new IndustryForm($this->adapter);$dataPost = $request->getPost()->toArray();$form->setData($dataPost);if ($form->isValid()) {$dataPost = (array) $form->getData();$industryMapper = IndustryMapper::getInstance($this->adapter);$industry = $industryMapper->fetchOneByUuid($dataPost['industry_id']);$group->industry_id = $industry->id;$groupMapper->updateIndustry($group);$this->logger->info('Se actualizo la industria del grupo : ' . $group->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);return new JsonModel(['success' => true,'data' => $industry->name,]);} else {$messages = [];$form_messages = (array) $form->getMessages();foreach ($form_messages as $fieldname => $field_messages) {$messages[$fieldname] = array_values($field_messages);}return new JsonModel(['success' => false,'data' => $messages]);}}$data = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];return new JsonModel($data);}public function websiteAction(){$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$id = $this->params()->fromRoute('id');if (!$id) {$response = ['success' => false,'data' => 'ERROR_INVALID_PARAMETER'];return new JsonModel($response);}$groupMapper = GroupMapper::getInstance($this->adapter);$group = $groupMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);if (!$group) {$response = ['success' => false,'data' => 'ERROR_RECORD_NOT_FOUND'];return new JsonModel($response);}if ($currentUser->id != $group->user_id) {$response = ['success' => false,'data' => 'ERROR_UNAUTHORIZED'];return new JsonModel($response);}$request = $this->getRequest();if ($request->isGet()) {$data = ['success' => true,'data' => $group->website,];return new JsonModel($data);} else if ($request->isPost()) {$form = new WebsiteForm();$dataPost = $request->getPost()->toArray();$form->setData($dataPost);if ($form->isValid()) {$dataPost = (array) $form->getData();$hydrator = new ObjectPropertyHydrator();$hydrator->hydrate($dataPost, $group);$groupMapper->updateWebsite($group);$this->logger->info('Se actualizo el website de la empresa ' . $group->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);return new JsonModel(['success' => true,'data' => $group->website,]);} else {$messages = [];$form_messages = (array) $form->getMessages();foreach ($form_messages as $fieldname => $field_messages) {$messages[$fieldname] = array_values($field_messages);}return new JsonModel(['success' => false,'data' => $messages]);}}$data = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];return new JsonModel($data);}public function accessibilityAction(){$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$id = $this->params()->fromRoute('id');if (!$id) {$response = ['success' => false,'data' => 'ERROR_INVALID_PARAMETER'];return new JsonModel($response);}$groupMapper = GroupMapper::getInstance($this->adapter);$group = $groupMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);if (!$group) {$response = ['success' => false,'data' => 'ERROR_RECORD_NOT_FOUND'];return new JsonModel($response);}if ($currentUser->id != $group->user_id) {$response = ['success' => false,'data' => 'ERROR_UNAUTHORIZED'];return new JsonModel($response);}$request = $this->getRequest();if ($request->isGet()) {$data = ['success' => true,'data' => $group->accessibility,];return new JsonModel($data);} else if ($request->isPost()) {$form = new AccessibilityForm();$dataPost = $request->getPost()->toArray();$form->setData($dataPost);if ($form->isValid()) {$dataPost = (array) $form->getData();$hydrator = new ObjectPropertyHydrator();$hydrator->hydrate($dataPost, $group);$groupMapper->updateAccessibility($group);$values = [Group::ACCESSIBILITY_AUTO_JOIN => 'LABEL_AUTO_JOIN',Group::ACCESSIBILITY_REQUEST_TO_JOIN => 'LABEL_REQUEST_TO_JOIN',Group::ACCESSIBILITY_ADMIN_WILL_ADD => 'LABEL_ADMIN_WILL_ADD',];$this->logger->info('Se actualizo el accesibilidad de la empresa ' . $group->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);return new JsonModel(['success' => true,'data' => $values[$group->accessibility]]);} else {$messages = [];$form_messages = (array) $form->getMessages();foreach ($form_messages as $fieldname => $field_messages) {$messages[$fieldname] = array_values($field_messages);}return new JsonModel(['success' => false,'data' => $messages]);}}$data = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];return new JsonModel($data);}public function privacyAction(){$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$id = $this->params()->fromRoute('id');if (!$id) {$response = ['success' => false,'data' => 'ERROR_INVALID_PARAMETER'];return new JsonModel($response);}$groupMapper = GroupMapper::getInstance($this->adapter);$group = $groupMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);if (!$group) {$response = ['success' => false,'data' => 'ERROR_RECORD_NOT_FOUND'];return new JsonModel($response);}if ($currentUser->id != $group->user_id) {$response = ['success' => false,'data' => 'ERROR_UNAUTHORIZED'];return new JsonModel($response);}$request = $this->getRequest();if ($request->isGet()) {$data = ['success' => true,'data' => $group->privacy,];return new JsonModel($data);} else if ($request->isPost()) {$form = new PrivacyForm();$dataPost = $request->getPost()->toArray();$form->setData($dataPost);if ($form->isValid()) {$dataPost = (array) $form->getData();$hydrator = new ObjectPropertyHydrator();$hydrator->hydrate($dataPost, $group);$groupMapper->updatePrivacy($group);$values = [Group::PRIVACY_IS_PRIVATE => 'LABEL_PRIVATE',Group::PRIVACY_IS_PUBLIC => 'LABEL_PUBLIC'];$this->logger->info('Se actualizo la privacidad de la empresa ' . $group->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);return new JsonModel(['success' => true,'data' => $values[$group->privacy]]);} else {$messages = [];$form_messages = (array) $form->getMessages();foreach ($form_messages as $fieldname => $field_messages) {$messages[$fieldname] = array_values($field_messages);}return new JsonModel(['success' => false,'data' => $messages]);}}$data = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];return new JsonModel($data);}public function typeAction(){$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$id = $this->params()->fromRoute('id');if (!$id) {$response = ['success' => false,'data' => 'ERROR_INVALID_PARAMETER'];return new JsonModel($response);}$groupMapper = GroupMapper::getInstance($this->adapter);$group = $groupMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);if (!$group) {$response = ['success' => false,'data' => 'ERROR_RECORD_NOT_FOUND'];return new JsonModel($response);}if ($currentUser->id != $group->user_id) {$response = ['success' => false,'data' => 'ERROR_UNAUTHORIZED'];return new JsonModel($response);}$request = $this->getRequest();if ($request->isGet()) {$groupTypeMapper = GroupTypeMapper::getInstance($this->adapter);$groupType = $groupTypeMapper->fetchOne($group->type_id);$data = ['success' => true,'data' => $groupType->uuid,];return new JsonModel($data);} else if ($request->isPost()) {$form = new GroupTypeForm($this->adapter);$dataPost = $request->getPost()->toArray();$form->setData($dataPost);if ($form->isValid()) {$dataPost = (array) $form->getData();$groupTypeMapper = GroupTypeMapper::getInstance($this->adapter);$groupType = $groupTypeMapper->fetchOneByUuid($dataPost['type_id']);$group->type_id = $groupType->id;$groupMapper->updateGroupType($group);$this->logger->info('Se actualizo el tipo del grupo : ' . $group->name, ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);$groupTypeMapper = GroupTypeMapper::getInstance($this->adapter);$groupType = $groupTypeMapper->fetchOne($group->type_id);return new JsonModel(['success' => true,'data' => $groupType->name,]);} else {$messages = [];$form_messages = (array) $form->getMessages();foreach ($form_messages as $fieldname => $field_messages) {$messages[$fieldname] = array_values($field_messages);}return new JsonModel(['success' => false,'data' => $messages]);}}$data = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];return new JsonModel($data);}}