Proyectos de Subversion LeadersLinked - Backend

Rev

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