X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=lib%2FNDWeb%2FController%2FIntel.pm;h=bafea58ea8be45ad64da1f5450990e5b3193ad52;hb=07aec9f5f20e4a605d65bbe2337a05663c0b16e7;hp=388204bd5a74a583b74a6395b255c62949fbc563;hpb=b6d8351387cf06b88e362a458aad1e0982e575dd;p=ndwebbie.git diff --git a/lib/NDWeb/Controller/Intel.pm b/lib/NDWeb/Controller/Intel.pm index 388204b..bafea58 100644 --- a/lib/NDWeb/Controller/Intel.pm +++ b/lib/NDWeb/Controller/Intel.pm @@ -31,13 +31,14 @@ sub index :Path : Args(0) { my $ticks = $c->req->param('ticks') || 48; $c->stash(showticks => $ticks); - my $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 ((COALESCE( t.alliance != o.alliance,TRUE) AND (i.mission = 'Defend' OR i.mission = 'AllyDef' )) - OR ( t.alliance = o.alliance AND i.mission = 'Attack')) - AND i.tick > (tick() - $1) + my $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 tick > (tick() - $1) + AND ((COALESCE( talliance <> salliance,TRUE) AND (mission = 'Defend' OR mission = 'AllyDef' )) + OR ( talliance = salliance AND mission = 'Attack')) +ORDER BY tick DESC, mission }); $query->execute($ticks); $c->stash(intel => $query->fetchall_arrayref({}) ); @@ -82,15 +83,23 @@ sub planet : Local { $c->stash(govs => ["","Feu", "Dic", "Dem","Uni"]); $c->stash(planetstatus => ["","Friendly", "NAP", "Hostile"]); - $query = $dbh->prepare(intelquery q{i.sender - ,o.alliance AS oalliance,coords(o.x,o.y,o.z) AS ocoords - },q{i.target = $1 AND i.tick > (tick() - $2)}); + $query = $dbh->prepare(q{ +SELECT salliance, scoords, sender + ,mission, tick AS landingtick, eta, amount, ingal, username +FROM full_intel +WHERE target = $1 AND tick > (tick() - $2) +ORDER BY tick DESC, mission + }); $query->execute($id,$ticks); $c->stash(incoming => $query->fetchall_arrayref({}) ); - $query = $dbh->prepare(intelquery q{i.target - ,t.alliance AS talliance,coords(t.x,t.y,t.z) AS tcoords - },q{i.sender = $1 AND i.tick > (tick() - $2)}); + $query = $dbh->prepare(q{ +SELECT talliance, tcoords, target + ,mission, tick AS landingtick, eta, amount, ingal, username +FROM full_intel +WHERE sender = $1 AND tick > (tick() - $2) +ORDER BY tick DESC, mission + }); $query->execute($id,$ticks); $c->stash(outgoing => $query->fetchall_arrayref({}) ); @@ -227,17 +236,17 @@ sub members : Local { ,count(CASE WHEN i.mission = 'Attack' THEN 1 ELSE NULL END) AS attacks ,count(CASE WHEN (i.mission = 'Defend' OR i.mission = 'AllyDef') THEN 1 ELSE NULL END) AS defenses ,count(CASE WHEN i.mission = 'Attack' AND rt.id IS NULL THEN 1 ELSE NULL END) AS solo - ,count(CASE WHEN i.mission = 'Defend' OR i.mission = 'AllyDef' THEN NULLIF(i.ingal OR (t.alliance_id = 1),TRUE) ELSE NULL END) AS bad_def + ,count(CASE WHEN i.mission = 'Defend' OR i.mission = 'AllyDef' THEN NULLIF(i.ingal OR (t.alliance = 'NewDawn'),TRUE) ELSE NULL END) AS bad_def FROM users u JOIN groupmembers gm USING (uid) - LEFT OUTER JOIN (SELECT DISTINCT ON (planet) planet,tick from scans where type = 'News' ORDER BY planet,tick DESC) n USING (planet) - LEFT OUTER JOIN (SELECT DISTINCT name,eta,tick,sender,target,mission,ingal FROM intel WHERE amount IS NULL) i ON i.sender = u.planet - LEFT OUTER JOIN current_planet_stats t ON i.target = t.id - LEFT OUTER JOIN (SELECT rt.id,planet,tick FROM raids r - JOIN raid_targets rt ON r.id = rt.raid) rt ON rt.planet = i.target - AND (rt.tick + 12) > i.tick AND rt.tick <= i.tick + LEFT OUTER JOIN (SELECT DISTINCT ON (pid) pid,tick from scans where type = 'News' ORDER BY pid,tick DESC) n USING (pid) + LEFT OUTER JOIN (SELECT DISTINCT name,eta,tick,sender,target,mission,ingal FROM intel WHERE amount IS NULL) i ON i.sender = u.pid + LEFT OUTER JOIN current_planet_stats t ON i.target = t.pid + LEFT OUTER JOIN (SELECT rt.id,pid,tick FROM raids r + JOIN raid_targets rt ON r.id = rt.raid) rt ON rt.pid = i.target + AND (rt.tick + 12) > i.tick AND rt.tick <= i.tick LEFT OUTER JOIN raid_claims rc ON rt.id = rc.target AND rc.uid = u.uid AND i.tick = rt.tick + rc.wave - 1 - WHERE gm.gid = 2 + WHERE gm.gid = 'M' GROUP BY u.uid,u.username,u.attack_points, u.defense_points,n.tick ORDER BY }. " $order DESC" ); $query->execute; @@ -251,16 +260,16 @@ sub member : Local { my $query = $dbh->prepare(q{ SELECT coords(t.x,t.y,t.z), i.eta, i.tick, rt.id AS ndtarget, rc.launched, inc.landing_tick FROM users u - LEFT OUTER JOIN (SELECT DISTINCT eta,tick,sender,target,mission,name FROM intel WHERE amount IS NULL) i ON i.sender = u.planet - LEFT OUTER JOIN current_planet_stats t ON i.target = t.id - LEFT OUTER JOIN (SELECT rt.id,planet,tick FROM raids r - JOIN raid_targets rt ON r.id = rt.raid) rt ON rt.planet = i.target - AND (rt.tick + 12) > i.tick AND rt.tick <= i.tick + LEFT OUTER JOIN (SELECT DISTINCT eta,tick,sender,target,mission,name FROM intel WHERE amount IS NULL) i ON i.sender = u.pid + LEFT OUTER JOIN current_planet_stats t ON i.target = t.pid + LEFT OUTER JOIN (SELECT rt.id,pid,tick FROM raids r + JOIN raid_targets rt ON r.id = rt.raid) rt ON rt.pid = i.target + AND (rt.tick + 12) > i.tick AND rt.tick <= i.tick LEFT OUTER JOIN raid_claims rc ON rt.id = rc.target AND rc.uid = u.uid AND i.tick = rt.tick + rc.wave - 1 - LEFT OUTER JOIN (SELECT sender, eta, landing_tick FROM calls c - JOIN incomings i ON i.call = c.id) inc ON inc.sender = i.target + LEFT OUTER JOIN (SELECT pid, eta, landing_tick FROM calls c + JOIN incomings i USING (call)) inc ON inc.pid = i.target AND (inc.landing_tick + inc.eta) >= i.tick - AND (inc.landing_tick - inc.eta - 1) <= (i.tick - i.eta) + AND (inc.landing_tick - inc.eta - 1) <= (i.tick - i.eta) WHERE u.uid = $1 AND i.mission = 'Attack' ORDER BY (i.tick - i.eta) }); @@ -286,10 +295,10 @@ sub member : Local { $c->stash(attacks => \@attacks); $query = $dbh->prepare(q{ - SELECT coords(t.x,t.y,t.z),t.alliance_id, t.alliance, i.eta, i.tick, i.ingal + SELECT coords(t.x,t.y,t.z),t.aid, t.alliance, i.eta, i.tick, i.ingal FROM users u - JOIN (SELECT DISTINCT name,eta,tick,sender,target,mission,ingal FROM intel WHERE amount IS NULL) i ON i.sender = u.planet - LEFT OUTER JOIN current_planet_stats t ON i.target = t.id + JOIN (SELECT DISTINCT name,eta,tick,sender,target,mission,ingal FROM intel WHERE amount IS NULL) i ON i.sender = u.pid + LEFT OUTER JOIN current_planet_stats t ON i.target = t.pid WHERE u.uid = $1 AND (i.mission = 'Defend' OR i.mission = 'AllyDef') ORDER BY (i.tick - i.eta) }); @@ -299,7 +308,7 @@ sub member : Local { my @other_def; while (my $intel = $query->fetchrow_hashref){ my $def = {target => $intel->{coords}, other => $intel->{alliance}, tick => $intel->{tick}}; - if (defined $intel->{alliance_id} && $intel->{alliance_id} == 1){ + if ($intel->{alliance} ~~ 'NewDawn'){ push @nd_def, $def; }elsif($intel->{ingal}){ push @ingal_def, $def;