]> git.rustad.me Git - duplo/commitdiff
Calculate and show switches
authorBjørn Rustad <rustadbjornen@gmail.com>
Sat, 17 Aug 2013 12:57:27 +0000 (14:57 +0200)
committerBjørn Rustad <rustadbjornen@gmail.com>
Sat, 17 Aug 2013 12:57:27 +0000 (14:57 +0200)
lib/Duplo/Manager.pm
templates/manager/team.html.ep

index 88537e4800a5ddc0867699160dd73d13e2532013..a4cb48d1f81d5feac970bed72d87bd7fbc6c36c1 100644 (file)
@@ -25,6 +25,36 @@ sub get_director {
                ", undef, $team);
 }
 
+sub get_switches {
+       my $self = shift;
+       my $team = shift;
+       my $dbh  = $self->db();
+
+       my ($c, $s) = $dbh->selectrow_array("
+               SELECT
+                 COUNT(stage) - 1 AS count,
+                 SUM(i) AS sum
+               FROM (
+                 SELECT
+                   s.stage, icount(array_agg(rider) & lag(array_agg(rider)) OVER (ORDER BY \"date\")) AS i
+                 FROM 
+                   rider_manager_team AS rmt
+                 JOIN  
+                   stage AS s
+                 ON (rmt.stage = s.stage)
+                 WHERE
+                   manager_team = ?
+                 GROUP BY s.stage
+                 ORDER BY
+                   \"date\"
+               ) AS foo
+               ", undef, $team);
+
+       my $switches = 10 * $c - $s;
+
+       return $switches;
+}
+
 sub new_team_form {
        my $self = shift;
        my $race = $self->param('race');
@@ -104,6 +134,7 @@ sub team {
                stages     => $stages,
                stage_team => \%stage_team,
                director   => get_director($self, $team),
+               switches   => get_switches($self, $team),
        );
 }
 
@@ -222,6 +253,22 @@ sub edit {
                VALUES (?, ?, ?)
                ");
 
+       my $switches = get_switches($self, $team);
+
+       if ($switches > 20) {
+               $self->app->log->debug("Too many switches.");
+               $dbh->do("
+                       DELETE FROM
+                         rider_manager_team
+                       WHERE
+                         manager_team = ?
+                       AND
+                         stage = ?
+                       ", undef, $team, $stage);
+
+               return $self->redirect_to('manager_team', team => $team)
+       }
+
        $dbh->do("
                UPDATE
                  manager_team
index d2f112f4f725642d279130b321b5ecbadb2072df..42cd95961f954762e2350713669b19e48b577c12 100644 (file)
@@ -6,6 +6,9 @@
 <a href="<%== url_for 'manager_edit_form', team => $team->{'manager_team'} %>">Edit</a>
 % }
 
+<h3>Switches made</h3>
+<p><%= $switches %></p>
+
 % for my $stage (@{ $stages }) {
 <h3><%= $stage->{'name'} %></h3>
 <table class="table table-condensed">
@@ -36,3 +39,4 @@
   % }
 </table>
 % }
+