]> ruin.nu Git - ndwebbie.git/blobdiff - lib/NDWeb/Controller/Alliances.pm
Added alliance member fleets
[ndwebbie.git] / lib / NDWeb / Controller / Alliances.pm
index ec6da88f2d634d648549dea75564f0209b1f2c3c..6c9731cc087f94b599f2841e5203694dff49a2e2 100644 (file)
@@ -107,6 +107,49 @@ ORDER BY tick DESC, mission
        $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 = 'Advanced Unit'
+       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.aid AS id,s.alliance AS name,count(*) AS hostile_count
-FROM calls c 
-       JOIN incomings i USING (call)
-       JOIN current_planet_stats s USING (pid)
-WHERE c.landing_tick BETWEEN $1 + i.eta AND $2 + i.eta
-GROUP BY s.aid,s.alliance
+SELECT aid, alliance, hostile_count, targeted, targeted_raids
+FROM hostile_alliances($1,$2)
 ORDER BY hostile_count DESC
                });
        $query->execute($begintick,$endtick);