Rev 16768 | Ir a la última revisión | 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\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\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\Engagement\EngagementSettingForm;
use LeadersLinked\Mapper\EngagementMapper;
use LeadersLinked\Model\Engagement;
class EngagementController 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;
}
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()) {
$form = new EngagementSettingForm();
$dataPost = $request->getPost()->toArray();
$form->setData($dataPost);
if($form->isValid()) {
$dataPost = (array) $form->getData();
$engagementMapper = EngagementMapper::getInstance($this->adapter);
$engagement = $engagementMapper->fetchOneByCompanyId($currentCompany->id);
if($engagement) {
$engagement->daily_pulse_climate_on_your_organization = $dataPost['daily_pulse_climate_on_your_organization'];
$engagement->daily_pulse_how_are_you_feel = $dataPost['daily_pulse_how_are_you_feel'];
$engagement->feed_survey = $dataPost['feed_survey'];
$engagement->internal_survey = $dataPost['internal_survey'];
$result = $engagementMapper->update($engagement);
} else {
$engagement = new Engagement();
$engagement->company_id = $currentCompany->id;
$engagement->daily_pulse_climate_on_your_organization = $dataPost['daily_pulse_climate_on_your_organization'];
$engagement->daily_pulse_how_are_you_feel = $dataPost['daily_pulse_how_are_you_feel'];
$engagement->feed_survey = $dataPost['feed_survey'];
$engagement->internal_survey = $dataPost['internal_survey'];
$result = $engagementMapper->insert($engagement);
}
if($result) {
$this->logger->info('Se actualizo los montos de los puntos Obtenidos en el módulo de Compromisos ', ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
$data = [
'success' => true,
'data' => 'LABEL_RECORD_UPDATED'
];
} else {
$data = [
'success' => false,
'data' => $engagementMapper->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()) {
$form = new EngagementSettingForm();
$engagementMapper = EngagementMapper::getInstance($this->adapter);
$engagement = $engagementMapper->fetchOneByCompanyId($currentCompany->id);
if($engagement) {
$form->setData([
'daily_pulse_climate_on_your_organization' => $engagement->daily_pulse_climate_on_your_organization,
'daily_pulse_how_are_you_feel' => $engagement->daily_pulse_how_are_you_feel,
'feed_survey' => $engagement->feed_survey,
'internal_survey' => $engagement->internal_survey,
]);
} else {
$form->setData([
'daily_pulse_climate_on_your_organization' => 0,
'daily_pulse_how_are_you_feel' => 0,
'feed_survey' => 0,
'internal_survey' => 0,
]);
}
$this->layout()->setTemplate('layout/layout-backend');
$viewModel = new ViewModel();
$viewModel->setTemplate('leaders-linked/engagement/setup.phtml');
$viewModel->setVariables([
'form' => $form,
]);
return $viewModel ;
} else {
$data = [
'success' => false,
'data' => 'ERROR_METHOD_NOT_ALLOWED'
];
return new JsonModel($data);
}
return new JsonModel($data);
}
}