<?php
namespace App\Controller;
use App\Feeds\FeedType;
use App\Feeds\Jurgiokepure;
use App\Feeds\ManoSeimasAgendaFraction;
use App\Feeds\ManoSeimasAgendaPerson;
use App\Feeds\ManoSeimasComittee;
use App\Feeds\ManoSeimasLaws;
use App\Feeds\ManoSeimasLegislation;
use App\Feeds\ManoSeimasPermits;
use App\Feeds\ManoSeimasProjects;
use App\Feeds\SkaidrumasDefenceCompanies;
use App\Feeds\SkaidrumasGovernmentCompanies;
use App\Feeds\SkaidrumasPrivateCompanies;
use App\Feeds\SkaidrumasSuppliers;
use App\Feeds\Stirna;
use App\Feeds\TransparencyPosts;
use App\Feeds\TransparencyPostsEn;
use App\Manager\ElasticManager;
use App\Manager\Importer;
use http\Client\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class TestController extends AbstractController
{
/**
* @Route("/", name="homepage")
*/
public function test(ElasticManager $elastic, Importer $importer): Response
{
// $importer->import(new ManoSeimasComittee());
$importer->import(new TransparencyPosts());
$importer->import(new TransparencyPostsEn());
$elastic->createIndex();
$elastic->populate();
die();
$importer->import(new Jurgiokepure());
$importer->import(new ManoSeimasAgendaFraction());
$importer->import(new ManoSeimasAgendaPerson());
$importer->import(new ManoSeimasComittee());
$importer->import(new ManoSeimasLaws());
$importer->import(new ManoSeimasLegislation());
$importer->import(new ManoSeimasPermits());
$importer->import(new SkaidrumasDefenceCompanies());
$importer->import(new SkaidrumasGovernmentCompanies());
$importer->import(new SkaidrumasPrivateCompanies());
$importer->import(new SkaidrumasSuppliers());
$importer->import(new Stirna());
$importer->import(new TransparencyPosts());
$elastic->createIndex();
$elastic->populate();
return $this->render('test.html.twig');
}
/**
* @Route("/test_search", name="test_search")
*/
public function testSearch()
{
return $this->render('search.html.twig');
}
/**
* @Route("/test_search/{search}/{language}", name="test_search_process")
*/
public function testSearchProcess(string $search, ElasticManager $elastic, string $language)
{
if ($language === 'en') {
// Do not include this one
$languageSource = 'Transparency.lt';
} else if ($language === 'lt') {
$languageSource = 'Transparency.lt/en';
}
$groups = [
$elastic->searchByGroup($search, FeedType::GROUP_PERSON, $languageSource),
$elastic->searchByGroup($search, FeedType::GROUP_COMPANY, $languageSource),
$elastic->searchByGroup($search, FeedType::GROUP_COMMITTEE, $languageSource),
$elastic->searchByGroup($search, FeedType::GROUP_INSTITUTION, $languageSource),
$elastic->searchByGroup($search, FeedType::GROUP_LAWS, $languageSource),
$elastic->searchByGroup($search, FeedType::GROUP_OTHER, $languageSource),
];
$total = 0;
foreach ($groups as $group) {
$total += $group['total'];
}
$response = new JsonResponse();
$response->headers->set('Access-Control-Allow-Origin', '*');
$response->headers->set('Access-Control-Allow-Headers', '*');
$response->setData(['result'=> $this->renderView('result-group.html.twig', [
'groups' => $groups,
'total' => $total,
'search' => $search,
'itemsPerPage' => 6,
'language' => $language,
])]);
return $response;
}
/**
* @Route("/test_search_list/{page<\d+>?1}", name="test_search_list")
*/
public function testSearchList(Request $request, ElasticManager $elastic, int $page)
{
$search = $request->get('search');
$language = $request->get('lang');
if ($language === 'en') {
// Do not include this one
$languageSource = 'Transparency.lt';
} else if ($language === 'lt') {
$languageSource = 'Transparency.lt/en';
}
if ($language === 'en') {
$groups = [
$elastic->searchByGroup($search, FeedType::GROUP_OTHER, $languageSource, 1, 10),
$elastic->searchByGroup($search, FeedType::GROUP_PERSON, $languageSource, 1, 10),
$elastic->searchByGroup($search, FeedType::GROUP_COMPANY, $languageSource, 1, 10),
$elastic->searchByGroup($search, FeedType::GROUP_COMMITTEE, $languageSource, 1, 10),
$elastic->searchByGroup($search, FeedType::GROUP_INSTITUTION, $languageSource, 1, 10),
$elastic->searchByGroup($search, FeedType::GROUP_LAWS, $languageSource, 1, 10),
];
} else {
$groups = [
$elastic->searchByGroup($search, FeedType::GROUP_PERSON, $languageSource, 1, 10),
$elastic->searchByGroup($search, FeedType::GROUP_COMPANY, $languageSource, 1, 10),
$elastic->searchByGroup($search, FeedType::GROUP_COMMITTEE, $languageSource, 1, 10),
$elastic->searchByGroup($search, FeedType::GROUP_INSTITUTION, $languageSource, 1, 10),
$elastic->searchByGroup($search, FeedType::GROUP_LAWS, $languageSource, 1, 10),
$elastic->searchByGroup($search, FeedType::GROUP_OTHER, $languageSource, 1, 10),
];
}
$total = 0;
foreach ($groups as $group) {
$total += $group['total'];
}
return $this->render('result_list.html.twig', [
'groups' => $groups,
'total' => $total,
'search' => $search,
'itemsPerPage' => 10,
'language' => $language,
]);
}
/**
* @Route("/group_search_list/{group}/{page<\d+>?1}", name="group_search_list")
*/
public function groupSearchList(Request $request, ElasticManager $elastic, string $group, int $page)
{
$search = $request->get('search');
$groupData = FeedType::getGroupData($group);
if (!$groupData) {
return $this->render('group_result_list.html.twig', [
'search' => '',
'group' => '',
'page' => $page,
'items' => [],
'pagination' => [],
'total' => 0,
]);
}
$result = $elastic->searchByGroup($search, $groupData, $page, 10);
return $this->render('group_result_list.html.twig', [
'search' => $search,
'group' => $group,
'groupTitle' => $groupData['title'],
'page' => $page,
'items' => $result['items'],
'pagination' => $result['pagination'],
'total' => $result['total'],
]);
}
}