<?php
/**
* Created by PhpStorm.
* User: joakim
* Date: 2018-02-05
* Time: 08:38
*/
namespace App\Controller;
use App\Entity\Binocular;
use App\Entity\Chilitexts;
use App\Entity\Drivers;
use App\Entity\Foreignstarts;
use App\Entity\Gambling;
use App\Entity\Horses;
use App\Entity\Legtypecodes;
use App\Entity\Legtypes;
use App\Entity\Meetings;
use App\Entity\Races;
use App\Entity\Ranking;
use App\Entity\Results;
use App\Entity\Starts;
use App\Entity\Swechilitexts;
use App\Entity\Swegambling;
use App\Entity\Swemeetings;
use App\Entity\Trainers;
use App\Repository\RacesRepository;
use Detection\MobileDetect;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
// use Symfony\Component\Serializer\SerializerInterface;
// use Symfony\Component\Cache\Adapter\AdapterInterface;
use Symfony\Component\HttpFoundation\Response;
// use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
// use Symfony\Component\Translation\Translator;
use App\Twig\AppExtension;
class MainController extends AbstractController
{
private function cookie() {
if ($_SERVER['APP_ENV'] == 'dev') return true;
return (isset($_COOKIE['cid_tkr']));
}
public function getFooter()
{
return $this->render('footer.html.twig', [
'version' => TGNHESTEFAKTAVERSION,
]);
}
public function getDDbet($meeting)
{
$em = $this->getDoctrine()->getManager();
// Get races in meeting
$sql = 'select id from races r
where r.rac_mee_id = ' . $meeting . ' and r.rac_legtypes like "%DD%"
order by r.rac_raceno';
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$races_in_legtype = $statement->fetchAll();
// Get gambling for meeting
$sql = 'select * from gambling g
where g.id = ' . $meeting;
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$gambling_for_meeting = $statement->fetch();
$gambling_for_meeting = json_decode($gambling_for_meeting['gam_gambling'],1);
#dd($gambling_for_meeting);
$dd_for_legtype = $gambling_for_meeting['DD'];
#dd($dd_for_legtype);
$dd[0] = $dd_for_legtype[1];
$dd[1] = $dd_for_legtype[2];
foreach ($races_in_legtype as $key => $r) {
// Get ranking in race
$sql = 'select * from ranking r
where r.id = ' . $r['id'];
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$ranking_in_race = $statement->fetch();
$ranking_in_race = explode(',',$ranking_in_race['ran_rank']);
$ranking_in_race = array_slice($ranking_in_race,0,$dd[$key]);
#dd($ranking_in_race);
$ddarr[$key] = $ranking_in_race;
}
return $this->render('pages/ddbet.html.twig', [
'ddarr' => $ddarr,
]);
}
public function getSweDDbet($meeting)
{
$em = $this->getDoctrine()->getManager();
// Get races in meeting
$sql = 'select id from sweraces r
where r.swemeetings_id = ' . $meeting . ' and r.legtypes like "%DD%"
order by r.raceno';
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$races_in_legtype = $statement->fetchAll();
// Get gambling for meeting
$sql = 'select * from swegambling g
where g.id = ' . $meeting;
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$gambling_for_meeting = $statement->fetch();
$gambling_for_meeting = json_decode($gambling_for_meeting['gam_gambling'],1);
#dd($gambling_for_meeting);
$dd_for_legtype = $gambling_for_meeting['DD'];
$dd[0] = $dd_for_legtype[1];
$dd[1] = $dd_for_legtype[2];
foreach ($races_in_legtype as $key => $r) {
// Get ranking in race
$sql = 'select * from sweranking r
where r.id = ' . $r['id'];
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$ranking_in_race = $statement->fetch();
$ranking_in_race = explode(',',$ranking_in_race['ran_rank']);
$ranking_in_race = array_slice($ranking_in_race,0,$dd[$key]);
#dd($ranking_in_race);
$ddarr[$key] = $ranking_in_race;
}
return $this->render('pages/ddbet.html.twig', [
'ddarr' => $ddarr,
]);
}
/**
* @Route("/xxx/{meeting}/{legtype}", name="xxx_page")
*/
public function getStartlist($meeting,$legtype)
{
$em = $this->getDoctrine()->getManager();
// Get races in meeting
$sql = 'select * from races r
where r.rac_mee_id = ' . $meeting . ' and r.rac_legtypes like "%' . $legtype . '%"
order by r.rac_raceno';
#exit($sql);
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$races_in_legtype = $statement->fetchAll();
#dd($races_in_legtype);
// Check if races are V65 or V75 and includes DD
$sql = 'select * from races r
where r.rac_mee_id = ' . $meeting . ' and r.rac_legtypes like "%' . $legtype . '%DD"
order by r.rac_raceno';
#exit($sql);
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$ddraces_in_legtype = $statement->fetchAll();
#dd($ddraces_in_legtype);
if (count($ddraces_in_legtype) > 0) $hasDD = true;
else $hasDD = false;
// Get gambling for meeting
$sql = 'select * from gambling g
where g.id = ' . $meeting;
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$gambling_for_meeting = $statement->fetch();
$gambling_for_meeting = json_decode($gambling_for_meeting['gam_gambling'],1);
#dd($gambling_for_meeting);
$gambling_for_legtype = $gambling_for_meeting[$legtype];
#dd($gambling_for_legtype);
foreach ($races_in_legtype as $r) {
// Get ranking in race
$sql = 'select * from ranking r
where r.id = ' . $r['id'];
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$ranking_in_race = $statement->fetch();
#dd($ranking_in_race);
// Get starts in race
$sql = 'select s.sta_startno,h.hor_name from starts s
left join horses h on s.sta_hor_id = h.id
where s.sta_rac_id = ' . $r['id'] . ' and sta_startno in (' . $ranking_in_race['ran_rank'] . ')
order by field(s.sta_startno,' . $ranking_in_race['ran_rank'] . ')';
;
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$starts_in_race = $statement->fetchAll();
#dd($starts_in_race);
$races[$r['id']]['ranking'] = $starts_in_race;
#$races[$r['id']]['winningchance'] = explode(',',$ranking_in_race['ran_winningchance']);
}
#dd($races);
return $this->render('pages/startlist.html.twig', [
'races' => $races,
'legtype' => $legtype,
'gambling' => $gambling_for_legtype,
'hasDD' => $hasDD,
]);
}
/**
* @Route("/xxxSWE/{meeting}/{legtype}", name="xxxSWE_page")
*/
public function getSweStartlist($meeting,$legtype)
{
$em = $this->getDoctrine()->getManager();
// Get races in meeting
$sql = 'select * from sweraces r
where r.swemeetings_id = ' . $meeting . ' and r.legtypes like "%' . $legtype . '%"
order by r.raceno';
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$races_in_legtype = $statement->fetchAll();
#dd($races_in_legtype);
// Check if races are V65, V75 or V86 and includes DD
$sql = 'select * from sweraces r
where r.swemeetings_id = ' . $meeting . ' and r.legtypes like "%' . $legtype . '%DD%"
order by r.raceno';
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$ddraces_in_legtype = $statement->fetchAll();
#dd($ddraces_in_legtype);
if (count($ddraces_in_legtype) > 0) $hasDD = true;
else $hasDD = false;
// Get gambling for meeting
$sql = 'select * from swegambling g
where g.id = ' . $meeting;
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$gambling_for_meeting = $statement->fetch();
$gambling_for_meeting = json_decode($gambling_for_meeting['gam_gambling'],1);
#dd($gambling_for_meeting);
$gambling_for_legtype = $gambling_for_meeting[$legtype];
#dd($gambling_for_legtype);
foreach ($races_in_legtype as $r) {
// Get ranking in race
$sql = 'select * from sweranking r
where r.id = ' . $r['id'];
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$ranking_in_race = $statement->fetch();
#dd($ranking_in_race);
// Get starts in race
$sql = 'select s.startno,h.name from swestarts s
left join swehorses h on s.swehorses_id = h.id
where s.sweraces_id = ' . $r['id'] . ' and startno in (' . $ranking_in_race['ran_rank'] . ')
order by field(s.startno,' . $ranking_in_race['ran_rank'] . ')';
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$starts_in_race = $statement->fetchAll();
#dd($starts_in_race);
$races[$r['id']]['ranking'] = $starts_in_race;
#$races[$r['id']]['winningchance'] = explode(',',$ranking_in_race['ran_winningchance']);
}
return $this->render('pages/startlistSWE.html.twig', [
'races' => $races,
'legtype' => $legtype,
'gambling' => $gambling_for_legtype,
'hasDD' => $hasDD,
]);
}
public function getDDStartlist($meeting,$legtype)
{
$em = $this->getDoctrine()->getManager();
// Get races in meeting
$sql = 'select r.id from races r
where r.rac_mee_id = ' . $meeting . ' and r.rac_legtypes like "' . $legtype . '%DD"
order by r.rac_raceno';
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$races_in_legtype = $statement->fetchAll();
// Get gambling for meeting
$sql = 'select * from gambling g
where g.id = ' . $meeting;
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$gambling_for_meeting = $statement->fetch();
$gambling_for_meeting = json_decode($gambling_for_meeting['gam_gambling'],1);
$gambling_for_legtype = $gambling_for_meeting[$legtype];
foreach ($races_in_legtype as $key => $r) {
// Get ranking in race
$sql = 'select * from ranking r
where r.id = ' . $r['id'];
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$ranking_in_race = $statement->fetch();
// Get starts in race
$sql = 'select s.sta_startno,h.hor_name from starts s
left join horses h on s.sta_hor_id = h.id
where s.sta_rac_id = ' . $r['id'] . ' and sta_startno in (' . $ranking_in_race['ran_rank'] . ')
order by field(s.sta_startno,' . $ranking_in_race['ran_rank'] . ')';
;
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$starts_in_race = $statement->fetchAll();
$races[$r['id']]['ranking'] = $starts_in_race;
}
return $this->render('pages/startlistDD.html.twig', [
'races' => $races,
'legtype' => $legtype,
'gambling' => $gambling_for_legtype,
]);
}
/**
* @Route("/", name="app_homepage")
*/
public function homepage()
{
$allowed = self::cookie();
if (!$allowed) { return $this->redirect('https://tgn.no/hestefakta-tips-og-spill/'); }
$em = $this->getDoctrine()->getManager();
$today = date('Y-m-d');
$sql = 'select m.id as mee_id,m.mee_date as date,m.mee_firstracestart as firstracestart,m.mee_legtypes as legtypes,t.trk_shortname as shortname,"NOR" as country,c.cht_image as image,c.cht_text as text,c.cht_ready as ready from meetings m
left join tracks t on m.mee_tra_id = t.id
left join chilitexts c on m.id = c.id
where m.mee_date >= "' . $today . '" and m.mee_legtypes != ""
union
select sm.id as mee_id,sm.date,sm.firstracestart,sm.legtypes,st.shortname,"SWE" as country,sc.cht_image as image,sc.cht_text as text,sc.cht_ready as ready from swemeetings sm
left join swetracks st on sm.track_id = st.id
left join swechilitexts sc on sm.id = sc.id
where sm.date >= "' . $today . '" and sm.legtypes != "" and sc.cht_ready = true
order by date asc,firstracestart asc';
#pre($sql,1);
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$meetings = $statement->fetchAll();
$pattern = "#<\s*?p\b[^>]*>(.*?)</p\b[^>]*>#s";
foreach ($meetings as $key => $m) {
preg_match($pattern, $m['text'], $matches);
$meetings[$key]['title'] = isset($matches[1]) ? strip_tags($matches[1]) : '';
$meetings[$key]['legtypes'] = sortLegtypes($meetings[$key]['legtypes']);
}
#dd($meetings);
return $this->render('homepage2.html.twig', [
'meetings' => $meetings,
]);
}
/**
* @Route("/OLD", name="app_homepageOLD")
*/
public function homepageOLD()
{
$allowed = self::cookie();
if (!$allowed) { return $this->redirect('https://tgn.no/hestefakta-tips-og-spill/'); }
$intwodays= new \DateTime('+2 day');
$tomorrow= new \DateTime('+1 day');
$months = array('', 'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember');
$days = array('', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag', 'søndag');
$products = $this->getDoctrine()->getRepository(Races::class)->listAllObjects();
#pre($products,1);
$legtypes = $this->getDoctrine()->getRepository(Races::class) ->getLegTypes();
$em = $this->getDoctrine()->getManager();
// Get races in meeting
// select(array('r.id','r.rac_racetype_code', 'r.rac_name','r.rac_raceno','r.rac_mee_id','m.mee_date','t.trk_trackname','t.trk_shortname','t.id as t_id', 'r.rac_starttime','r.rac_basedist', 'm.mee_firstracestart'))
$sql = 'select r.id from sweraces r
left join swemeetings s on r.swemeetings_id = s.id
where s.date >= "' . date('Y-m-d') . '"';
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$races = $statement->fetchAll();
#dd($races);
$binoculars = $this->getDoctrine()->getRepository(Binocular::class)->findActive();
foreach ($binoculars as $key => $b) {
$pattern = "#<\s*?p\b[^>]*>(.*?)</p\b[^>]*>#s";
preg_match($pattern, $b['txt'], $matches);
$binoculars[$key]['binocular_title'] = $matches[1];
}
if ($products) {
$traName = 'Alle baner';
$articleContent = 'Info for alle baner';
} else {
$traName = 'Ingen info';
$articleContent = '';
}
$arr = array();
foreach ($products as $prod) {
$p = $this->getDoctrine()->getRepository(Chilitexts::class)->find($prod['rac_mee_id']);
if ($p) {
if ($p->getChtReady()) {
$pattern = "#<\s*?p\b[^>]*>(.*?)</p\b[^>]*>#s";
preg_match($pattern, $p->getChtText(), $matches);
$tt = $matches[1];
$bt = $p->getChtImageCaption();
} else {
$tt = '<br>';
$bt = '';
}
if ($p->getChtImage() == '/assets/img/noimage.jpg') {
$img = '/img/trav.jpg';
if ($prod['t_id'] == 207) $img = '/img/galopp.jpg';
array_push($arr, array('id'=>$p->getId(),'img'=>$img,'caption'=>$bt,'title'=>$tt));
} else {
array_push($arr, array('id'=>$p->getId(),'img'=>$p->getChtImage(),'caption'=>$bt,'title'=>$tt));
}
}
}
#pre($arr,1);
return $this->render('homepage.html.twig', [
'title' => $traName,
'articleContent' => $articleContent,
'dbData' => $traName,
'all' => $products,
'leg' => $legtypes,
'months' => $months,
'days' => $days,
'tomorrow' => $tomorrow,
'intwodays' => $intwodays,
'binocular' => $binoculars,
'pp' => $arr
]);
}
/**
* @Route("/images/{query}", name="app_img")
*/
public function images($query){
/*
$ch = new \curl_init('http://fotoweb.raaness.no/fotoweb/archives/5001-bildearkiv/?q=100');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Accept: application/vnd.fotoware.assetlist+json'
)
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
$result = json_decode(curl_exec($ch), true);
var_dump($result);
return $this->render('pages/images.html.twig', ['name' => $result]);
*/
}
/**
* @Route("/horses/{horse}", name="app_horses")
*/
public function horses($horse)
{
$allowed = self::cookie();
if (!$allowed) { return $this->redirect('https://tgn.no/hestefakta-tips-og-spill/'); }
if($horse == 'all'){
$horseSel = 'all';
$info = '';
$owners = '';
$trainers = '';
$father = '';
$mother = '';
$grandfather = '';
$result = '';
$comments = '';
$arr = '';
$searchfor = '';
} else {
$owners = '';
$trainers = '';
$searchfor = '';
$horseSel = $this->getDoctrine()->getRepository(Horses::class)->getObject($horse);
$info = $this->getDoctrine()->getRepository(Results::class)->getHorseInfo($horse);
$arr = array();
for ($x = 0; $x < count($info); $x++) {
$m = json_decode($info[$x]['rac_racepurse']);
$p = 0;
$pL = 0;
if($m){
foreach ($m as $y) {
if(intval($y)>$pL){
$p = intval($y);
}
$pL = intval($y);
}
}
array_push($arr, $p);
}
$horseFather = $this->getDoctrine()
->getRepository(Horses::class)
->find($horse)->getHorFatherId();
if($horseFather){
$father = $this->getDoctrine()->getRepository(Horses::class)->find($horseFather);
} else {
$father = '';
}
$horseMother = $this->getDoctrine()->getRepository(Horses::class)->find($horse)->getHorMotherId();
$grandfather = '';
if($horseMother){
$mother = $this->getDoctrine()->getRepository(Horses::class)->find($horseMother);
if($this->getDoctrine()->getRepository(Horses::class)->find($mother)->getHorFatherId()){
$grandfather = $this->getDoctrine()->getRepository(Horses::class)->find($mother->getHorFatherId());
}
} else {
$mother = '';
}
/*
$result = $this->getDoctrine()
->getRepository(Results::class)
->getResInfo($horse);
*/
$result = '';
$comments = $this->getDoctrine()
->getRepository(Starts::class)
->getHorseComments($horse);
}
return $this->render('pages/searchresult.html.twig', [
'horse' => $horseSel,
'result' => $result,
'info' => $info,
'father' => $father,
'mother' => $mother,
'grandfather' => $grandfather,
'comments' => $comments,
'arr' => $arr,
'searchfor' => $searchfor,
]);
}
/**
* @Route("/search/{kind}", name="app_search", methods={"GET","POST"})
*/
public function search($kind) {
$searchfor = '';
switch ($kind) {
case 'horse':
if (isset($_POST['horse_name'])) {
if($_POST['horse_name'] !== '') {
$searchfor = $_POST['horse_name'];
$horses = $this->getDoctrine()
->getRepository(Horses::class)
->searchObject($searchfor);
$drivers = $this->getDoctrine()
->getRepository(Drivers::class)
->searchObject($searchfor);
#dd($drivers);
$trainers = $this->getDoctrine()
->getRepository(Trainers::class)
->searchObject($searchfor);
$list = ['horses' => $horses, 'drivers' => $drivers, 'trainers' => $trainers];
} else {
return $this->redirectToRoute('app_horses', ['horse'=>'all','result'=>'']);
}
} else {
return $this->redirectToRoute('app_horses', ['horse'=>'all','result'=>'']);
}
return $this->render('pages/searchresult.html.twig', [
'horse' => 'all',
'result' => $list,
'info' => '',
'searchfor' => $searchfor,
]);
break;
case 'results':
$list = $this->getDoctrine()
->getRepository(Races::class)
->searchObjects($_POST['result']);
$title = 'Results';
return $this->render('pages/results.html.twig', [
'title' => $title,
'list' => $list,
]);
break;
default:
return $this->render('pages/searchresult.html.twig', [
'horse' => 'all',
'result' => $list,
'info' => '',
'searchfor' => $searchfor,
]);
break;
}
}
/**
* @Route("/tipsSWE/{mee_id}", name="app_tips_swe")
*/
public function tipsSWE($mee_id){
$allowed = self::cookie();
if (!$allowed) { return $this->redirect('https://tgn.no/hestefakta-tips-og-spill/'); }
$em = $this->getDoctrine()->getManager();
$sql = 'select s.*,t.shortname from swemeetings s
left join swetracks t on s.track_id = t.id
where s.id = ' . $mee_id;
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$meeting = $statement->fetch();
#dd($meeting);
$meeting['legtypes'] = sortLegtypes($meeting['legtypes']);
$text = $em->getRepository(Swechilitexts::class)->find($mee_id);
$gambling = $em->getRepository(Swegambling::class)->find($mee_id);
$gambling = json_decode($gambling->getGamGambling(),1);
// $date = new \DateTime('+2 hours');
// $intwodays= new \DateTime('+2 day');
// $tomorrow= new \DateTime('+1 day');
// if ($meeting == 'all') $products = '';
// else $products = $this->getDoctrine()->getRepository(Races::class)->getTrack($meeting);
//
// $races = $this->getDoctrine()->getRepository(Races::class)->listAllObjects();
// $info = $this->getDoctrine()->getRepository(Chilitexts::class) ->findChiliData($meeting);
// #dd($info);
// $legtypes = $this->getDoctrine()->getRepository(Races::class) ->getLegTypes();
//
// $betting = $this->getDoctrine()->getRepository(Gambling::class)->find($meeting);
// #dd($betting);
// if ($betting) $gambling = json_decode($betting->getGamGambling(),1);
// else $gambling = [];
// #dd($gambling);
return $this->render('pages/tipsSWE.html.twig', [
'meeting' => $meeting,
'text' => $text,
'gambling' => $gambling,
// 'title' => $meeting,
// 'all' => $products,
// 'races' => $races,
// 'info' => $info,
// 'tomorrow' => $tomorrow,
// 'intwodays' => $intwodays,
// 'date' => $date,
// 'leg' => $legtypes,
// 'gambling' => $gambling,
]);
}
/**
* @Route("/tips/{meeting}", name="app_tips")
*/
public function tips($meeting){
$allowed = self::cookie();
if (!$allowed) { return $this->redirect('https://tgn.no/hestefakta-tips-og-spill/'); }
$date = new \DateTime('+2 hours');
$intwodays= new \DateTime('+2 day');
$tomorrow= new \DateTime('+1 day');
if ($meeting == 'all') $products = '';
else $products = $this->getDoctrine()->getRepository(Races::class)->getTrack($meeting);
$races = $this->getDoctrine()->getRepository(Races::class)->listAllObjects();
$info = $this->getDoctrine()->getRepository(Chilitexts::class) ->findChiliData($meeting);
#dd($info);
$legtypes = $this->getDoctrine()->getRepository(Races::class) ->getLegTypes();
$betting = $this->getDoctrine()->getRepository(Gambling::class)->find($meeting);
#dd($betting);
if ($betting) $gambling = json_decode($betting->getGamGambling(),1);
else $gambling = [];
#dd($gambling);
return $this->render('pages/tips.html.twig', [
'title' => $meeting,
'all' => $products,
'races' => $races,
'info' => $info,
'tomorrow' => $tomorrow,
'intwodays' => $intwodays,
'date' => $date,
'leg' => $legtypes,
'gambling' => $gambling,
]);
}
/**
* @Route("/res/{race}", name="app_res", methods={"GET","POST"})
*/
public function res($race){
if ($race == 'all') {
$products = '';
$results = '';
$legTypes = '';
} else {
$products = $this->getDoctrine()->getRepository(Races::class)->getTrack($race);
$results = $this->getDoctrine()->getRepository(Results::class)->sortRace($race);
$legTypes = $this->getDoctrine() ->getRepository(Races::class)->getLegTypesRace($race);
}
$r = '1';
if ($this->request->getRealMethod() == 'get') {
$r = '2';
}
$resultsX = $this->getDoctrine()->getRepository(Results::class)->sortRaceTestRace($race);
return $this->render('includes/res.html.twig', [
'all' => $products,
'results' => $results,
'legtypes' => $legTypes,
'race' => $r,
'new' => $resultsX
]);
}
/**
* @Route("/resu/{mee_id}/{lop}", name="app_resu")
*/
public function resu($mee_id,$lop){
if ($mee_id=='all') {
$races = '';
$results = '';
$legTypes = '';
$active = 0;
} else {
$races = $this->getDoctrine()->getRepository(Races::class)->getTrack($mee_id);
$results = $this->getDoctrine()->getRepository(Results::class)->sortRace($mee_id);
$legTypes = $this->getDoctrine()->getRepository(Races::class)->getLegTypesRace($mee_id);
$mm = $this->getDoctrine()->getRepository(Meetings::class)->findActive($mee_id);
$active = $mm[0]['mee_comments_ready'];
}
$resultsX = $this->getDoctrine()->getRepository(Results::class)->sortRaceTestRace($mee_id);
$ff = array_merge($results,$resultsX);
return $this->render('includes/res.html.twig', [
'all' => $races,
'results' => $ff,
'legtypes' => $legTypes,
'race' => $lop,
'new' => $resultsX,
'active' => $active
]);
}
/**
* @Route("/resuX/{mee_id}", name="results_page")
*/
public function resuX($mee_id) {
$results = $this->getDoctrine()->getRepository(Results::class)->getAllResultsForMeeting($mee_id);
#dd($results);
$resultsArray = [];
foreach ($results as $result) {
#dd($result);
$resultsArray[$result['res_rac_id']]['result'][] = $result;
$prices = json_decode($result['rac_racepurse'],1);
$resultsArray[$result['res_rac_id']]['firstprice'] = $prices[1];
}
#pre($resultsArray,1);
$html = $this->renderView('includes/resX.html.twig', [
'results' => $resultsArray,
]);
return new JsonResponse(array('status' => 'success', 'html' => $html));
}
/**
* @Route("/driver/{driver}", name="app_driver")
*/
public function driver($driver){
$results = $this->getDoctrine()
->getRepository(Drivers::class)
->getDriverInfo($driver);
$info = $this->getDoctrine()
->getRepository(Results::class)
->getDriverInfo($driver);
$arr = array();
for ($x = 0; $x < count($info); $x++) {
$m = json_decode($info[$x]['rac_racepurse']);
$p = 0;
$pL = 0;
if($m){
foreach ($m as $y) {
if(intval($y)>$pL){
$p = intval($y);
}
$pL = intval($y);
}
}
array_push($arr, $p);
}
return $this->render('pages/driver.html.twig', [
'info' => $info,
'results' => $results,
'arr' => $arr,
]);
}
/**
* @Route("/trainer/{trainer}", name="app_trainer")
*/
public function trainer($trainer){
$results = $this->getDoctrine()
->getRepository(Trainers::class)
->getTrainerInfo($trainer);
$info = $this->getDoctrine()
->getRepository(Results::class)
->getTrainerInfo($trainer);
$arr = array();
for ($x = 0; $x < count($info); $x++) {
$m = json_decode($info[$x]['rac_racepurse']);
$p = 0;
$pL = 0;
if($m) {
foreach ($m as $y) {
if(intval($y)>$pL){
$p = intval($y);
}
$pL = intval($y);
}
}
array_push($arr, $p);
}
return $this->render('pages/trainer.html.twig', [
'info' => $info,
'results' => $results,
'arr' => $arr,
]);
}
/**
* @Route("/latestfiveforhorse/{horse}/{beforedate}", name="getLatestFiveForHorsePAGE")
*/
public function getLatestFiveForHorse($horse,$beforedate)
{
$xx = $this->getDoctrine()->getRepository(Results::class)->getLastFive($horse,$beforedate);
$xy = $this->getDoctrine()->getRepository(Foreignstarts::class)->getLastFive($horse,$beforedate);
$newXXX = array_merge($xx, $xy);
usort($newXXX, function($a, $b) { return $a['mee_date'] <=> $b['mee_date']; });
dd($newXXX);
// $last5 = getLatestResultsForHorseBeforeMeeting($meeting,$horse,3,5);
// dd($last5);
}
/**
* @Route("/latestfiveforrace/{race}", name="getLatestFiveForRacePAGE")
*/
public function getLatestFiveForRace($race)
{
// $last5 = getLatestResultsForHorseBeforeMeeting($meeting,$horse,3,5);
// dd($last5);
}
/**
* @Route("/progX/{meeting}", name="app_proX")
*/
public function progX($meeting)
{
$md = new MobileDetect();
$em = $this->getDoctrine()->getManager();
$chilitext = $em->getRepository(Chilitexts::class)->find($meeting);
// Get races in meeting
$sql = 'select * from races r
where r.rac_mee_id = ' . $meeting . '
order by r.rac_raceno asc';
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$rim = [];
while ($race = $statement->fetch()) $rim[$race['id']] = $race;
#dd($races_in_meeting);
// Get starts in meeting
$sql = 'select s.id as sta_id,s.*,r.id as rac_id,r.*,h.id as hor_id,h.*,o.id as hos_id,o.* from starts s
left join races r on s.sta_rac_id = r.id
left join horses h on s.sta_hor_id = h.id
left join horsestats o on s.sta_hor_id = o.id
where s.sta_mee_id = ' . $meeting . '
order by r.rac_raceno,r.rac_starttime,s.sta_startno';
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$races = [];
while ($start = $statement->fetch()) {
$father = getHorseNameFromId($start['hor_father_id']);
$mother = getHorseNameFromId($start['hor_mother_id']);
$driver = getDriverNameFromId($start['sta_dri_id']);
$trainer = getTrainerNameFromId($start['hor_tra_id']);
$start['father'] = $father;
$start['mother'] = $mother;
$start['driver'] = $driver;
$start['trainer'] = $trainer;
$beforedate = date('Ymd',strtotime($start['rac_startdate']));
$lastFiveDomestic = $this->getDoctrine()->getRepository(Results::class)->getLastFive($start['sta_hor_id'],$beforedate);
$lastFiveForeign = $this->getDoctrine()->getRepository(Foreignstarts::class)->getLastFive($start['sta_hor_id'],$beforedate);
#if ($start['sta_hor_id'] == 30090831) dd($lastFiveForeign);
$lastFive = array_merge($lastFiveDomestic, $lastFiveForeign);
usort($lastFive, function($a, $b) { return $a['mee_date'] <=> $b['mee_date']; });
$lastFive = array_slice($lastFive,-5);
$start['last5'] = $lastFive;
$intletter = getInterviewLetter($lastFive,$start['sta_hor_id']);
$start['intletter'] = $intletter;
$races[$start['sta_rac_id']]['raceno'] = $start['rac_raceno'];
$races[$start['sta_rac_id']]['starts'][$start['sta_startno']] = $start;
}
foreach ($races as $k => $r) {
$races[$k]['legtypes'] = getLegtypesForRace($k);
$races[$k]['info1'] = '<strong>' . $rim[$k]['rac_basedist'] . ' m. ' . $rim[$k]['rac_startmethod_text'] . '</strong>. Start ca kl. ' . date('H:i',strtotime($rim[$k]['rac_starttime']));
$racepurses = json_decode($rim[$k]['rac_racepurse'],1);
$firstprice = $racepurses[1];
$content = trim($rim[$k]['rac_headtext_1']) . ' Fpr: ' . number_format($firstprice,0,'.',' ');
$remove = array("\n", "\r\n", "\r", "<p>", "</p>", "<h1>", "</h1>", "<br>", "<br />", "<br/>");
$races[$k]['info2'] = str_replace($remove,' ',$content);
$races[$k]['rank'] = getRankForRace($k);
}
#pre($races,1);
return $this->render('includes/program.html.twig', [
'races' => $races,
'chilitext' => $chilitext,
'isMobile' => $md->isMobile(),
]);
}
/**
* @Route("/prog/{meeting}", name="app_pro")
*/
public function prog($meeting)
{
$races_in_meeting = $this->getDoctrine()->getRepository(Races::class)->getTrack($meeting);
$starts = $this->getDoctrine()->getRepository(Starts::class)->listStarts($meeting);
$horsestats = $this->getDoctrine()->getRepository(Starts::class)->listHorses($meeting);
$legTypes = $this->getDoctrine()->getRepository(Races::class)->getLegTypesRace($meeting);
$em = $this->getDoctrine()->getManager();
$sql = 'select r.id,r.ran_rank,r.ran_winningchance from ranking r
left join races a on r.id = a.id
left join meetings m on a.rac_mee_id = m.id
where m.id = ' . $meeting . ' order by a.rac_raceno';
$statement = $em->getConnection()->prepare($sql);
$statement->execute();
$result = $statement->fetchAll();
foreach ($result as $r) $rankings[$r['id']] = $r;
foreach ($races_in_meeting as $key => $r) {
if (isset($rankings[$r['rac_id']])) $races_in_meeting[$key]['ranking'] = $rankings[$r['rac_id']];
}
$curdate = $races_in_meeting[0]['mee_date'];
$curdate = date_format($curdate, 'Ymd');
$horseinfo = array();
for ($x = 0; $x < count($horsestats); $x++) {
$m = json_decode($horsestats[$x]['hor_mother_id']);
$f = json_decode($horsestats[$x]['hor_father_id']);
$mm = $this->getDoctrine()->getRepository(Horses::class)->find($m);
$ff = $this->getDoctrine()->getRepository(Horses::class)->find($f);
$xx = $this->getDoctrine()->getRepository(Results::class)->getLastFive($horsestats[$x]['hid'],$curdate);
$xy = $this->getDoctrine()->getRepository(Foreignstarts::class)->getLastFive($horsestats[$x]['hid'],$curdate);
$newXXX = array_merge($xx, $xy);
usort($newXXX, function($a, $b) { return $a['mee_date'] <=> $b['mee_date']; });
array_push($horseinfo, [$horsestats[$x]['hid'], $mm->getHorName(), $ff->getHorName(), $newXXX]);
}
return $this->render('includes/prog_dev2.html.twig', [
'all' => $races_in_meeting,
'starts' => $starts,
'legtypes' => $legTypes,
'horses' => $horsestats,
'horseinfo' => $horseinfo
]);
}
/**
* @Route("/inn/{race}", name="app_inn")
*/
public function inns($race){
if($race=='all'){
$products = '';
$starts = '';
$results = '';
$legTypes = '';
} else {
$products = $this->getDoctrine()
->getRepository(Races::class)
->getTrack($race);
$results = $this->getDoctrine()
->getRepository(Results::class)
->sortRace($race);
$legTypes = $this->getDoctrine()
->getRepository(Races::class)
->getLegTypesRace($race);
}
$races = $this->getDoctrine()->getRepository(Races::class)->listAllObjects();
return $this->render('pages/tips.html.twig', [
'title' => $race,
'all' => $products,
'races' => $races,
'results' => $results,
'legtypes' => $legTypes,
]);
}
/**
* @Route("/results", name="app_results")
*/
public function results(){
$allowed = self::cookie();
if (!$allowed) { return $this->redirect('https://tgn.no/hestefakta-tips-og-spill/'); }
$meetings = $this->getDoctrine()->getRepository(Meetings::class)->getLatest50meetings();
#dd($meetings);
return $this->render('pages/results.html.twig', [
'meetings' => $meetings,
]);
}
/**
* @Route("/odds/{race}", name="app_odds")
*/
public function getOdds($race){
$ftp_username = 'raaness';
$ftp_userpass = '8rifw8iw1p';
$conn_id = ftp_connect('info.rikstoto.no');
ftp_login($conn_id, $ftp_username , $ftp_userpass);
ftp_pasv($conn_id, true);
$file = $race;
$file = str_replace('BE', 'BT', $file);
$h = fopen('php://temp', 'r+');
$html = '';
if (ftp_fget($conn_id, $h, 'spillinfo/v3/'.$file, FTP_ASCII)){
$fstats = fstat($h);
fseek($h, 0);
$contents = fread($h, $fstats['size']);
$xml = simplexml_load_string($contents);
$simpXML = new \SimpleXMLElement($xml->asXML());
$simpXML->registerXPathNamespace('tgn', 'http://www.rikstoto.no/betinfo/v3');
$xpath = $simpXML->xpath('//tgn:Meeting/tgn:Races/tgn:Race');
foreach ($xpath as $x) {
$html .= '<div style="border:1px solid #CCC; border-radius: 6px;padding:15px;margin-bottom: 20px;margin-top: 10px;">';
$html .= '<div class="b_'.$x->RaceNo.'" style="width:100%;white-space: nowrap;">';
$html .= '<div style="margin-right:8px;display: inline;font-size: 1rem;">';
$html .= '<span style="font-size: 30px; font-weight: bold; margin-right: 8px;padding: 8px;">'.$x->RaceNo.'</span>';
$html .= '</div>';
$html .= '</div>';
$html .= '<table class="table table-responsive" style="width: 100%;"><thead><tr><th style="width: 30px;">#</th><th>Navn</th><th style="width: 120px;text-align: right;">V-Odds</th></tr></thead><tbody>';
$n = 0;
foreach ($x->OddsInfo->WinPlaceOdds->WinPlaceOdds as $y){
$attrY = $y->StartInfo->attributes();
$html .= '<tr>';
$html .= '<td>'.$attrY['StartNo'].'</td><td>'.$x->Starts->Start[$n]->Horse->Name.'</td><td style="width: 120px;text-align: right;">'.$y->WinOdds.'</td></tr>';
$n++;
}
$html .= '</tbody></table>';
$html .= '</div>';
}
fclose($h);
ftp_close($conn_id);
}
else
{
$xml = '';
}
return new Response($html);
}
/**
* @Route("/rss", name="app_rss")
*/
public function rss()
{
$months = array('', 'januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember');
$days = array('', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag', 'søndag');
$products = $this->getDoctrine()->getRepository(Races::class)->listAllObjects();
$legtypes = $this->getDoctrine()->getRepository(Races::class) ->getLegTypes();
if($products){
$traName = 'All tracks';
$articleContent = 'Info for all tracks';
} else {
$traName = 'No info';
$articleContent = '';
}
// menue arrays to this one
return $this->render('rss.xml.twig', [
'title' => $traName,
'articleContent' => $articleContent,
'dbData' => $traName,
'all' => $products,
'leg' => $legtypes,
'months' => $months,
'days' => $days,
]);
}
/**
* @Route("/kikkerten/{id}", name="app_kikkerten")
*/
public function kikkerten($id){
$allowed = self::cookie();
if(!$allowed){ return $this->redirect('https://tgn.no/hestefakta-tips-og-spill/'); }
$kikkerten = $this->getDoctrine()->getRepository(Binocular::class)->find($id);
return $this->render('pages/kikkerten.html.twig', [
'binocular' => $kikkerten,
'tittel' => ''
]);
}
}