<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Session\Session;
use Doctrine\ORM\EntityManagerInterface;
use App\Entity\LepDiiaRequest;
use App\Entity\LepServiceOnlineRecord;
use App\Entity\LepDiiaSignature;
use App\Entity\LepDiiaOperRozp;
use App\Plugins\Library;
class ServicesZminaEmailZTController extends AbstractController
{
#[Route('/services/zmina_email_zelenyi_taryf', name: 'app_services_zmina_email_z_t')]
public function ZminaEmailZelenyiTaryf(EntityManagerInterface $entityManager): Response
{
$session = new Session();
$data = array();
$data['controller_name'] = 'ServicesZminaEmailZTController';
$data['version'] = rand(10, 1000);
if ($session->has('userinfo')){
$userinfo = $session->get('userinfo');
}
if ($session->has('shering')){
$shering = $session->get('shering');
}
if (!empty($_COOKIE["sign_res"]) && $_COOKIE["sign_res"] != '' ){
if ($session->has('shering')){
$shering = $session->remove('shering');
}
if ($_COOKIE["sign_res"] == 'error'){
return $this->render('services_zmina_email_z_t/step4_error.html.twig', $data);
}
else {
return $this->render('services_zmina_email_z_t/step4_ok.html.twig', $data);
}
}
elseif (!empty($shering["type_action"]) && $shering["type_action"] == 'shering' && !empty($shering["request"]) && $shering["request"] != ''){
$data['request_id'] = $shering["request"];
$repository_hash = $entityManager->getRepository(LepDiiaSignature::class);
$hash = $repository_hash->findOneBy(['request_id' => $data['request_id']]);
if (!$hash){
$shering = $session->remove('shering');
return $this->StartPage($entityManager, $data);
die;
}
$file_s = explode('*|*', $hash->getFileName());
$data['file_name_zaiava'] = $file_s[0];
$data['file_name_zver'] = $file_s[1];
$repository_record = $entityManager->getRepository(LepServiceOnlineRecord::class);
$online_record = $repository_record->findOneBy(['request_id' => $data['request_id']]);
$user = json_decode($online_record->getDataUser(), true);
$data['type_zajava'] = $user['type_zajava'];
if ($user['type_zajava'] == 'doruchennia'){
$data['list_doc'][0] = 'Паспорт власника рахунку (усі заповнені сторінки).';
$data['list_doc'][1] = 'Ідентифікаційний код власника рахунку.';
$data['list_doc'][2] = 'Оформлена довіреність, яка уповноважує Вас представляти інтереси споживача (власника рахунку).';
}
else {
$data['list_doc'][0] = '';
$data['list_doc'][1] = '';
$data['list_doc'][2] = '';
}
$repository_request = $entityManager->getRepository(LepDiiaRequest::class);
$request = $repository_request->findOneBy(['requestId' => $data['request_id']]);
$type_doc = $request->getFile();
if ($type_doc != 'РНОКПП' && $type_doc != ''){
$data['pass_copy'] = '';
}
else {
$data['pass_copy'] = 'Паспорт громадянина України (усі заповнені сторінки).';
}
if ($data['list_doc'][0] == '' && $data['pass_copy'] == ''){
$data['id_doc_files'] = 'no_file';
}
else {
$data['id_doc_files'] = 'file';
}
$data['script_error_upload'] = array(
"msg" => '',
"type" => ''
);
$data['end_script_mobile'] = '';
$data['end_script_pc'] = '';
if (!empty($_COOKIE["request"]) && !empty($_COOKIE["action"]) && $_COOKIE["action"] == 'sign'){
$data['service'] = $online_record->getServiceName();
return $this->render('services_zmina_email_z_t/step3_temp.html.twig', $data);
}
elseif (!empty($_POST["signature"]) && $_POST["signature"] == 'file_signature' && !empty($_POST["request"]) && $_POST["request"] != ''){
$lib = new Library();
if (!empty($_POST["count_files"]) && $_POST["count_files"] > 0){
$count_file = $_POST["count_files"];
$file_name_str = '';
$blacklist = array('.phtml', '.php', '.php3', '.php4', '.php5', '.php6', '.php7', '.phps', '.cgi', '.pl', '.asp',
'.aspx', '.shtml', '.shtm', '.htaccess', '.htpasswd', '.ini', '.log', '.sh', '.js', '.html',
'.htm', '.css', '.sql', '.spl', '.scgi', '.fcgi', '.exe', '.doc', '.docx', '.xls', '.xlsx');
for ($i = 1; $i <= $count_file; $i++){
$input_name = 'files_img_files'.$i;
if (is_uploaded_file($_FILES[$input_name]['tmp_name'])){
$fileinfo = pathinfo($_FILES[$input_name]['name'], PATHINFO_EXTENSION);
foreach ($blacklist as $item){
if(preg_match("/$item\$/i", $_FILES[$input_name]['name'])){
$data['script_error_upload']['msg'] = 'Некоректне розширення файлу '.$_FILES[$input_name]['name'].'. Ви можете завантажити графічні файли та файли з розширенням .pdf.';
$data['script_error_upload']['type'] = 'error';
return $this->render('services_zmina_email_z_t/step3.html.twig', $data);
}
}
$maxsize = 10 * 1024 * 1024;
if ($_FILES[$input_name]['size'] > $maxsize) {
$data['script_error_upload']['msg'] = 'Розмір файлу '.$_FILES[$input_name]['name'].' перевищує 10 Mb. Ви можете завантажити файли розміром до 10 Mb.';
$data['script_error_upload']['type'] = 'error';
return $this->render('services_zmina_email_z_t/step3.html.twig', $data);
}
$type_file = explode('/', $_FILES[$input_name]['type']);
if ($type_file[0] != 'image' && $_FILES[$input_name]['type'] != 'application/pdf'){
$data['script_error_upload']['msg'] = 'Некоректний тип файлу '.$_FILES[$input_name]['name'].'. Ви можете завантажити графічні файли та файли з розширенням .pdf.';
$data['script_error_upload']['type'] = 'error';
return $this->render('services_zmina_email_z_t/step3.html.twig', $data);
}
$file_name = str_replace(' ', '_', $request->getUserName());
$file_name = mb_strtoupper($lib->TranslitString($file_name));
$file_name = $file_name.'_'.$request->getService().'_'.$i.'.'.$fileinfo;
if (move_uploaded_file($_FILES[$input_name]['tmp_name'], $_SERVER['DOCUMENT_ROOT'] . '/uploads/file/tmp/' . $file_name)){
$file_name_str .= $file_name.'*|*';
}
else {
$data['script_error_upload']['msg'] = 'Не вдалось завантажити файл '.$_FILES[$input_name]['name'];
$data['script_error_upload']['type'] = 'error';
return $this->render('services_zmina_email_z_t/step3.html.twig', $data);
}
}
else {
$data['script_error_upload']['msg'] = 'Не вдалось завантажити файл '.$_FILES[$input_name]['name'];
$data['script_error_upload']['type'] = 'error';
return $this->render('services_zmina_email_z_t/step3.html.twig', $data);
}
}
}
if ('' != $file_name_str){
$file_name_str = substr($file_name_str, 0, -3);
}
else {
$file_name_str = 'no_file';
}
$online_record->setFiles($file_name_str);
$entityManager->flush();
$sign_deeplink = $lib->getSignatureDeeplink($entityManager, $_POST["request"]);
$data['dynamic_deeplink'] = $sign_deeplink['action'];
$data['service'] = $sign_deeplink['service'];
if ($sign_deeplink['device_type'] == 'computer'){
$data['end_script_pc'] = 'computer';
}
else {
$data['end_script_mobile'] = 'mobile';
}
}
return $this->render('services_zmina_email_z_t/step3.html.twig', $data);
}
elseif (isset($userinfo['persuid']) && $userinfo['persuid'] > 0){
$data['occup_name'] = $userinfo['occup_name'];
$data['family'] = $userinfo['family'];
$data['persuid'] = $userinfo['persuid'];
$data['street_name'] = $userinfo['street_name'];
$session->remove('userinfo');
return $this->render('services_zmina_email_z_t/step2.html.twig', $data);
}
else {
return $this->StartPage($entityManager, $data);
}
}
private function StartPage(EntityManagerInterface $entityManager, $data){
$repository_osr = $entityManager->getRepository(LepDiiaOperRozp::class);
$osr = $repository_osr->findAll();
$i = 0;
foreach($osr as $item){
$data['rows'][$i]['id'] = $item->getId();
$data['rows'][$i]['name'] = $item->getName();
$data['rows'][$i]['selected'] = '';
if ($i == 0){
$data['rows'][$i]['selected'] = 'selected';
}
$i ++;
}
return $this->render('services_zmina_email_z_t/index.html.twig', $data);
}
}