You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.2 KiB

<?php
use App\Wrappers\DatabaseInteractions;
use App\Wrappers\SQLQueryBuilderWrapper;
use App\Wrappers\TwigWrapper;
require_once __DIR__ . "/../../vendor/autoload.php";
$db = new DatabaseInteractions();
$tuneDetails = $db->RunOneSelect(
queryBuilder: SQLQueryBuilderWrapper::SELECT_ONE(
table: 'Tunes',
id: $_GET["tune-id"]
),
);
$variants = $db->RunSelect(
queryBuilder: SQLQueryBuilderWrapper::SELECT(
table: 'TuneVariants',
)
->where(cond: 'T.TuneID=:__tune_id__')
->bindValue(name: '__tune_id__', value: $_GET["tune-id"])
);
$dances = $db->RunSelect(
queryBuilder: SQLQueryBuilderWrapper::SELECT(
table: 'Dances',
)
->cols(cols: [
"CONCAT('[', GROUP_CONCAT(
CONCAT(
'{\"ID\":', JSON_QUOTE(T_DS.ID), ',',
'\"CreatedAt\":', JSON_QUOTE(T_DS.CreatedAt), ',',
'\"DanceID\":', JSON_QUOTE(T_DS.DanceID), ',',
'\"BarCountAtStart\":', T_DS.BarCountAtStart, ',',
'\"BarCountAtEnd\":', T_DS.BarCountAtEnd, ',',
'\"Description\":', JSON_QUOTE(T_DS.Description), '}'
)
), ']') AS Steps"
])
->join(
join: 'INNER',
spec: 'DanceSteps AS T_DS',
cond: 'T.ID=T_DS.DanceID'
)
->join(
join: 'INNER',
spec: '_Junction_Tunes_Dances AS _J_T_D',
cond: 'T.ID=_J_T_D.DanceID'
)
->where(cond: '_J_T_D.TuneID=:__tune_id__')
->bindValue(name: '__tune_id__', value: $_GET["tune-id"])
->groupBy(spec: [
'T.ID',
'T.CreatedAt',
'T.Title',
'_J_T_D.ID',
'_J_T_D.CreatedAt',
'_J_T_D.TuneID',
'_J_T_D.DanceID',
])
);
for ($i = 0; $i < count($dances); $i++)
$dances[$i]['Steps'] = json_decode(
$dances[$i]['Steps'],
true,
JSON_THROW_ON_ERROR
);
TwigWrapper::RenderTwig(
target: "Pages/tune/uuid.html.twig",
arguments: [
"TuneDetails"=>$tuneDetails,
"TuneVariants"=>$variants,
"Dances"=>$dances,
]
);