Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 15540 | Rev 16768 | Ir a la última revisión | | 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;
16766 efrain 7
use LeadersLinked\Cache\CacheInterface;
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
     *
27
     * @var AdapterInterface
28
     */
29
    private $adapter;
30
 
31
 
32
    /**
33
     *
16766 efrain 34
     * @var CacheInterface
15540 efrain 35
     */
36
    private $cache;
37
 
38
    /**
39
     *
40
     * @var  LoggerInterface
41
     */
42
    private $logger;
43
 
44
 
45
    /**
46
     *
47
     * @var array
48
     */
49
    private $config;
50
 
51
    /**
52
     *
53
     * @param AdapterInterface $adapter
16766 efrain 54
     * @param CacheInterface $cache
15540 efrain 55
     * @param LoggerInterface $logger
56
     * @param array $config
57
     */
58
    public function __construct($adapter, $cache , $logger, $config)
59
    {
60
        $this->adapter      = $adapter;
61
        $this->cache        = $cache;
62
        $this->logger       = $logger;
63
        $this->config       = $config;
64
 
65
    }
66
 
67
    public function indexAction()
68
    {
69
        return new JsonModel([
70
            'success' => false,
71
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
72
        ]);
73
    }
74
 
75
    public function setupAction()
76
    {
77
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
78
        $currentUser        = $currentUserPlugin->getUser();
79
        $currentCompany     = $currentUserPlugin->getCompany();
80
 
81
        $request            = $this->getRequest();
82
 
83
 
84
        if($request->isPost()) {
85
            $form = new  EngagementSettingForm();
86
            $dataPost = $request->getPost()->toArray();
87
 
88
            $form->setData($dataPost);
89
 
90
            if($form->isValid()) {
91
                $dataPost = (array) $form->getData();
92
 
93
 
94
 
95
 
96
                $engagementMapper = EngagementMapper::getInstance($this->adapter);
97
                $engagement = $engagementMapper->fetchOneByCompanyId($currentCompany->id);
98
 
99
 
100
 
101
                if($engagement) {
102
                    $engagement->daily_pulse_climate_on_your_organization = $dataPost['daily_pulse_climate_on_your_organization'];
103
                    $engagement->daily_pulse_how_are_you_feel = $dataPost['daily_pulse_how_are_you_feel'];
104
                    $engagement->feed_survey = $dataPost['feed_survey'];
105
                    $engagement->internal_survey = $dataPost['internal_survey'];
106
                    $result = $engagementMapper->update($engagement);
107
                } else {
108
                    $engagement = new Engagement();
109
                    $engagement->company_id = $currentCompany->id;
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->insert($engagement);
115
                }
116
 
117
 
118
 
119
                if($result) {
120
                    $this->logger->info('Se actualizo los montos de los puntos Obtenidos en el módulo de Compromisos ', ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
121
 
122
                    $data = [
123
                        'success'   => true,
124
                        'data'   => 'LABEL_RECORD_UPDATED'
125
                    ];
126
                } else {
127
                    $data = [
128
                        'success'   => false,
129
                        'data'      => $engagementMapper->getError()
130
                    ];
131
 
132
                }
133
 
134
                return new JsonModel($data);
135
 
136
            } else {
137
                $messages = [];
138
                $form_messages = (array) $form->getMessages();
139
                foreach($form_messages  as $fieldname => $field_messages)
140
                {
141
 
142
                    $messages[$fieldname] = array_values($field_messages);
143
                }
144
 
145
                return new JsonModel([
146
                    'success'   => false,
147
                    'data'   => $messages
148
                ]);
149
            }
150
        } if($request->isGet()) {
151
 
152
            $form = new EngagementSettingForm();
153
 
154
            $engagementMapper = EngagementMapper::getInstance($this->adapter);
155
            $engagement = $engagementMapper->fetchOneByCompanyId($currentCompany->id);
156
            if($engagement) {
157
                $form->setData([
158
                    'daily_pulse_climate_on_your_organization' => $engagement->daily_pulse_climate_on_your_organization,
159
                    'daily_pulse_how_are_you_feel' => $engagement->daily_pulse_how_are_you_feel,
160
                    'feed_survey' => $engagement->feed_survey,
161
                    'internal_survey' => $engagement->internal_survey,
162
                ]);
163
            } else {
164
                $form->setData([
165
                    'daily_pulse_climate_on_your_organization' => 0,
166
                    'daily_pulse_how_are_you_feel' =>  0,
167
                    'feed_survey' =>  0,
168
                    'internal_survey' =>  0,
169
                ]);
170
            }
171
 
172
            $this->layout()->setTemplate('layout/layout-backend');
173
            $viewModel = new ViewModel();
174
            $viewModel->setTemplate('leaders-linked/engagement/setup.phtml');
175
            $viewModel->setVariables([
176
                'form' => $form,
177
            ]);
178
            return $viewModel ;
179
 
180
 
181
 
182
        } else {
183
            $data = [
184
                'success' => false,
185
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
186
            ];
187
 
188
            return new JsonModel($data);
189
        }
190
 
191
        return new JsonModel($data);
192
    }
193
 
194
 
195
 
196
 
197
}