Proyectos de Subversion LeadersLinked - Backend

Rev

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