stage_team(?, ?)
");
+ my $dsth = $dbh->prepare("
+ SELECT
+ mt.director,
+ t.name,
+ price,
+ points
+ FROM
+ manager_team AS mt
+ JOIN
+ team AS t
+ ON (mt.director = t.team)
+ JOIN
+ director_race AS dr
+ ON (mt.director = dr.director)
+ LEFT OUTER JOIN
+ director_stage AS ds
+ ON (mt.director = ds.director)
+ WHERE
+ (stage = ? OR stage IS NULL)
+ AND
+ manager_team = ?
+ ");
+
my %stage_team = ();
for my $stage (@{ $stages }) {
- $stage_team{$stage->{'stage'}} =
+ $stage_team{$stage->{'stage'}}->{'riders'} =
$dbh->selectall_arrayref($sth, { Slice => {} }, $stage->{'stage'}, $team);
+ $stage_team{$stage->{'stage'}}->{'director'} = $dbh->selectrow_hashref($dsth, undef, $stage->{'stage'}, $team);
+
}
return $self->render(
push @errors, "No stage found." unless defined $stage;
if (scalar @errors > 0) {
- $self->app->log->debug(Dumper \@errors);
- return $self->redirect_to('manager_team', team => $team)
+ $self->flash(errors => \@errors);
+ return $self->redirect_to('manager_edit_form', team => $team)
}
my ($max_teams) = $dbh->selectrow_array("
rider_race
WHERE
race = (SELECT race FROM manager_team WHERE manager_team = ?)
+ AND
+ rider IN (@{[join ',', ('?') x @riders]})
GROUP BY
team
) AS a
- ", undef, $team);
+ ", undef, $team, @riders);
if ($max_teams > 2) {
- $self->app->log->debug("More than two riders on one team.");
+ push @errors, "More than two riders from one team.";
- return $self->redirect_to('manager_team', team => $team);
+ $self->flash(errors => \@errors);
+ return $self->redirect_to('manager_edit_form', team => $team);
}
my ($price) = $dbh->selectrow_array("
", undef, $team, @riders);
if ($price > 140) {
- $self->app->log->debug("Too expensive!");
+ push @errors, "Too expensive! $price > 140";
- return $self->redirect_to('manager_team', team => $team);
+ $self->flash(errors => \@errors);
+ return $self->redirect_to('manager_edit_form', team => $team);
}
$dbh->do("
#FIXME: Not wery pretty
if ($switches > 20) {
- $self->app->log->debug("Too many switches.");
+ push @errors, "Too many switches.";
$dbh->do("
DELETE FROM
rider_manager_team
stage = ?
", undef, $team, $stage);
- return $self->redirect_to('manager_team', team => $team)
+ $self->flash(errors => \@errors);
+ return $self->redirect_to('manager_edit_form', team => $team)
}
$dbh->do("
$sth->execute($rider, $team, $stage);
}
- return $self->redirect_to('manager_team', team => $team);
+ $self->flash(errors => \@errors);
+ return $self->redirect_to('manager_edit_form', team => $team);
}
1;
'WATER' => 4,
);
+our %DIRECTOR = (
+ 1 => 160,
+ 2 => 100,
+ 3 => 60,
+ 4 => 40,
+ 5 => 20,
+);
+
sub get_points {
my $self = shift;
my $r = shift;
};
}
+ my $finish_ref = $dbh->selectall_arrayref("
+ SELECT
+ team
+ FROM (
+ SELECT
+ MIN(rl.\"number\") AS pos,
+ rr.team
+ FROM
+ rider_line AS rl
+ JOIN
+ line AS l
+ ON (rl.line = l.line)
+ JOIN
+ stage AS s
+ ON (l.stage = s.stage)
+ JOIN
+ rider_race AS rr
+ ON (rr.rider = rl.rider AND rr.race = s.race)
+ WHERE
+ l.stage = ?
+ AND
+ l.\"type\" = 'FINISH'
+ GROUP BY
+ rr.team
+ ) AS foo
+ ORDER BY pos ASC
+ ", { Slice => {} }, $stage);
+
+ $insert = $dbh->prepare("
+ INSERT INTO
+ director_stage (points, stage, director)
+ VALUES (?, ?, ?)
+ ");
+
+ $update = $dbh->prepare("
+ UPDATE
+ director_stage
+ SET points = points + ?
+ WHERE stage = ?
+ AND director = ?
+ ");
+
+ my $i = 1;
+ for my $res (@{ $finish_ref }) {
+ my $p;
+
+ if (exists $DIRECTOR{$i}) {
+ $p = $DIRECTOR{$i};
+ } else {
+ last;
+ }
+
+ eval {
+ $insert->execute($p, $stage, $res->{'team'});
+ } or do {
+ $update->execute($p, $stage, $res->{'team'});
+ };
+
+ $i++;
+ }
+
return $self->redirect_to('stage', stage => $stage);
}
<th>Price</th>
<th>Points</th>
</tr>
- % for my $rider (@{ $stage_team->{$stage->{'stage'}} }) {
+ % for my $rider (@{ $stage_team->{$stage->{'stage'}}->{'riders'} }) {
<tr>
<td><%= $rider->{'type'} %></td>
<td><%= $rider->{'name'} %></td>
<td><%= $rider->{'points'} %></td>
</tr>
% }
- % if (defined $director->{'team'}) {
<tr>
+ % my $director = $stage_team->{$stage->{'stage'}}->{'director'};
<td>DIRECTOR</td>
- <td><%= $director->{'name'} %></td>
<td></td>
+ <td><%= $director->{'name'} %></td>
<td><%= $director->{'price'} %></td>
- <td>TODO</td>
+ <td><%= $director->{'poinst'} %></td>
</tr>
- % }
</table>
% }