<?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\Entity\LepDiiaPidrozdil;
use App\Entity\LepDiiaKomPro;
use App\Plugins\Library;
class ServicesDogovirElPobutController extends AbstractController
{
#[Route('/services/ukladannia_dogovoru_electropostachannia_pobut', name: 'app_services_dogovir_el_pobut')]
public function DogovirElPobut(EntityManagerInterface $entityManager): Response
{
$session = new Session();
$data = array();
$data['controller_name'] = 'ServicesDogovirElPobutController';
$data['version'] = rand(10, 1000);
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_dogovir_el_pobut/step4_error.html.twig', $data);
}
else {
return $this->render('services_dogovir_el_pobut/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_zaiava'] = 'Zaiava-Pryiednannia-Lvivenergozbut_New_Testovyi_Test1703071527.pdf';
$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'] = 'Паспорт громадянина України (для фізичних осіб).';
}
$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_dogovir_el_pobut/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_dogovir_el_pobut/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_dogovir_el_pobut/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_dogovir_el_pobut/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_dogovir_el_pobut/step3.html.twig', $data);
}
}
else {
$data['script_error_upload']['msg'] = 'Не вдалось завантажити файл '.$_FILES[$input_name]['name'];
$data['script_error_upload']['type'] = 'error';
return $this->render('services_dogovir_el_pobut/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_dogovir_el_pobut/step3.html.twig', $data);
}
else {
return $this->StartPage($entityManager, $data);
}
}
private function StartPage(EntityManagerInterface $entityManager, $data){
$repository_osr = $entityManager->getRepository(LepDiiaOperRozp::class);
$osr = $repository_osr->findBy(['active' => '1']);
$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 ++;
}
$repository_cok = $entityManager->getRepository(LepDiiaPidrozdil::class);
$cok = $repository_cok->findAll();
$i = 0;
foreach($cok as $item){
$data['cok_rows'][$i]['cok_id'] = $item->getId();
$data['cok_rows'][$i]['cok_name'] = $item->getName();
$i ++;
}
$repository_kom = $entityManager->getRepository(LepDiiaKomPro::class);
$kom = $repository_kom->findBy(['type_pr' => 'pobut']);
$i = 0;
foreach($kom as $item){
$data['kom_rows'][$i]['kom_id'] = $item->getId();
$data['kom_rows'][$i]['kom_name'] = $item->getNamePr();
$data['kom_rows'][$i]['kom_url'] = $item->getUrlPr();
$i ++;
}
return $this->render('services_dogovir_el_pobut/index.html.twig', $data);
}
}