Rev 16796 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?php
declare(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\Mapper\DailyPulseEmojiMapper;
use LeadersLinked\Form\DailyPulse\DailyPulseAddEmojiForm;
use LeadersLinked\Form\DailyPulse\DailyPulseEditEmojiForm;
use LeadersLinked\Model\DailyPulseEmoji;
use LeadersLinked\Library\Image;
use LeadersLinked\Form\DailyPulse\DailyPulseSetupForm;
use LeadersLinked\Model\Company;
use LeadersLinked\Model\DailyPulse;
use LeadersLinked\Mapper\DailyPulseMapper;
class DailyPulseController 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;
}
public function indexAction()
{
return new JsonModel([
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
]);
}
public function setupAction()
{
$currentUserPlugin = $this->plugin('currentUserPlugin');
$currentUser = $currentUserPlugin->getUser();
$currentCompany = $currentUserPlugin->getCompany();
$request = $this->getRequest();
if($request->isPost()) {
if( $currentCompany->default_for_network == Company::DEFAULT_FOR_NETWORK_YES) {
$value_options = [
DailyPulse::PRIVACY_COMPANY => 'LABEL_DAILY_PULSE_PRIVACY_COMPANY',
DailyPulse::PRIVACY_PUBLIC => 'LABEL_DAILY_PULSE_PRIVACY_PUBLIC',
];
} else {
$value_options = [
DailyPulse::PRIVACY_PUBLIC => 'LABEL_DAILY_PULSE_PRIVACY_PUBLIC',
];
}
$dataPost = $request->getPost()->toArray();
$form = new DailyPulseSetupForm($value_options);
$form->setData($dataPost);
if($form->isValid()) {
$dataPost = (array) $form->getData();
$dailyPulseMapper = DailyPulseMapper::getInstance($this->adapter);
$dailyPulse = $dailyPulseMapper->fetchOneByCompanyId($currentCompany->id);
if($dailyPulse) {
$dailyPulse->privacy = $dataPost['privacy'];
$result = $dailyPulseMapper->update($dailyPulse);
} else {
$dailyPulse = new DailyPulse();
$dailyPulse->company_id = $currentCompany->id;
$dailyPulse->privacy = $dataPost['privacy'];
$result = $dailyPulseMapper->insert($dailyPulse);
}
if($result) {
$this->logger->info('Se actualizo la configuración del Pulso Diario ', ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
$data = [
'success' => true,
'data' => 'LABEL_RECORD_UPDATED'
];
} else {
$data = [
'success' => false,
'data' => $dailyPulseMapper->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
]);
}
} if($request->isGet()) {
if( $currentCompany->default_for_network == Company::DEFAULT_FOR_NETWORK_YES) {
$value_options = [
DailyPulse::PRIVACY_COMPANY => 'LABEL_DAILY_PULSE_PRIVACY_COMPANY',
DailyPulse::PRIVACY_PUBLIC => 'LABEL_DAILY_PULSE_PRIVACY_PUBLIC',
];
} else {
$value_options = [
DailyPulse::PRIVACY_PUBLIC => 'LABEL_DAILY_PULSE_PRIVACY_PUBLIC',
];
}
$dailyPulseMapper = DailyPulseMapper::getInstance($this->adapter);
$dailyPulse = $dailyPulseMapper->fetchOneByCompanyId($currentCompany->id);
if($dailyPulse) {
$privacy = $dailyPulse->privacy;
} else {
$privacy = DailyPulse::PRIVACY_COMPANY;
}
$form = new DailyPulseSetupForm($value_options);
$form->setData([
'privacy' => $privacy,
]);
$this->layout()->setTemplate('layout/layout-backend');
$viewModel = new ViewModel();
$viewModel->setTemplate('leaders-linked/daily-pulse/setup');
$viewModel->setVariables([
'form' => $form,
]);
return $viewModel ;
} else {
$data = [
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
];
return new JsonModel($data);
}
return new JsonModel($data);
}
}