]> ruin.nu Git - ndwebbie.git/blobdiff - lib/NDWeb/Controller/Alliances.pm
Add Full fleet from Military scan
[ndwebbie.git] / lib / NDWeb / Controller / Alliances.pm
index efec3dd6f955ca6f58d845f15ffdf7577843533e..d8b332017ae86043c314566bd25eca325274bba7 100644 (file)
@@ -4,8 +4,6 @@ use strict;
 use warnings;
 use parent 'Catalyst::Controller';
 
-use NDWeb::Include;
-
 =head1 NAME
 
 NDWeb::Controller::Alliances - Catalyst Controller
@@ -95,18 +93,63 @@ sub edit : Local {
        my $ticks = $c->req->param('ticks') || 48;
        $c->stash(showticks => $ticks);
 
-       $query = $dbh->prepare(intelquery q{
-                       o.alliance AS oalliance ,coords(o.x,o.y,o.z) AS ocoords, i.sender
-                       ,t.alliance AS talliance,coords(t.x,t.y,t.z) AS tcoords, i.target
-               },q{NOT ingal AND (o.alliance = $1 OR t.alliance = $1)
-                       AND (i.mission = 'Defend' OR i.mission = 'AllyDef')
-                       AND COALESCE( t.alliance != o.alliance, TRUE)
-                       AND i.tick > (tick() - $2)
+       $query = $dbh->prepare(q{
+SELECT salliance, scoords, sender, talliance, tcoords, target
+       ,mission, tick AS landingtick, eta, amount, ingal, username
+FROM full_intel
+WHERE NOT ingal AND (salliance = $1 OR talliance = $1)
+       AND (mission = 'Defend' OR mission = 'AllyDef')
+       AND COALESCE( talliance <> salliance, TRUE)
+       AND tick > (tick() - $2)
+ORDER BY tick DESC, mission
                });
        $query->execute($a->{name}, $ticks);
        $c->stash(intel => $query->fetchall_arrayref({}) );
 }
 
+
+sub pscans : Local {
+       my ( $self, $c, $id ) = @_;
+       my $dbh = $c->model;
+
+       my $members = $dbh->prepare(q{
+               SELECT pid AS id, coords(x,y,z), metal, crystal, eonium, ps.tick
+                       ,planet_status,hit_us, sizerank, scorerank, valuerank, xprank
+               FROM current_planet_stats p left outer join current_planet_scans ps using (pid)
+               WHERE p.aid = ?
+               ORDER BY x,y,z
+               });
+       $members->execute($id);
+       $c->stash(members => $members->fetchall_arrayref({}) );
+
+}
+
+sub fleet : Local {
+       my ( $self, $c, $id ) = @_;
+       my $dbh = $c->model;
+
+       my $query = $dbh->prepare(q{SELECT ship, id FROM ship_stats WHERE id >= 0 ORDER BY id ASC;});
+       $query->execute;
+       $c->stash(ships => $query->fetchall_arrayref({}));
+
+       my $members = $dbh->prepare(q{
+WITH
+aus AS (SELECT DISTINCT ON (pid) pid, fid, name,tick
+       FROM fleets f join fleet_scans fs using (fid)
+       WHERE mission = 'Full fleet' and name IN ('Advanced Unit', 'Military')
+       ORDER BY pid,tick DESC)
+,ships AS (SELECT pid, tick, ship, amount, id AS ship_id
+       FROM fleet_ships fs JOIN aus USING(fid) JOIN ship_stats USING(ship))
+SELECT pid, coords(x,y,z), p.race, tick, jsonb_object_agg(ship_id, amount) AS ships
+       FROM ships JOIN current_planet_stats p USING (pid)
+       WHERE p.aid = $1
+       GROUP BY x,y,z,pid,race,tick;
+               });
+       $members->execute($id);
+       $c->stash(members => $members->fetchall_arrayref({}) );
+
+}
+
 sub postallianceupdate : Local {
        my ( $self, $c, $id, $order ) = @_;
        my $dbh = $c->model;
@@ -189,12 +232,8 @@ sub hostile : Local {
        }
 
        my $query = $dbh->prepare(q{
-               SELECT s.alliance_id AS id,s.alliance AS name,count(*) AS hostile_count
-FROM calls c 
-       JOIN incomings i ON i.call = c.id
-       JOIN current_planet_stats s ON i.sender = s.id
-WHERE c.landing_tick - i.eta > $1 and c.landing_tick - i.eta < $2
-GROUP BY s.alliance_id,s.alliance
+SELECT aid, alliance, hostile_count, targeted, targeted_raids
+FROM hostile_alliances($1,$2)
 ORDER BY hostile_count DESC
                });
        $query->execute($begintick,$endtick);