<?php
declare(strict_types=1);
namespace App\Controller\Website;
use DateTime;
use Knp\Snappy\Pdf;
use App\Entity\Agent;
use Twig\Environment;
use App\Form\AgentType;
use App\Entity\Kategorie;
use App\Entity\PolicyOffer;
use App\Entity\PolicyClosed;
use Doctrine\ORM\Mapping\Id;
use setasign\Fpdi\Tfpdf\Fpdi;
use App\Form\PolicyClosedType;
use App\Service\SignalService;
use App\Repository\DiodaRepository;
use App\Service\BankAccountService;
use App\Entity\PolicyClosedVariants;
use App\Repository\ProduktRepository;
use App\Repository\SettingsRepository;
use App\Repository\KategorieRepository;
use App\Repository\PolicyTypeRepository;
use Doctrine\ORM\EntityManagerInterface;
use App\Repository\ClausesDictRepository;
use App\Repository\ModelOprawyRepository;
use App\Repository\PolicyOfferRepository;
use Sulu\Bundle\MediaBundle\Entity\Media;
use App\Repository\PolicyClosedRepository;
use Knp\Component\Pager\PaginatorInterface;
use App\Repository\ClosedPoliciesRepository;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Mailer\MailerInterface;
use App\Repository\ClausesOtherDictRepository;
use App\Repository\EducationalUnitsRepository;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Repository\PolicyClosedStatusRepository;
//use setasign\Fpdi\Fpdi;
use Symfony\Component\HttpFoundation\HeaderUtils;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Mime\Address as MimeAddress;
use Sulu\Bundle\HttpCacheBundle\Cache\SuluHttpCache;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
use Knp\Bundle\SnappyBundle\Snappy\Response\PdfResponse;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Hackzilla\PasswordGenerator\Generator\ComputerPasswordGenerator;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use Sulu\Bundle\WebsiteBundle\Resolver\TemplateAttributeResolverInterface;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Scheb\TwoFactorBundle\Security\TwoFactor\Provider\Google\GoogleAuthenticatorInterface;
/**
* @Route("/kategories")
*/
class KategoriesController extends AbstractController
{
private EntityManagerInterface $entityManager;
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
/**
* @Route("/{kategoria}", name="kategories")
* @Route("/", name="kategories_all", defaults={"kategoria"=0})
*/
public function index(
int $kategoria,
AuthenticationUtils $authenticationUtils,
TemplateAttributeResolverInterface $resolver,
Environment $twig,
KategorieRepository $kategorieRepository,
ProduktRepository $produktRepository,
ModelOprawyRepository $modeleOprawyRepository,
): Response {
$kategories = $kategorieRepository->findAll();
$oprawa = $modeleOprawyRepository->findBy(['kategoria' => $kategories]);
$response = new Response($twig->render(
'kategories/index.html.twig',
$resolver->resolve([
'kategories' => $kategories,
'modelOprawy' =>$oprawa,
])
));
$response->headers->set(SuluHttpCache::HEADER_REVERSE_PROXY_TTL, '604800'); // 604800 seconds = 1 week
// Uncached response private response (for controller containing user specific data):
$response->setPrivate();
$response->setMaxAge(0);
$response->setSharedMaxAge(0);
$response->headers->addCacheControlDirective('no-cache', true);
$response->headers->addCacheControlDirective('must-revalidate', true);
$response->headers->addCacheControlDirective('no-store', true);
return $response;
}
/**
* @Route("/{id}/produkty", name="produkty_w_kategorii")
*/
public function kategoriesProdukt(
$id,
TemplateAttributeResolverInterface $resolver,
Environment $twig,
KategorieRepository $kategorieRepository,
ProduktRepository $produktRepository,
ModelOprawyRepository $modeleOprawyRepository
): Response {
$selectedKategoria = $kategorieRepository->find($id);
//dd($selectedKategoria);
//$modeleOprawy = $modeleOprawyRepository->findBy([],['nazwa'=>'asc']);
if ($selectedKategoria) {
$modeleOprawy = $modeleOprawyRepository->findBy(['kategoria' => $selectedKategoria]);
// $produkts = $produktRepository->findBy(['modelOprawy'] => )
}
$response = new Response($twig->render(
'kategories/kategories-product.html.twig',
$resolver->resolve([
'kategoria' => $selectedKategoria,
'modeleOpraw' => $modeleOprawy,
//'produkty' => $produkts,
])
));
$response->headers->set(SuluHttpCache::HEADER_REVERSE_PROXY_TTL, '604800'); // 604800 seconds = 1 week
// Uncached response private response (for controller containing user specific data):
$response->setPrivate();
$response->setMaxAge(0);
$response->setSharedMaxAge(0);
$response->headers->addCacheControlDirective('no-cache', true);
$response->headers->addCacheControlDirective('must-revalidate', true);
$response->headers->addCacheControlDirective('no-store', true);
return $response;
}
/**
* @Route("/{id}/produkty/{slug}", name="produkt")
*/
public function showProduct(
string $slug,
TemplateAttributeResolverInterface $resolver,
Environment $twig,
KategorieRepository $kategorieRepository,
ProduktRepository $produktRepository,
DiodaRepository $diodaRepository,
): Response {
$product = $produktRepository->findOneBySlug('/' . $slug);
//dd($product);
$response = new Response($twig->render(
'kategories/product.html.twig',
$resolver->resolve([
//'kategoria' => $selectedKategoria,
'produkt' => $product,
])
));
$response->headers->set(SuluHttpCache::HEADER_REVERSE_PROXY_TTL, '604800'); // 604800 seconds = 1 week
// Uncached response private response (for controller containing user specific data):
$response->setPrivate();
$response->setMaxAge(0);
$response->setSharedMaxAge(0);
$response->headers->addCacheControlDirective('no-cache', true);
$response->headers->addCacheControlDirective('must-revalidate', true);
$response->headers->addCacheControlDirective('no-store', true);
return $response;
}
/**
* @Route("/{id}/produkty/{slug}/pdf", name="pdf")
*/
public function showPdf(
string $slug,
TemplateAttributeResolverInterface $resolver,
Environment $twig,
KategorieRepository $kategorieRepository,
ProduktRepository $produktRepository,
DiodaRepository $diodaRepository,
Pdf $knpSnappyPdf,
Request $request
)
{
$product = $produktRepository->findOneBySlug('/' . $slug);
//
//dd($product);
$date = new DateTime();
$fdate = $date->format('d.m.Y');
$html = $this->renderView('kategories/product-pdf.html.twig', array(
'produkt' => $product,
'date' => $fdate
));
//dd($product);
//$site_url = "{$_SERVER['REQUEST_SCHEME']}://{$_SERVER['HTTP_HOST']}";
//$html = preg_replace('/(<img.*?src=")(?!http)(.*">)/',"$1$site_url/$2",$html);
//dd($html);
// $response = new Response($twig->render(
// 'kategories/product-pdf.html.twig',
// $resolver->resolve([
// //'kategoria' => $selectedKategoria,
// 'produkt' => $product,
// 'date' => $fdate
// ])
// ));
// return $response;
$result = $date->format('Y-m-d H.i');
$string = preg_replace('/[^A-Za-z0-9\- ]/', '', $product->getNazwa());
return new PdfResponse(
$knpSnappyPdf->getOutputFromHtml($html, [
'enable-javascript' => true,
'javascript-delay' => 1000,
'no-stop-slow-scripts' => true,
'no-background' => false,
'lowquality' => true,
'page-size' => 'A4',
'encoding' => 'utf-8',
'images' => true,
'cookie' => array(),
'dpi' => 72,
'enable-external-links' => true,
'enable-internal-links' => true
]), $string.' '.$result.'.pdf'
);
}
/**
* @Route("/{id}/produkty/{slug}/pdf_en", name="pdfEN")
*/
public function showPdfEN(
string $slug,
TemplateAttributeResolverInterface $resolver,
Environment $twig,
KategorieRepository $kategorieRepository,
ProduktRepository $produktRepository,
DiodaRepository $diodaRepository,
Pdf $knpSnappyPdf,
Request $request
)
{
$product = $produktRepository->findOneBySlug('/' . $slug);
//
//dd($slug);
// dd($product);
$date = new DateTime();
$fdate = $date->format('d.m.Y');
$html = $this->renderView('kategories/product-pdf-eng.html.twig', array(
'produkt' => $product,
'date' => $fdate
));
//dd($product);
//$site_url = "{$_SERVER['REQUEST_SCHEME']}://{$_SERVER['HTTP_HOST']}";
//$html = preg_replace('/(<img.*?src=")(?!http)(.*">)/',"$1$site_url/$2",$html);
//dd($html);
// $response = new Response($twig->render(
// 'kategories/product-pdf.html.twig',
// $resolver->resolve([
// //'kategoria' => $selectedKategoria,
// 'produkt' => $product,
// ])
// ));
// return $response;
$result = $date->format('Y-m-d H.i');
$string = preg_replace('/[^A-Za-z0-9\- ]/', '', $product->getNazwa());
return new PdfResponse(
$knpSnappyPdf->getOutputFromHtml($html, [
'enable-javascript' => true,
'javascript-delay' => 1000,
'no-stop-slow-scripts' => true,
'no-background' => false,
'lowquality' => true,
'page-size' => 'A4',
'encoding' => 'utf-8',
'images' => true,
'cookie' => array(),
'dpi' => 72,
'enable-external-links' => true,
'enable-internal-links' => true
]), $string.' '.$result.'.pdf'
);
}
/**
* @Route("/{id}/produkty/{slug}/CE", name="CEdeclaration")
*/
public function showCEdeclaration(
string $slug,
TemplateAttributeResolverInterface $resolver,
Environment $twig,
KategorieRepository $kategorieRepository,
ProduktRepository $produktRepository,
DiodaRepository $diodaRepository,
Pdf $knpSnappyPdf,
Request $request
)
{
$product = $produktRepository->findOneBySlug('/' . $slug);
//
//dd($product);
$date = new DateTime();
$fdate = $date->format('d.m.Y');
$html = $this->renderView('kategories/product-CE.html.twig', array(
'produkt' => $product,
'date' => $fdate
));
$result = $date->format('Y-m-d H.i');
$string = preg_replace('/[^A-Za-z0-9\- ]/', '', $product->getNazwa());
// $response = new Response($twig->render(
// 'kategories/product-CE.html.twig',
// $resolver->resolve([
// //'kategoria' => $selectedKategoria,
// 'produkt' => $product,
// 'date' => $fdate
// ])
// ));
// return $response;
return new PdfResponse(
$knpSnappyPdf->getOutputFromHtml($html, [
'enable-javascript' => true,
'javascript-delay' => 1000,
'no-stop-slow-scripts' => true,
'no-background' => false,
'lowquality' => true,
'page-size' => 'A4',
'encoding' => 'utf-8',
'images' => true,
'cookie' => array(),
'dpi' => 72,
'enable-external-links' => true,
'enable-internal-links' => true
]), $string.' '.$result.'CE'.'.pdf'
);
}
/**
* @Route("/{id}/produkty/{slug}/plikFoto", name="plikFoto")
*/
public function getFotoFile (
string $slug,
ProduktRepository $produktRepository,
) : Response
{
$product = $produktRepository->findOneBySlug('/' . $slug);
$file = $product->getPlikFotometryczny();
$request = Request::createFromGlobals();
$serverUrl = 'https://cora.pl/';
//$serverUrl = $request->server->get('SYMFONY_PROJECT_DEFAULT_ROUTE_URL');
$file = str_replace('#', '%23', $file);
$file = trim($file);
$fileUrl = $serverUrl . $file;
$fileContents = file_get_contents($fileUrl);
$fileName = $product->getKod() .'.ldt';
$response = new Response($fileContents);
$disposition = HeaderUtils::makeDisposition(
HeaderUtils::DISPOSITION_ATTACHMENT,
$fileName
);
$response->headers->set('Content-Disposition', $disposition);
$response->headers->set(SuluHttpCache::HEADER_REVERSE_PROXY_TTL, '604800'); // 604800 seconds = 1 week
// Uncached response private response (for controller containing user specific data):
$response->setPrivate();
$response->setMaxAge(0);
$response->setSharedMaxAge(0);
$response->headers->addCacheControlDirective('no-cache', true);
$response->headers->addCacheControlDirective('must-revalidate', true);
$response->headers->addCacheControlDirective('no-store', true);
return $response;
}
/**
* @Route("/{id}/produkty/{slug}/UKCA", name="UKCAdeclaration")
*/
public function showUKCAdeclaration(
string $slug,
TemplateAttributeResolverInterface $resolver,
Environment $twig,
KategorieRepository $kategorieRepository,
ProduktRepository $produktRepository,
DiodaRepository $diodaRepository,
Pdf $knpSnappyPdf,
Request $request
)
{
$product = $produktRepository->findOneBySlug('/' . $slug);
//
//dd($product);
$date = new DateTime();
$fdate = $date->format('d.m.Y');
$html = $this->renderView('kategories/product-UKCA.html.twig', array(
'produkt' => $product,
'date' => $fdate
));
$result = $date->format('Y-m-d H.i');
$string = preg_replace('/[^A-Za-z0-9\- ]/', '', $product->getNazwa());
// $response = new Response($twig->render(
// 'kategories/product-CE.html.twig',
// $resolver->resolve([
// //'kategoria' => $selectedKategoria,
// 'produkt' => $product,
// 'date' => $fdate
// ])
// ));
// return $response;
return new PdfResponse(
$knpSnappyPdf->getOutputFromHtml($html, [
'enable-javascript' => true,
'javascript-delay' => 1000,
'no-stop-slow-scripts' => true,
'no-background' => false,
'lowquality' => true,
'page-size' => 'A4',
'encoding' => 'utf-8',
'images' => true,
'cookie' => array(),
'dpi' => 72,
'enable-external-links' => true,
'enable-internal-links' => true
]), $string.' '.$result.'CE'.'.pdf'
);
}
}