]> ruin.nu Git - ndwebbie.git/blobdiff - lib/NDWeb/Controller/Raids.pm
Use new development scans
[ndwebbie.git] / lib / NDWeb / Controller / Raids.pm
index 67ce22fd91291986bcab7d7ce415313ac4954d0c..410d42d0f29fce96d795c71e502ff2c85ee0a8a0 100644 (file)
@@ -4,7 +4,7 @@ use strict;
 use warnings;
 use parent 'Catalyst::Controller';
 
-use POSIX;
+use POSIX qw/floor pow/;
 use NDWeb::Include;
 use ND::Include;
 
@@ -110,9 +110,9 @@ sub view : Local {
                , p.x,p.y,p.z, race
                , p.value - p.size*200 -
                        COALESCE(ps.metal+ps.crystal+ps.eonium,0)/150 -
-                       COALESCE(ss.total ,(SELECT
+                       COALESCE(ds.total ,(SELECT
                                COALESCE(avg(total),0) FROM
-                               structure_scans)::int)*1500 AS fleetvalue
+                               current_development_scans)::int)*1500 AS fleetvalue
                ,(metal+crystal+eonium)/100 AS resvalue, comment
                , hidden, light, medium, heavy, metal, crystal, eonium
                ,metal_roids, crystal_roids, eonium_roids
@@ -121,15 +121,14 @@ sub view : Local {
                FROM current_planet_stats p
                        JOIN raid_targets r ON p.id = r.planet
                        LEFT OUTER JOIN current_planet_scans ps ON p.id = ps.planet
-                       LEFT OUTER JOIN current_structure_scans ss ON p.id = ss.planet
-                       LEFT OUTER JOIN current_tech_scans ts ON p.id = ts.planet
+                       LEFT OUTER JOIN current_development_scans ds ON p.id = ds.planet
                WHERE r.raid = $1
                        AND NOT COALESCE(p.x = $2 AND p.y = $3,False)
                ORDER BY size});
        $targetquery->execute($raid->{id},$planet->{x},$planet->{y});
        my @targets;
        while (my $target = $targetquery->fetchrow_hashref){
-               if ($planet){
+               if ($planet && $planet->{x}){
                        if ($planet->{x} == $target->{x}){
                                $target->{style} = 'incluster';
                        }
@@ -171,7 +170,7 @@ sub view : Local {
                        my $roids = floor(0.25*$size);
                        $size -= $roids;
                        my $xp = 0;
-                       if ($planet){
+                       if ($planet && $planet->{score}){
                                $xp = pa_xp($roids,$planet->{score},$planet->{value},$target->{score},$target->{value});
                        }
                        push @roids,{wave => $i, roids => $roids, xp => $xp};
@@ -193,7 +192,7 @@ sub view : Local {
                        $target->{resvalue} = floor($target->{resvalue}/$num)*$num;
                }
                $target->{comment} = parseMarkup($target->{comment}) if ($target->{comment});
-               $target->{hidden} = int($target->{hidden} / 100);
+               $target->{hidden} = int($target->{hidden} / 100) if $target->{hidden};
 
                push @targets,$target;
        }
@@ -385,6 +384,7 @@ sub posttargetupdates : Local {
                WHERE target = ? AND wave = ? AND uid = -2
                });
        my $remove = $dbh->prepare(q{DELETE FROM raid_targets WHERE raid = ? AND id = ?});
+
        for $_ ($c->req->param()){
                if (/^comment:(\d+)$/){
                        $comment->execute(html_escape $c->req->param($_),$1);
@@ -427,9 +427,11 @@ sub posttargetupdates : Local {
 sub open : Local {
        my ($self, $c, $raid) = @_;
 
+       $c->model->begin_work;
        $c->model->do(q{UPDATE raids SET open = TRUE, removed = FALSE WHERE id = ?}
                ,undef,$raid);
        $c->forward('log',[$raid, "BC opened raid"]);
+       $c->model->commit;
 
        $c->res->redirect($c->req->referer);
 }
@@ -437,9 +439,11 @@ sub open : Local {
 sub close : Local {
        my ($self, $c, $raid) = @_;
 
+       $c->model->begin_work;
        $c->model->do(q{UPDATE raids SET open = FALSE WHERE id = ?}
                ,undef,$raid);
        $c->forward('log',[$raid, "BC closed raid"]);
+       $c->model->commit;
 
        $c->res->redirect($c->req->referer);
 }
@@ -447,9 +451,11 @@ sub close : Local {
 sub remove : Local {
        my ($self, $c, $raid) = @_;
 
+       $c->model->begin_work;
        $c->model->do(q{UPDATE raids SET open = FALSE, removed = TRUE WHERE id = ?}
                ,undef,$raid);
        $c->forward('log',[$raid, "BC removed raid"]);
+       $c->model->commit;
 
        $c->res->redirect($c->req->referer);
 }
@@ -457,9 +463,11 @@ sub remove : Local {
 sub showcoords : Local {
        my ($self, $c, $raid) = @_;
 
+       $c->model->begin_work;
        $c->model->do(q{UPDATE raids SET released_coords = TRUE WHERE id = ?}
                ,undef,$raid);
        $c->forward('log',[$raid, "BC released coords"]);
+       $c->model->commit;
 
        $c->res->redirect($c->req->referer);
 }
@@ -467,9 +475,11 @@ sub showcoords : Local {
 sub hidecoords : Local {
        my ($self, $c, $raid) = @_;
 
+       $c->model->begin_work;
        $c->model->do(q{UPDATE raids SET released_coords = FALSE WHERE id = ?}
                ,undef,$raid);
        $c->forward('log',[$raid, "BC hid coords"]);
+       $c->model->commit;
 
        $c->res->redirect($c->req->referer);
 }
@@ -485,6 +495,7 @@ sub postcreate : Local {
        my ($self, $c) = @_;
        my $dbh = $c->model;
 
+       $dbh->begin_work;
        my $query = $dbh->prepare(q{INSERT INTO raids (tick,waves,message) VALUES(?,?,?) RETURNING (id)});
        $query->execute($c->req->param('tick'),$c->req->param('waves')
                ,html_escape $c->req->param('message'));
@@ -506,6 +517,9 @@ sub postcreate : Local {
                $addtarget->execute($raid,\@targets,\@gals,$c->req->param('sizelimit'));
                $c->forward('log',[$raid,"BC added planets (@targets) and the gals for (@gals)"]);
        }
+       $dbh->do(q{INSERT INTO raid_access (raid,gid) VALUES(?,2)}
+               ,undef,$raid);
+       $dbh->commit;
 
        $c->res->redirect($c->uri_for('edit',$raid));
 }