Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16796 | | 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;
16796 efrain 19
use LeadersLinked\Form\DailyPulse\DailyPulseSetupForm;
20
use LeadersLinked\Model\Company;
21
use LeadersLinked\Model\DailyPulse;
22
use LeadersLinked\Mapper\DailyPulseMapper;
15540 efrain 23
 
24
class DailyPulseController extends AbstractActionController
25
{
26
    /**
27
     *
16769 efrain 28
     * @var \Laminas\Db\Adapter\AdapterInterface
15540 efrain 29
     */
30
    private $adapter;
31
 
32
    /**
33
     *
16769 efrain 34
     * @var \LeadersLinked\Cache\CacheInterface
15540 efrain 35
     */
16769 efrain 36
    private $cache;
37
 
38
 
39
    /**
40
     *
41
     * @var \Laminas\Log\LoggerInterface
42
     */
15540 efrain 43
    private $logger;
44
 
45
    /**
46
     *
47
     * @var array
48
     */
49
    private $config;
50
 
16769 efrain 51
 
15540 efrain 52
    /**
53
     *
16769 efrain 54
     * @var \Laminas\Mvc\I18n\Translator
55
     */
56
    private $translator;
57
 
58
 
59
    /**
60
     *
61
     * @param \Laminas\Db\Adapter\AdapterInterface $adapter
62
     * @param \LeadersLinked\Cache\CacheInterface $cache
63
     * @param \Laminas\Log\LoggerInterface LoggerInterface $logger
15540 efrain 64
     * @param array $config
16769 efrain 65
     * @param \Laminas\Mvc\I18n\Translator $translator
15540 efrain 66
     */
16769 efrain 67
    public function __construct($adapter, $cache, $logger, $config, $translator)
15540 efrain 68
    {
16769 efrain 69
        $this->adapter      = $adapter;
70
        $this->cache        = $cache;
71
        $this->logger       = $logger;
72
        $this->config       = $config;
73
        $this->translator   = $translator;
15540 efrain 74
    }
75
 
76
    public function indexAction()
77
    {
78
        return new JsonModel([
79
            'success' => false,
80
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
81
        ]);
82
    }
83
 
84
 
16796 efrain 85
    public function setupAction()
86
    {
87
        $currentUserPlugin  = $this->plugin('currentUserPlugin');
88
        $currentUser        = $currentUserPlugin->getUser();
89
        $currentCompany     = $currentUserPlugin->getCompany();
90
 
91
        $request            = $this->getRequest();
92
 
93
 
94
        if($request->isPost()) {
95
            if( $currentCompany->default_for_network == Company::DEFAULT_FOR_NETWORK_YES) {
96
                $value_options = [
97
                    DailyPulse::PRIVACY_COMPANY => 'LABEL_DAILY_PULSE_PRIVACY_COMPANY',
98
                    DailyPulse::PRIVACY_PUBLIC => 'LABEL_DAILY_PULSE_PRIVACY_PUBLIC',
99
                ];
100
            } else {
101
                $value_options = [
102
                    DailyPulse::PRIVACY_PUBLIC => 'LABEL_DAILY_PULSE_PRIVACY_PUBLIC',
103
                ];
104
            }
105
 
106
            $dataPost = $request->getPost()->toArray();
107
            $form = new DailyPulseSetupForm($value_options);
108
            $form->setData($dataPost);
109
 
110
            if($form->isValid()) {
111
                $dataPost = (array) $form->getData();
16927 efrain 112
 
113
 
16796 efrain 114
                $dailyPulseMapper = DailyPulseMapper::getInstance($this->adapter);
115
                $dailyPulse = $dailyPulseMapper->fetchOneByCompanyId($currentCompany->id);
116
                if($dailyPulse) {
16927 efrain 117
                    $dailyPulse->privacy = $dataPost['privacy'];
118
 
16796 efrain 119
                    $result = $dailyPulseMapper->update($dailyPulse);
120
                } else {
121
                    $dailyPulse = new DailyPulse();
122
                    $dailyPulse->company_id = $currentCompany->id;
123
                    $dailyPulse->privacy = $dataPost['privacy'];
124
 
125
                    $result = $dailyPulseMapper->insert($dailyPulse);
126
                }
127
 
128
 
129
                if($result) {
130
                    $this->logger->info('Se actualizo la configuración del Pulso Diario ', ['user_id' => $currentUser->id, 'ip' => Functions::getUserIP()]);
131
 
132
                    $data = [
133
                        'success'   => true,
134
                        'data'   => 'LABEL_RECORD_UPDATED'
135
                    ];
136
                } else {
137
                    $data = [
138
                        'success'   => false,
139
                        'data'      => $dailyPulseMapper->getError()
140
                    ];
141
 
142
                }
143
 
144
                return new JsonModel($data);
145
 
146
            } else {
147
                $messages = [];
148
                $form_messages = (array) $form->getMessages();
149
                foreach($form_messages  as $fieldname => $field_messages)
150
                {
151
 
152
                    $messages[$fieldname] = array_values($field_messages);
153
                }
154
 
155
                return new JsonModel([
156
                    'success'   => false,
157
                    'data'   => $messages
158
                ]);
159
            }
160
        } if($request->isGet()) {
161
            if( $currentCompany->default_for_network == Company::DEFAULT_FOR_NETWORK_YES) {
162
                $value_options = [
163
                    DailyPulse::PRIVACY_COMPANY => 'LABEL_DAILY_PULSE_PRIVACY_COMPANY',
164
                    DailyPulse::PRIVACY_PUBLIC => 'LABEL_DAILY_PULSE_PRIVACY_PUBLIC',
165
                ];
166
            } else {
167
                $value_options = [
168
                    DailyPulse::PRIVACY_PUBLIC => 'LABEL_DAILY_PULSE_PRIVACY_PUBLIC',
169
                ];
170
            }
171
 
16927 efrain 172
            $dailyPulseMapper = DailyPulseMapper::getInstance($this->adapter);
173
            $dailyPulse = $dailyPulseMapper->fetchOneByCompanyId($currentCompany->id);
174
            if($dailyPulse) {
175
                $privacy = $dailyPulse->privacy;
176
            } else {
177
                $privacy =  DailyPulse::PRIVACY_COMPANY;
178
            }
179
 
16796 efrain 180
            $form = new DailyPulseSetupForm($value_options);
16927 efrain 181
            $form->setData([
182
                'privacy' => $privacy,
183
             ]);
16796 efrain 184
 
185
            $this->layout()->setTemplate('layout/layout-backend');
186
            $viewModel = new ViewModel();
187
            $viewModel->setTemplate('leaders-linked/daily-pulse/setup');
188
            $viewModel->setVariables([
189
                'form' => $form,
190
            ]);
191
            return $viewModel ;
192
 
193
        } else {
194
            $data = [
195
                'success' => false,
196
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
197
            ];
198
 
199
            return new JsonModel($data);
200
        }
201
 
202
        return new JsonModel($data);
203
    }
15540 efrain 204
 
205
}