]> git.rustad.me Git - duplo/commitdiff
Check price and teams LOL
authorBjørn Rustad <rustadbjornen@gmail.com>
Sun, 18 Aug 2013 20:35:20 +0000 (22:35 +0200)
committerBjørn Rustad <rustadbjornen@gmail.com>
Sun, 18 Aug 2013 20:35:20 +0000 (22:35 +0200)
lib/Duplo/Manager.pm

index 1e4d530740bad905725fb3029144354fe3877dc9..2bf9b5343bbda05341cd59f021a9b1d98b37a164 100644 (file)
@@ -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("