Proyectos de Subversion LeadersLinked - Backend

Rev

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