From 3b162099815c9bffd1a3a4979ddc75440a42b438 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bj=C3=B8rn=20Rustad?= Date: Sun, 18 Aug 2013 22:35:20 +0200 Subject: [PATCH] Check price and teams LOL --- lib/Duplo/Manager.pm | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/lib/Duplo/Manager.pm b/lib/Duplo/Manager.pm index 1e4d530..2bf9b53 100644 --- a/lib/Duplo/Manager.pm +++ b/lib/Duplo/Manager.pm @@ -52,6 +52,10 @@ sub get_switches { my $switches = 10 * $c - $s; + if ($switches < 0) { + $switches = 0; + } + return $switches; } @@ -238,6 +242,44 @@ sub edit { return $self->redirect_to('manager_team', team => $team) } + my ($max_teams) = $dbh->selectrow_array(" + SELECT + MAX(n) + FROM ( + SELECT + COUNT(*) AS n + FROM + rider_race + WHERE + race = (SELECT race FROM manager_team WHERE manager_team = ?) + GROUP BY + team + ) AS a + ", undef, $team); + + if ($max_teams > 2) { + $self->app->log->debug("More than two riders on one team."); + + return $self->redirect_to('manager_team', team => $team); + } + + my ($price) = $dbh->selectrow_array(" + SELECT + SUM(price) + FROM + rider_race AS rr + WHERE + race = (SELECT race FROM manager_team WHERE manager_team = ?) + AND + rider IN (@{[join ',', ('?') x @riders]}) + ", undef, $team, @riders); + + if ($price > 140) { + $self->app->log->debug("Too expensive!"); + + return $self->redirect_to('manager_team', team => $team); + } + $dbh->do(" DELETE FROM rider_manager_team @@ -255,6 +297,7 @@ sub edit { my $switches = get_switches($self, $team); + #FIXME: Not wery pretty if ($switches > 20) { $self->app->log->debug("Too many switches."); $dbh->do(" -- 2.47.3