Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
16285 efrain 1
<?php
2
declare(strict_types=1);
3
 
4
namespace LeadersLinked\Controller;
5
 
6
use Laminas\Db\Adapter\AdapterInterface;
16768 efrain 7
 
16285 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\Form\Tools\UserUploadGeneratePasswordForm;
13
use PhpOffice\PhpSpreadsheet\IOFactory;
16286 efrain 14
use LeadersLinked\Library\Functions;
16285 efrain 15
 
16
class ToolsController extends AbstractActionController
17
{
18
    /**
19
     *
16769 efrain 20
     * @var \Laminas\Db\Adapter\AdapterInterface
16285 efrain 21
     */
22
    private $adapter;
23
 
24
    /**
25
     *
16769 efrain 26
     * @var \LeadersLinked\Cache\CacheInterface
16285 efrain 27
     */
16769 efrain 28
    private $cache;
29
 
30
 
31
    /**
32
     *
33
     * @var \Laminas\Log\LoggerInterface
34
     */
16285 efrain 35
    private $logger;
36
 
37
    /**
38
     *
39
     * @var array
40
     */
41
    private $config;
42
 
43
 
16769 efrain 44
    /**
45
     *
46
     * @var \Laminas\Mvc\I18n\Translator
47
     */
48
    private $translator;
16285 efrain 49
 
16769 efrain 50
 
16285 efrain 51
    /**
52
     *
16769 efrain 53
     * @param \Laminas\Db\Adapter\AdapterInterface $adapter
54
     * @param \LeadersLinked\Cache\CacheInterface $cache
55
     * @param \Laminas\Log\LoggerInterface LoggerInterface $logger
16285 efrain 56
     * @param array $config
16769 efrain 57
     * @param \Laminas\Mvc\I18n\Translator $translator
16285 efrain 58
     */
16769 efrain 59
    public function __construct($adapter, $cache, $logger, $config, $translator)
16285 efrain 60
    {
61
        $this->adapter      = $adapter;
16769 efrain 62
        $this->cache        = $cache;
16285 efrain 63
        $this->logger       = $logger;
64
        $this->config       = $config;
16769 efrain 65
        $this->translator   = $translator;
16285 efrain 66
    }
67
 
68
    public function indexAction()
69
    {
70
        return new JsonModel([
71
            'success' => false,
72
            'data' => 'ERROR_METHOD_NOT_ALLOWED'
73
        ]);
74
    }
75
 
76
    public function userfilePasswordGeneratorAction()
77
    {
78
        $request = $this->getRequest();
79
 
80
        if($request->isPost())
81
        {
82
 
83
            $form = new  UserUploadGeneratePasswordForm();
84
            $dataPost = array_merge($request->getPost()->toArray(), $request->getFiles()->toArray());
85
 
86
            $form->setData($dataPost);
87
 
88
            if($form->isValid()) {
89
 
90
                $file = $_FILES['file'];
91
                $tmp_filename = $file['tmp_name'];
92
 
93
 
94
                $filename = $file['name'];
95
                $final_filename =  'data/' . $filename;
96
 
97
                if(!move_uploaded_file($tmp_filename, $final_filename)) {
98
                    return new JsonModel([
99
                        'success' => false,
100
                        'data' => 'ERROR_UPLOAD_FILE'
101
                    ]);
102
                }
103
 
104
 
105
                $spreadsheet = IOFactory::load($final_filename);
106
                $sheet = $spreadsheet->getActiveSheet();
107
                $max = $sheet->getHighestDataRow('A');
108
 
109
 
110
 
111
 
112
                $caracteres =  ['#', '?', '!', '@', '$'];
113
                $max_caracteres = count($caracteres);
114
 
115
 
116
                for($i = 1; $i <= $max; $i++)
117
                {
118
 
119
 
16766 efrain 120
                    $first_name = Functions::sanitizeFilterString($sheet->getCell('A' . $i)->getValue());
121
                    $last_name = Functions::sanitizeFilterString($sheet->getCell('B' . $i)->getValue());
16285 efrain 122
                    $email = trim(filter_var(strval($sheet->getCell('C' . $i)->getValue()), FILTER_SANITIZE_EMAIL));
123
 
124
 
125
 
126
 
127
                    if(empty($first_name) || empty($last_name) || !filter_var($email, FILTER_VALIDATE_EMAIL) ) {
128
                        continue;
129
                    }
130
 
131
                    $caracter = $caracteres[ rand(0, $max_caracteres - 1) ];
132
 
133
 
134
                    $runmber = rand(1001, 9999);
135
 
136
                    $sfirst_name = ucfirst(substr(strtolower(str_replace(' ', '', $first_name)), 0, 4));
137
                    $slast_name = ucfirst(substr(strtolower(str_replace(' ', '', $last_name)), 0, 4));
138
                    $password = $sfirst_name . $slast_name . $runmber . $caracter;
139
 
140
                    $sheet->SetCellValue('D' . $i, $password);
141
 
142
                }
143
 
144
                $filename = $file['name'];
145
                $final_filename =  'data/' . $filename;
146
 
147
 
16286 efrain 148
 
149
                $fileName = Functions::normalizeStringFilename($file['name']);
150
                $fileName = str_replace('.xlsx', '', $fileName);
151
                $fileName = str_replace('.xls', '', $fileName);
152
 
153
 
154
                $fileName = $fileName . '-generado-' . date('Y-m-d-H-i-s') . '.xlsx';
16285 efrain 155
                $tempFilename = tempnam(sys_get_temp_dir(), $file['name'] . time());
156
 
157
                $writer = IOFactory::createWriter($spreadsheet, 'Xls');
158
                $writer->save($tempFilename);
159
 
160
                $content = file_get_contents($tempFilename);
161
                @unlink($final_filename);
162
                @unlink($tempFilename);
163
 
164
                return new JsonModel([
165
                    'success' => true,
166
                    'data' => [
167
                        'content' => base64_encode($content),
168
                        'basename' => $fileName
169
 
170
                    ]
171
                ]);
172
 
173
 
174
 
175
 
176
 
177
 
178
 
179
 
180
            } else {
181
                $messages = [];
182
                $form_messages = (array) $form->getMessages();
183
                foreach ($form_messages  as $fieldname => $field_messages) {
184
                    $messages[$fieldname] = array_values($field_messages);
185
                }
186
 
187
                return new JsonModel([
188
                    'success'   => false,
189
                    'data'   => $messages
190
                ]);
191
            }
192
 
193
 
194
 
195
 
196
 
197
 
198
        }
199
        else if($request->isGet()) {
200
            $form = new  UserUploadGeneratePasswordForm();
201
 
202
            $this->layout()->setTemplate('layout/layout-backend.phtml');
203
            $viewModel = new ViewModel();
204
            $viewModel->setTemplate('leaders-linked/tools/password-generator-for-file.phtml');
205
            $viewModel->setVariables([
206
                'form' => $form
207
            ]);
208
 
209
            return $viewModel ;
210
 
211
        } else {
212
            return new JsonModel([
213
                'success' => false,
214
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
215
            ]);;
216
        }
217
    }
218
 
219
 
220
}