Rev 3674 | Rev 6849 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?php/**** Controlador: Mis Perfiles**/declare(strict_types=1);namespace LeadersLinked\Controller;use Laminas\Db\Adapter\AdapterInterface;use Laminas\Cache\Storage\Adapter\AbstractAdapter;use Laminas\Mvc\Controller\AbstractActionController;use Laminas\Log\LoggerInterface;use Laminas\View\Model\ViewModel;use Laminas\View\Model\JsonModel;use LeadersLinked\Mapper\CompanyLocationMapper;use LeadersLinked\Mapper\CompanyFollowerMapper;use LeadersLinked\Mapper\CompanyUserMapper;use LeadersLinked\Mapper\CompanyMapper;use LeadersLinked\Mapper\IndustryMapper;use LeadersLinked\Mapper\CompanySizeMapper;use LeadersLinked\Model\CompanyFollower;use LeadersLinked\Mapper\UserBlockedMapper;use LeadersLinked\Mapper\UserMapper;use LeadersLinked\Model\Company;use LeadersLinked\Model\CompanyUser;use LeadersLinked\Mapper\QueryMapper;use LeadersLinked\Mapper\NotificationMapper;use LeadersLinked\Model\Network;class CompanyController extends AbstractActionController{/**** @var AdapterInterface*/private $adapter;/**** @var AbstractAdapter*/private $cache;/**** @var LoggerInterface*/private $logger;/**** @var array*/private $config;/**** @param AdapterInterface $adapter* @param AbstractAdapter $cache* @param LoggerInterface $logger* @param array $config*/public function __construct($adapter, $cache , $logger, $config){$this->adapter = $adapter;$this->cache = $cache;$this->logger = $logger;$this->config = $config;}/**** 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()) {$this->layout()->setTemplate('layout/layout.phtml');//$this->layout()->setTemplate('layout/layout-my-company.phtml');$viewModel = new ViewModel();$viewModel->setTemplate('leaders-linked/my-company/index.phtml');return $viewModel ;} else {return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);}}/*** 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 viewAction(){$request = $this->getRequest();if($request->isGet()) {$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$request = $this->getRequest();$id = $this->params()->fromRoute('id');$headers = $request->getHeaders();$isJson = false;if($headers->has('Accept')) {$accept = $headers->get('Accept');$prioritized = $accept->getPrioritized();foreach($prioritized as $key => $value) {$raw = trim($value->getRaw());if(!$isJson) {$isJson = strpos($raw, 'json');}}}if($isJson) {$flashMessenger = $this->plugin('FlashMessenger');if(!$id) {return new JsonModel(['success' => false,'data' => 'ERROR_INVALID_PARAMETER']);}$companyMapper = CompanyMapper::getInstance($this->adapter);$company = $companyMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);if(!$company) {return new JsonModel(['success' => false,'data' => 'ERROR_COMPANY_NOT_FOUND']);}if($company->status != Company::STATUS_ACTIVE) {return new JsonModel(['success' => false,'data' => 'ERROR_COMPANY_IS_NOT_ACTIVE']);}$companyLocationMapper = CompanyLocationMapper::getInstance($this->adapter);$records = $companyLocationMapper->fetchAllLocationByCompanyId($company->id);$locations = [];foreach($records as $record){$location = ['formatted_address' => $record['formatted_address'],'country' => $record['country'],'is_main' => $record['is_main'],];array_push($locations, $location);}$industryMapper = IndustryMapper::getInstance($this->adapter);$industry = $industryMapper->fetchOne($company->industry_id);$companySizeMapper = CompanySizeMapper::getInstance($this->adapter);$companySize = $companySizeMapper->fetchOne($company->company_size_id);$companyFollowerMapper = CompanyFollowerMapper::getInstance($this->adapter);$total_followers = $companyFollowerMapper->getCountFollowers($company->id);$follower = $companyFollowerMapper->fetchOneByCompanyIdAndUserId($company->id, $currentUser->id);$link_inmail = '';$companyUserMapper = CompanyUserMapper::getInstance($this->adapter);$companyUserOwner = $companyUserMapper->fetchOwnerByCompanyId($company->id);if($companyUserOwner) {$userBlockedMapper = UserBlockedMapper::getInstance($this->adapter);$userBlocked = $userBlockedMapper->fetchOneByUserIdAndBlockedId($currentUser->id, $companyUserOwner->user_id);if(!$userBlocked) {$userMapper = UserMapper::getInstance($this->adapter);$userOwner = $userMapper->fetchOne($companyUserOwner->user_id);$link_inmail = $this->url()->fromRoute('inmail',['id' => $userOwner->uuid]);}} else {$userBlocked = false;}$data = ['link_follow' => '','link_unfollow' => '','link_request' => '','link_accept' => '','link_cancel' => '','link_reject' =>'','link_leave' => '','total_followers' => $total_followers,'company_name' => $company->name,'company_uuid' => $company->uuid,'name' => trim($company->name),'image' => $company->image,'cover' => $company->cover,'overview' => $company->description,'website' => $company->website,'foundation_year' => $company->foundation_year,'facebook' => $company->facebook,'instagram' => $company->instagram,'twitter' => $company->twitter,'locations' => $locations,'industry' => $industry->name,'company_size' => $companySize->name . ' (' . $companySize->minimum_no_of_employee . '-' . $companySize->maximum_no_of_employee . ')','is_follower' => $follower ? 1 : 0,'link_inmail' => $link_inmail,'show_contact' => $userBlocked ? 0 : 1,];$companyUser = $companyUserMapper->fetchOneByCompanyIdAndUserId($company->id, $currentUser->id);if($companyUser) {if($companyUser->status == CompanyUser::STATUS_ADMIN_WILL_ADD) {$data['link_accept'] = $this->url()->fromRoute('company/accept', ['id' => $company->uuid]);$data['link_reject'] = $this->url()->fromRoute('company/reject', ['id' => $company->uuid]);}if($companyUser->status == CompanyUser::STATUS_SENT) {$data['link_cancel'] = $this->url()->fromRoute('company/cancel', ['id' => $company->uuid]);}if($companyUser->owner == CompanyUser::OWNER_NO && $companyUser->creator == CompanyUser::CREATOR_NO && $companyUser->status == CompanyUser::STATUS_ACCEPTED) {$data['link_leave'] = $this->url()->fromRoute('company/leave', ['id' => $company->uuid]);;}if($companyUser->status == CompanyUser::STATUS_CANCELLED) {$data['link_request'] = $this->url()->fromRoute('company/request', ['id' => $company->uuid]);;}} else {$data['link_request'] = $this->url()->fromRoute('company/request', ['id' => $company->uuid]);;}$companyFollowerMapper = CompanyFollowerMapper::getInstance($this->adapter);$data['total_followers'] = $companyFollowerMapper->getCountFollowers($company->id);$follower = $companyFollowerMapper->fetchOneByCompanyIdAndUserId($company->id, $currentUser->id);if($follower) {$data['link_unfollow'] = $this->url()->fromRoute('company/unfollow', ['id' => $company->uuid]);;} else {$data['link_follow'] = $this->url()->fromRoute('company/follow', ['id' => $company->uuid]);}$companyUserOwner = $companyUserMapper->fetchOwnerByCompanyId($company->id);if($companyUserOwner) {$userBlockedMapper = UserBlockedMapper::getInstance($this->adapter);$userBlocked = $userBlockedMapper->fetchOneByUserIdAndBlockedId($currentUser->id, $companyUserOwner->user_id);if(!$userBlocked) {$data['link_contact'] = $this->url()->fromRoute('inmail', ['id' => $company->uuid]);;}}return new JsonModel(['success' => true,'data' => $data]);} else {$flashMessenger = $this->plugin('FlashMessenger');if(!$id) {$flashMessenger->addErrorMessage('ERROR_INVALID_PARAMETER');return $this->redirect()->toRoute('dashboard');}$companyMapper = CompanyMapper::getInstance($this->adapter);$company = $companyMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);if(!$company || $company->status != Company::STATUS_ACTIVE) {$flashMessenger->addErrorMessage('ERROR_RECORD_NOT_FOUND');return $this->redirect()->toRoute('dashboard');}// $show_feeds = false;$companyUserMapper = CompanyUserMapper::getInstance($this->adapter);$companyUser = $companyUserMapper->fetchOneByCompanyIdAndUserId($company->id, $currentUser->id);/*if($companyUser && $companyUser->status == CompanyUser::STATUS_ACCEPTED) {$show_feeds = true;}*/$companyLocationMapper = CompanyLocationMapper::getInstance($this->adapter);$records = $companyLocationMapper->fetchAllLocationByCompanyId($company->id);$locations = [];foreach($records as $record){$location = ['formatted_address' => $record['formatted_address'],'country' => $record['country'],'is_main' => $record['is_main'],];array_push($locations, $location);}$industryMapper = IndustryMapper::getInstance($this->adapter);$industry = $industryMapper->fetchOne($company->industry_id);$companySizeMapper = CompanySizeMapper::getInstance($this->adapter);$companySize = $companySizeMapper->fetchOne($company->company_size_id);$companyFollowerMapper = CompanyFollowerMapper::getInstance($this->adapter);$total_followers = $companyFollowerMapper->getCountFollowers($company->id);$follower = $companyFollowerMapper->fetchOneByCompanyIdAndUserId($company->id, $currentUser->id);/*if($follower) {$show_feeds = true;}*/$link_inmail = '';$companyUserOwner = $companyUserMapper->fetchOwnerByCompanyId($company->id);if($companyUserOwner) {$userBlockedMapper = UserBlockedMapper::getInstance($this->adapter);$userBlocked = $userBlockedMapper->fetchOneByUserIdAndBlockedId($currentUser->id, $companyUserOwner->user_id);if(!$userBlocked) {$userMapper = UserMapper::getInstance($this->adapter);$userOwner = $userMapper->fetchOne($companyUserOwner->user_id);$link_inmail = $this->url()->fromRoute('inmail',['id' => $userOwner->uuid]);}} else {$userBlocked = false;}$this->layout()->setTemplate('layout/layout.phtml');$viewModel = new ViewModel();/*if($show_feeds) {$viewModel->setTemplate('leaders-linked/company/view-with-feeds.phtml');} else {$viewModel->setTemplate('leaders-linked/company/view-without-feeds.phtml');}*/$notificationMapper = NotificationMapper::getInstance($this->adapter);$notificationMapper->markAllNotificationsAsReadByUserIdAndCompanyId($currentUser->id, $company->id);$viewModel->setTemplate('leaders-linked/company/view-without-feeds.phtml');$viewModel->setVariables(['total_followers' => $total_followers,'company_id' => $company->id,'company_name' => $company->name,'company_uuid' => $company->uuid,'name' => trim($company->name),'image' => $company->image,'cover' => $company->cover,'overview' => $company->description,'website' => $company->website,'foundation_year' => $company->foundation_year,'facebook' => $company->facebook,'instagram' => $company->instagram,'twitter' => $company->twitter,'locations' => $locations,'industry' => $industry->name,'company_size' => $companySize->name . ' (' . $companySize->minimum_no_of_employee . '-' . $companySize->maximum_no_of_employee . ')','show_contact' => $userBlocked ? 0 : 1,'is_follower' => $follower ? 1 : 0,'link_inmail' => $link_inmail,]);return $viewModel ;}} else {return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);}}public function followAction(){$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$flashMessenger = $this->plugin('FlashMessenger');$request = $this->getRequest();$id = $this->params()->fromRoute('id');if(!$id) {$data = ['success' => false,'data' => 'ERROR_INVALID_PARAMETER'];return new JsonModel($data);}$companyMapper = CompanyMapper::getInstance($this->adapter);$company = $companyMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);if(!$company) {$data = ['success' => false,'data' => 'ERROR_RECORD_NOT_FOUND'];return new JsonModel($data);}if($company->status != Company::STATUS_ACTIVE) {$data = ['success' => false,'data' => 'ERROR_COMPANY_IS_NOT_ACTIVE'];return new JsonModel($data);}$request = $this->getRequest();$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();if($request->isPost()) {$flash = filter_var($this->params()->fromPost('flash', 'false'), FILTER_SANITIZE_STRING);$flash = $flash === 'true'? true: false;$companyFollowerMapper = CompanyFollowerMapper::getInstance($this->adapter);$companyFollower = $companyFollowerMapper->fetchOneByCompanyIdAndUserId($company->id, $currentUser->id);if($companyFollower) {$data = ['success' => false,'data' => 'ERROR_YOU_ALREADY_FOLLOW_THIS_COMPANY'];} else {$companyFollower = new CompanyFollower();$companyFollower->company_id = $company->id;$companyFollower->follower_id = $currentUser->id;$result = $companyFollowerMapper->insert($companyFollower);if($result) {if($flash) {$flashMessenger->addSuccessMessage('LABEL_STARTED_FOLLOWING_THIS_COMPANY');$data = ['success' => true,'data' => ['message' =>'LABEL_STARTED_FOLLOWING_THIS_COMPANY','reload' => true]];} else {$data = ['success' => true,'data' => 'LABEL_STARTED_FOLLOWING_THIS_COMPANY'];}} else {$data = ['success' => false,'data' => $companyFollowerMapper->getError()];}}} else {$data = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];}return new JsonModel($data);}public function unfollowAction(){$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$flashMessenger = $this->plugin('FlashMessenger');$request = $this->getRequest();$id = $this->params()->fromRoute('id');if(!$id) {$data = ['success' => false,'data' => 'ERROR_INVALID_PARAMETER'];return new JsonModel($data);}$companyMapper = CompanyMapper::getInstance($this->adapter);$company = $companyMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);if(!$company) {$data = ['success' => false,'data' => 'ERROR_RECORD_NOT_FOUND'];return new JsonModel($data);}if($company->status != Company::STATUS_ACTIVE) {$data = ['success' => false,'data' => 'ERROR_COMPANY_IS_NOT_ACTIVE'];return new JsonModel($data);}$request = $this->getRequest();$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();if($request->isPost()) {$flash = filter_var($this->params()->fromPost('flash', 'false'), FILTER_SANITIZE_STRING);$flash = $flash === 'true'? true: false;$companyFollowerMapper = CompanyFollowerMapper::getInstance($this->adapter);$companyFollower = $companyFollowerMapper->fetchOneByCompanyIdAndUserId($company->id, $currentUser->id);if($companyFollower) {$result = $companyFollowerMapper->deleteByCompanyIdAndUserId($company->id, $currentUser->id);if($result) {if($flash) {$flashMessenger->addSuccessMessage('LABEL_YOU_STOPPED_FOLLOWING_THIS_COMPANY_SUCCESS');$data = ['success' => true,'data' => ['message' => 'LABEL_YOU_STOPPED_FOLLOWING_THIS_COMPANY_SUCCESS','reload' => true],];} else {$data = ['success' => true,'data' => 'LABEL_YOU_STOPPED_FOLLOWING_THIS_COMPANY_SUCCESS',];}} else {$data = ['success' => false,'data' => $companyFollowerMapper->getError()];}} else {$data = ['success' => false,'data' => 'ERROR_YOU DONT_FOLLOW_THIS_COMPANY'];}} else {$data = ['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED'];}return new JsonModel($data);}public function leaveAction(){$flashMessenger = $this->plugin('FlashMessenger');$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$request = $this->getRequest();if($request->isPost()) {$id = $this->params()->fromRoute('id');$flash = filter_var($this->params()->fromPost('flash', 'false'), FILTER_SANITIZE_STRING);$flash = $flash === 'true'? true: false;if(!$id) {return new JsonModel(['success' => false,'data' => 'ERROR_INVALID_PARAMETER']);}$companyMapper = CompanyMapper::getInstance($this->adapter);$company = $companyMapper->fetchOneByUuidAndNetworkId($id, $currentUser->network_id);if(!$company) {return new JsonModel(['success' => false,'data' => 'ERROR_COMPANY_NOT_FOUND']);}if($company->status != Company::STATUS_ACTIVE) {return new JsonModel(['success' => false,'data' => 'ERROR_COMPANY_IS_NOT_ACTIVE']);}$companyUserMapper = CompanyUserMapper::getInstance($this->adapter);$companyUser = $companyUserMapper->fetchOneByCompanyIdAndUserId($company->id, $currentUser->id);if($companyUser) {if($companyUser->status == CompanyUser::STATUS_ACCEPTED ) {$companyUser->status = CompanyUser::STATUS_CANCELLED;if($companyUserMapper->update($companyUser)) {if($flash) {$flashMessenger->addSuccessMessage('LABEL_YOU_STOP_WORKING_WITH_THIS_COMPANY');return new JsonModel(['success' => true,'data' => ['message' => 'LABEL_YOU_STOP_WORKING_WITH_THIS_COMPANY','reload' => true]]);} else {return new JsonModel(['success' => true,'data' => 'LABEL_YOU_STOP_WORKING_WITH_THIS_COMPANY',]);}} else {return new JsonModel(['success' => false,'data' => $companyUserMapper->getError()]);}} else {return new JsonModel(['success' => false,'data' => 'ERROR_COMPANY_YOU_ARE_NOT_AN_ACTIVE_USER_OF_THIS_COMPANY']);}} else {return new JsonModel(['success' => false,'data' => 'ERROR_GROUP_YOU_NOT_MEMBER']);}} else {return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);}}public function cancelAction(){$flashMessenger = $this->plugin('FlashMessenger');$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$request = $this->getRequest();if($request->isPost()) {$id = $this->params()->fromRoute('id');$flash = filter_var($this->params()->fromPost('flash', 'false'), FILTER_SANITIZE_STRING);$flash = $flash === 'true'? true: false;if(!$id) {return new JsonModel(['success' => false,'data' => 'ERROR_INVALID_PARAMETER']);}$companyMapper = CompanyMapper::getInstance($this->adapter);$company = $companyMapper->fetchOneByUuid($id);if(!$company) {return new JsonModel(['success' => false,'data' => 'ERROR_COMPANY_NOT_FOUND']);}if($company->status != Company::STATUS_ACTIVE) {return new JsonModel(['success' => false,'data' => 'ERROR_COMPANY_IS_NOT_ACTIVE']);}$companyUserMapper = CompanyUserMapper::getInstance($this->adapter);$companyUser = $companyUserMapper->fetchOneByCompanyIdAndUserId($company->id, $currentUser->id);if($companyUser) {if( $companyUser->status == CompanyUser::STATUS_SENT) {$companyUser->status = CompanyUser::STATUS_CANCELLED;if($companyUserMapper->update($companyUser)) {if($flash) {$flashMessenger->addSuccessMessage('LABEL_COMPANY_REQUEST_CANCELLED');return new JsonModel(['success' => true,'data' => ['message' => 'LABEL_COMPANY_REQUEST_CANCELLED','reload' => true,]]);} else {return new JsonModel(['success' => true,'data' => 'LABEL_COMPANY_REQUEST_CANCELLED']);}} else {return new JsonModel(['success' => false,'data' => $companyUserMapper->getError()]);}} else {return new JsonModel(['success' => false,'data' => 'ERROR_COMPANY_THERE_IS_NO_PENDING_REQUEST_TO_CANCEL']);}} else {return new JsonModel(['success' => false,'data' =>'ERROR_COMPANY_YOU_HAVE_NOT_INVITED_THIS_COMPANY']);}} else {return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);}}public function rejectAction(){$flashMessenger = $this->plugin('FlashMessenger');$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$request = $this->getRequest();if($request->isPost()) {$id = $this->params()->fromRoute('id');$flash = filter_var($this->params()->fromPost('flash', 'false'), FILTER_SANITIZE_STRING);$flash = $flash === 'true'? true: false;if(!$id) {return new JsonModel(['success' => false,'data' => 'ERROR_INVALID_PARAMETER']);}$companyMapper = CompanyMapper::getInstance($this->adapter);$company = $companyMapper->fetchOneByUuid($id);if(!$company) {return new JsonModel(['success' => false,'data' => 'ERROR_COMPANY_NOT_FOUND']);}if($company->status != Company::STATUS_ACTIVE) {return new JsonModel(['success' => false,'data' => 'ERROR_COMPANY_IS_NOT_ACTIVE']);}$companyUserMapper = CompanyUserMapper::getInstance($this->adapter);$companyUser = $companyUserMapper->fetchOneByCompanyIdAndUserId($company->id, $currentUser->id);if($companyUser) {if($companyUser->status == CompanyUser::STATUS_ADMIN_WILL_ADD ) {$companyUser->status = CompanyUser::STATUS_CANCELLED;if($companyUserMapper->update($companyUser)) {if($flash) {$flashMessenger->addSuccessMessage('LABEL_YOU_REJECTED_WORKING_WITH_THIS_COMPANY');return new JsonModel(['success' => true,'data' => ['message' => 'LABEL_YOU_REJECTED_WORKING_WITH_THIS_COMPANY','reload' => true]]);} else {return new JsonModel(['success' => true,'data' => 'LABEL_YOU_REJECTED_WORKING_WITH_THIS_COMPANY']);}} else {return new JsonModel(['success' => false,'data' => $companyUserMapper->getError()]);}} else {return new JsonModel(['success' => false,'data' => 'ERROR_COMPANY_THERE_IS_NO_PENDING_REQUEST_TO_CANCEL']);}} else {return new JsonModel(['success' => false,'data' =>'ERROR_COMPANY_YOU_HAVE_NOT_INVITED_THIS_COMPANY']);}} else {return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);}}public function acceptAction(){$flashMessenger = $this->plugin('FlashMessenger');$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$request = $this->getRequest();if($request->isPost()) {$id = $this->params()->fromRoute('id');$flash = filter_var($this->params()->fromPost('flash', 'false'), FILTER_SANITIZE_STRING);$flash = $flash === 'true'? true: false;if(!$id) {return new JsonModel(['success' => false,'data' => 'ERROR_INVALID_PARAMETER']);}$companyMapper = CompanyMapper::getInstance($this->adapter);$company = $companyMapper->fetchOneByUuid($id);if(!$company) {return new JsonModel(['success' => false,'data' => 'ERROR_COMPANY_NOT_FOUND']);}if($company->status != Company::STATUS_ACTIVE) {return new JsonModel(['success' => false,'data' => 'ERROR_COMPANY_IS_NOT_ACTIVE']);}$companyUserMapper = CompanyUserMapper::getInstance($this->adapter);$companyUser = $companyUserMapper->fetchOneByCompanyIdAndUserId($company->id, $currentUser->id);if($companyUser) {if($companyUser->status == CompanyUser::STATUS_ADMIN_WILL_ADD) {$companyUser->status = CompanyUser::STATUS_ACCEPTED;if($companyUserMapper->update($companyUser)) {if($flash) {$flashMessenger->addSuccessMessage('LABEL_YOU_STARTED_WORKING_WITH_THIS_COMPANY' );return new JsonModel(['success' => true,'data' => ['message' => 'LABEL_YOU_STARTED_WORKING_WITH_THIS_COMPANY','reload' => true]]);} else {return new JsonModel(['success' => true,'data' => 'LABEL_YOU_STARTED_WORKING_WITH_THIS_COMPANY',]);}} else {return new JsonModel(['success' => false,'data' => $companyUserMapper->getError()]);}} else {return new JsonModel(['success' => false,'data' => 'ERROR_COMPANY_YOU_HAVE_NOT_INVITED_THIS_COMPANY']);}} else {return new JsonModel(['success' => false,'data' => 'ERROR_COMPANY_YOU_HAVE_NOT_INVITED_THIS_COMPANY']);}} else {return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);}}public function requestAction(){$flashMessenger = $this->plugin('FlashMessenger');$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$request = $this->getRequest();if($request->isPost()) {$id = $this->params()->fromRoute('id');$flash = filter_var($this->params()->fromPost('flash', 'false'), FILTER_SANITIZE_STRING);$flash = $flash === 'true'? true: false;if(!$id) {return new JsonModel(['success' => false,'data' => 'ERROR_INVALID_PARAMETER']);}$companyMapper = CompanyMapper::getInstance($this->adapter);$company = $companyMapper->fetchOneByUuid($id);if(!$company) {return new JsonModel(['success' => false,'data' => 'ERROR_COMPANY_NOT_FOUND']);}if($company->status != Company::STATUS_ACTIVE) {return new JsonModel(['success' => false,'data' => 'ERROR_COMPANY_IS_NOT_ACTIVE']);}$companyUserMapper = CompanyUserMapper::getInstance($this->adapter);$companyUser = $companyUserMapper->fetchOneByCompanyIdAndUserId($company->id, $currentUser->id);if($companyUser) {if($companyUser->status == CompanyUser::STATUS_ACCEPTED) {return new JsonModel(['success' => false,'data' => 'ERROR_COMPANY_YOU_ARE_USER']);}if($companyUser->status == CompanyUser::STATUS_REJECTED) {return new JsonModel(['success' => false,'data' => 'ERROR_COMPANY_YOUR REQUEST WAS PREVIOUSLY REJECTED']);}}if($companyUser) {$companyUser->status = CompanyUser::STATUS_SENT;$result = $companyUserMapper->update($companyUser);} else {$companyUser = new CompanyUser();$companyUser->company_id = $company->id;$companyUser->user_id = $currentUser->id;$companyUser->status = CompanyUser::STATUS_SENT;$result = $companyUserMapper->insert($companyUser);}if($result) {if($flash) {$flashMessenger->addSuccessMessage('LABEL_COMPANY_REQUEST_SENT' );return new JsonModel(['success' => true,'data' => ['message' => 'LABEL_COMPANY_REQUEST_SENT','reload' => true]]);} else {return new JsonModel(['success' => true,'data' => 'LABEL_COMPANY_REQUEST_SENT']);}return new JsonModel(['success' => true,'data' => 'LABEL_COMPANY_REQUEST_SENT']);} else {return new JsonModel(['success' => false,'data' => $companyUserMapper->getError()]);}} else {return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);}}public function invitationsReceivedAction(){$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$request = $this->getRequest();if($request->isGet()) {$headers = $request->getHeaders();$isJson = false;if($headers->has('Accept')) {$accept = $headers->get('Accept');$prioritized = $accept->getPrioritized();foreach($prioritized as $key => $value) {$raw = trim($value->getRaw());if(!$isJson) {$isJson = strpos($raw, 'json');}}}if($isJson) {$search = trim(filter_var($this->params()->fromQuery('search', ''), FILTER_SANITIZE_STRING));$queryMapper = QueryMapper::getInstance($this->adapter);$select = $queryMapper->getSql()->select();$select->columns([ 'uuid', 'name', 'image']);$select->from(['c' => CompanyMapper::_TABLE]);$select->join(['cu' => CompanyUserMapper::_TABLE], 'cu.company_id = c.id', []);$select->where->equalTo('cu.user_id', $currentUser->id);$select->where->equalTo('cu.status', CompanyUser::STATUS_ADMIN_WILL_ADD);$select->where->equalTo('c.status', Company::STATUS_ACTIVE);if($search) {$select->where->like('c.name', '%' . $search . '%');}$select->order('name ASC');// echo $select->getSqlString($this->adapter->platform); exit;$records = $queryMapper->fetchAll($select);$items = [];foreach($records as $record){$item = ['name' => $record['name'],'image' => $this->url()->fromRoute('storage', ['type' => 'company', 'code' => $record['uuid'], 'filename' => $record['image']]),'link_view' => $this->url()->fromRoute('company/view', ['id' => $record['uuid'] ]),'link_accept' => $this->url()->fromRoute('company/accept', ['id' => $record['uuid'] ]),'link_reject' => $this->url()->fromRoute('company/reject', ['id' => $record['uuid'] ]),];array_push($items, $item);}$response = ['success' => true,'data' => $items];return new JsonModel($response);} else {$this->layout()->setTemplate('layout/layout.phtml');$viewModel = new ViewModel();$viewModel->setTemplate('leaders-linked/company/invitations-received.phtml');return $viewModel ;}} else {return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);}}public function requestsSentAction(){$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$request = $this->getRequest();if($request->isGet()) {$headers = $request->getHeaders();$isJson = false;if($headers->has('Accept')) {$accept = $headers->get('Accept');$prioritized = $accept->getPrioritized();foreach($prioritized as $key => $value) {$raw = trim($value->getRaw());if(!$isJson) {$isJson = strpos($raw, 'json');}}}if($isJson) {$search = trim(filter_var($this->params()->fromQuery('search', ''), FILTER_SANITIZE_STRING));$queryMapper = QueryMapper::getInstance($this->adapter);$select = $queryMapper->getSql()->select();$select->columns([ 'uuid', 'name', 'image']);$select->from(['c' => CompanyMapper::_TABLE]);$select->join(['cu' => CompanyUserMapper::_TABLE], 'cu.company_id = c.id', ['status']);$select->where->equalTo('cu.user_id', $currentUser->id);$select->where->equalTo('cu.status', CompanyUser::STATUS_SENT);$select->where->equalTo('c.status', Company::STATUS_ACTIVE);if($search) {$select->where->like('c.name', '%' . $search . '%');}$select->order('name ASC');//echo $select2->getSqlString($this->adapter->platform); exit;$records = $queryMapper->fetchAll($select);$items = [];foreach($records as $record){$item = ['name' => $record['name'],'image' => $this->url()->fromRoute('storage', ['type' => 'company', 'code' => $record['uuid'], 'filename' => $record['image']]),'link_view' => $this->url()->fromRoute('company/view', ['id' => $record['uuid'] ]),'link_cancel' => $this->url()->fromRoute('company/cancel', ['id' => $record['uuid'] ]),];array_push($items, $item);}$response = ['success' => true,'data' => $items];return new JsonModel($response);} else {$this->layout()->setTemplate('layout/layout.phtml');$viewModel = new ViewModel();$viewModel->setTemplate('leaders-linked/company/requests-sent.phtml');return $viewModel ;}} else {return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);}}public function iWorkWithAction(){$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$request = $this->getRequest();if($request->isGet()) {$headers = $request->getHeaders();$isJson = false;if($headers->has('Accept')) {$accept = $headers->get('Accept');$prioritized = $accept->getPrioritized();foreach($prioritized as $key => $value) {$raw = trim($value->getRaw());if(!$isJson) {$isJson = strpos($raw, 'json');}}}if($isJson) {$search = trim(filter_var($this->params()->fromQuery('search', ''), FILTER_SANITIZE_STRING));$queryMapper = QueryMapper::getInstance($this->adapter);$select = $queryMapper->getSql()->select();$select->columns([ 'id', 'uuid', 'name', 'image']);$select->from(['c' => CompanyMapper::_TABLE]);$select->join(['cu' => CompanyUserMapper::_TABLE], 'cu.company_id = c.id', []);$select->where->equalTo('cu.user_id', $currentUser->id);$select->where->equalTo('cu.status', CompanyUser::STATUS_ACCEPTED);$select->where->equalTo('c.status', Company::STATUS_ACTIVE);$select->where->equalTo('cu.owner', CompanyUser::OWNER_NO);$select->where->equalTo('cu.creator', CompanyUser::CREATOR_NO);if($search) {$select->where->like('c.name', '%' . $search . '%');}$select->order('name ASC');/** select uuid, name, image from tbl_companies as cinner join tbl_company_users as cu on c.id = cu.company_idand cu.user_id = 2 and c.status = 'a' and cu.status = 'aa'*///echo $select->getSqlString($this->adapter->platform); exit;$companyUserMapper = CompanyUserMapper::getInstance($this->adapter);$records = $queryMapper->fetchAll($select);$items = [];foreach($records as $record){$companyUser = $companyUserMapper->fetchOneByCompanyIdAndUserId($record['id'], $currentUser->id);if($companyUser && $companyUser->status == CompanyUser::STATUS_ACCEPTED && $companyUser->backend == CompanyUser::BACKEND_YES ) {$link_my_company = $this->url()->fromRoute('backend/signin-company', ['id' => $record['uuid'] ]);} else {$link_my_company = '';}$item = ['name' => $record['name'],'image' => $this->url()->fromRoute('storage', ['type' => 'company', 'code' => $record['uuid'], 'filename' => $record['image']]),'link_view' => $this->url()->fromRoute('company/view', ['id' => $record['uuid'] ]),'link_leave' => $this->url()->fromRoute('company/leave', ['id' => $record['uuid'] ]),'link_my_company' => $link_my_company];array_push($items, $item);}$response = ['success' => true,'data' => $items];return new JsonModel($response);} else {$this->layout()->setTemplate('layout/layout.phtml');$viewModel = new ViewModel();$viewModel->setTemplate('leaders-linked/company/i-work-with.phtml');return $viewModel ;}} else {return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);}}/**** Generación del listado de perfiles* {@inheritDoc}* @see \Laminas\Mvc\Controller\AbstractActionController::indexAction()*/public function followingCompaniesAction(){$currentUserPlugin = $this->plugin('currentUserPlugin');$currentUser = $currentUserPlugin->getUser();$request = $this->getRequest();if($request->isGet()) {$headers = $request->getHeaders();$isJson = false;if($headers->has('Accept')) {$accept = $headers->get('Accept');$prioritized = $accept->getPrioritized();foreach($prioritized as $key => $value) {$raw = trim($value->getRaw());if(!$isJson) {$isJson = strpos($raw, 'json');}}}if($isJson) {$search = trim(filter_var($this->params()->fromQuery('search', ''), FILTER_SANITIZE_STRING));$queryMapper = QueryMapper::getInstance($this->adapter);$select = $queryMapper->getSql()->select();$select->columns(['id', 'uuid', 'name', 'status', 'image']);$select->from(['c' => CompanyMapper::_TABLE]);$select->join(['cf' => CompanyFollowerMapper::_TABLE],'cf.company_id = c.id' ,['follower_id']);$select->where->equalTo('follower_id', $currentUser->id);$select->where->equalTo('c.status', Company::STATUS_ACTIVE);if($search) {$select->where->like('c.name', '%' . $search . '%');}$select->order('name ASC');$records = $queryMapper->fetchAll($select);$items = [];foreach($records as $record){$item = ['name' => $record['name'],'image' => $this->url()->fromRoute('storage', ['type' => 'company', 'code' => $record['uuid'], 'filename' => $record['image']]),'link_view' => $this->url()->fromRoute('company/view', ['id' => $record['uuid']]),'link_unfollow' => $this->url()->fromRoute('company/unfollow', ['id' => $record['uuid']]),];array_push($items, $item);}$response = ['success' => true,'data' => $items,'sql' => $select->getSqlString($this->adapter->platform)];return new JsonModel($response);} else {$this->layout()->setTemplate('layout/layout.phtml');$viewModel = new ViewModel();$viewModel->setTemplate('leaders-linked/company/following-companies.phtml');return $viewModel ;}} else {return new JsonModel(['success' => false,'data' => 'ERROR_METHOD_NOT_ALLOWED']);}}}