Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16768 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
15540 efrain 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Controller;
5
 
6
use Laminas\Db\Adapter\AdapterInterface;
16768 efrain 7
 
15540 efrain 8
use Laminas\Mvc\Controller\AbstractActionController;
9
use Laminas\Log\LoggerInterface;
10
use Laminas\View\Model\ViewModel;
11
use Laminas\View\Model\JsonModel;
12
use LeadersLinked\Library\Functions;
13
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
14
use LeadersLinked\Mapper\DailyPulseEmojiMapper;
15
use LeadersLinked\Form\DailyPulse\DailyPulseAddEmojiForm;
16
use LeadersLinked\Form\DailyPulse\DailyPulseEditEmojiForm;
17
use LeadersLinked\Model\DailyPulseEmoji;
18
use LeadersLinked\Library\Image;
19
use LeadersLinked\Form\Engagement\EngagementSettingForm;
20
use LeadersLinked\Mapper\EngagementMapper;
21
use LeadersLinked\Model\Engagement;
22
 
23
class EngagementController extends AbstractActionController
24
{
25
    /**
26
     *
16769 efrain 27
     * @var \Laminas\Db\Adapter\AdapterInterface
15540 efrain 28
     */
29
    private $adapter;
30
 
31
    /**
32
     *
16769 efrain 33
     * @var \LeadersLinked\Cache\CacheInterface
15540 efrain 34
     */
16769 efrain 35
    private $cache;
36
 
37
 
38
    /**
39
     *
40
     * @var \Laminas\Log\LoggerInterface
41
     */
15540 efrain 42
    private $logger;
43
 
44
    /**
45
     *
46
     * @var array
47
     */
48
    private $config;
49
 
16769 efrain 50
 
15540 efrain 51
    /**
52
     *
16769 efrain 53
     * @var \Laminas\Mvc\I18n\Translator
54
     */
55
    private $translator;
56
 
57
 
58
    /**
59
     *
60
     * @param \Laminas\Db\Adapter\AdapterInterface $adapter
61
     * @param \LeadersLinked\Cache\CacheInterface $cache
62
     * @param \Laminas\Log\LoggerInterface LoggerInterface $logger
15540 efrain 63
     * @param array $config
16769 efrain 64
     * @param \Laminas\Mvc\I18n\Translator $translator
15540 efrain 65
     */
16769 efrain 66
    public function __construct($adapter, $cache, $logger, $config, $translator)
15540 efrain 67
    {
16769 efrain 68
        $this->adapter      = $adapter;
69
        $this->cache        = $cache;
70
        $this->logger       = $logger;
71
        $this->config       = $config;
72
        $this->translator   = $translator;
15540 efrain 73
    }
74
 
75
    public function indexAction()
76
    {
77
        return new JsonModel([
78
            'success' => false,
79
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
80
        ]);
81
    }
82
 
83
    public function setupAction()
84
    {
85
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
86
        $currentUser        = $currentUserPlugin->getUser();
87
        $currentCompany     = $currentUserPlugin->getCompany();
88
 
89
        $request            = $this->getRequest();
90
 
91
 
92
        if($request->isPost()) {
93
            $form = new  EngagementSettingForm();
94
            $dataPost = $request->getPost()->toArray();
95
 
96
            $form->setData($dataPost);
97
 
98
            if($form->isValid()) {
99
                $dataPost = (array) $form->getData();
100
 
101
 
102
 
103
 
104
                $engagementMapper = EngagementMapper::getInstance($this->adapter);
105
                $engagement = $engagementMapper->fetchOneByCompanyId($currentCompany->id);
106
 
107
 
108
 
109
                if($engagement) {
110
                    $engagement->daily_pulse_climate_on_your_organization = $dataPost['daily_pulse_climate_on_your_organization'];
111
                    $engagement->daily_pulse_how_are_you_feel = $dataPost['daily_pulse_how_are_you_feel'];
112
                    $engagement->feed_survey = $dataPost['feed_survey'];
113
                    $engagement->internal_survey = $dataPost['internal_survey'];
114
                    $result = $engagementMapper->update($engagement);
115
                } else {
116
                    $engagement = new Engagement();
117
                    $engagement->company_id = $currentCompany->id;
118
                    $engagement->daily_pulse_climate_on_your_organization = $dataPost['daily_pulse_climate_on_your_organization'];
119
                    $engagement->daily_pulse_how_are_you_feel = $dataPost['daily_pulse_how_are_you_feel'];
120
                    $engagement->feed_survey = $dataPost['feed_survey'];
121
                    $engagement->internal_survey = $dataPost['internal_survey'];
122
                    $result = $engagementMapper->insert($engagement);
123
                }
124
 
125
 
126
 
127
                if($result) {
128
                    $this->logger->info('Se actualizo los montos de los puntos Obtenidos en el módulo de Compromisos ', ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
129
 
130
                    $data = [
131
                        'success'   => true,
132
                        'data'   => 'LABEL_RECORD_UPDATED'
133
                    ];
134
                } else {
135
                    $data = [
136
                        'success'   => false,
137
                        'data'      => $engagementMapper->getError()
138
                    ];
139
 
140
                }
141
 
142
                return new JsonModel($data);
143
 
144
            } else {
145
                $messages = [];
146
                $form_messages = (array) $form->getMessages();
147
                foreach($form_messages  as $fieldname => $field_messages)
148
                {
149
 
150
                    $messages[$fieldname] = array_values($field_messages);
151
                }
152
 
153
                return new JsonModel([
154
                    'success'   => false,
155
                    'data'   => $messages
156
                ]);
157
            }
158
        } if($request->isGet()) {
159
 
160
            $form = new EngagementSettingForm();
161
 
162
            $engagementMapper = EngagementMapper::getInstance($this->adapter);
163
            $engagement = $engagementMapper->fetchOneByCompanyId($currentCompany->id);
164
            if($engagement) {
165
                $form->setData([
166
                    'daily_pulse_climate_on_your_organization' => $engagement->daily_pulse_climate_on_your_organization,
167
                    'daily_pulse_how_are_you_feel' => $engagement->daily_pulse_how_are_you_feel,
168
                    'feed_survey' => $engagement->feed_survey,
169
                    'internal_survey' => $engagement->internal_survey,
170
                ]);
171
            } else {
172
                $form->setData([
173
                    'daily_pulse_climate_on_your_organization' => 0,
174
                    'daily_pulse_how_are_you_feel' =>  0,
175
                    'feed_survey' =>  0,
176
                    'internal_survey' =>  0,
177
                ]);
178
            }
179
 
180
            $this->layout()->setTemplate('layout/layout-backend');
181
            $viewModel = new ViewModel();
182
            $viewModel->setTemplate('leaders-linked/engagement/setup.phtml');
183
            $viewModel->setVariables([
184
                'form' => $form,
185
            ]);
186
            return $viewModel ;
187
 
188
 
189
 
190
        } else {
191
            $data = [
192
                'success' => false,
193
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
194
            ];
195
 
196
            return new JsonModel($data);
197
        }
198
 
199
        return new JsonModel($data);
200
    }
201
 
202
 
203
 
204
 
205
}