]> ruin.nu Git - ndwebbie.git/blob - lib/NDWeb/Controller/CovOp.pm
ed9d2c83f204700d89b572a2b35b0094198f98b0
[ndwebbie.git] / lib / NDWeb / Controller / CovOp.pm
1 package NDWeb::Controller::CovOp;
2
3 use strict;
4 use warnings;
5 use parent 'Catalyst::Controller';
6
7 =head1 NAME
8
9 NDWeb::Controller::CovOp - Catalyst Controller
10
11 =head1 DESCRIPTION
12
13 Catalyst Controller.
14
15 =head1 METHODS
16
17 =cut
18
19
20 =head2 index
21
22 =cut
23
24 sub index :Path :Args(0) {
25         my ( $self, $c ) = @_;
26         $c->stash( where => q{hack5 > 60000 AND minalert < 60
27                 ORDER BY hack5 DESC, hack13 DESC
28                         ,(CASE WHEN tick() - lastcovop < 6 THEN lastcovop ELSE NULL END) NULLS FIRST
29                         ,minalert, pstick DESC, dstick DESC,x,y,z
30                 });
31         $c->forward('list');
32 }
33
34 sub easy : Local {
35         my ( $self, $c ) = @_;
36         $c->stash( where =>  q{minalert < 60
37                 ORDER BY minalert, hack5 DESC,lastcovop NULLS FIRST
38                         ,hack13 DESC,pstick DESC, dstick DESC,x,y,z
39                 });
40         $c->forward('list');
41 }
42
43 sub distwhores : Local {
44         my ( $self, $c ) = @_;
45         $c->stash( where =>  q{distorters > 0
46                 ORDER BY distorters DESC, minalert
47                         ,lastcovop NULLS FIRST,pstick DESC, dstick DESC,x,y,z
48                 });
49         $c->forward('list');
50 }
51
52 sub marktarget : Local {
53         my ( $self, $c, $target ) = @_;
54         my $dbh = $c->model;
55         my $update = $dbh->prepare(q{INSERT INTO covop_attacks (uid,id,tick) VALUES(?,?,tick())});
56         eval{
57                 $update->execute($c->user->id,$target);
58         };
59         $c->forward('/redirect');
60 }
61
62 sub list : Private {
63         my ( $self, $c ) = @_;
64         my $dbh = $c->model;
65
66         my $query = $dbh->prepare(q{
67         SELECT * FROM (
68                 SELECT *
69                         ,(2*pvalue::float/cvalue) :: Numeric(4,1) AS max_bank_hack
70                         ,max_bank_hack(metal,crystal,eonium,pvalue,cvalue,5) AS hack5
71                         ,max_bank_hack(metal,crystal,eonium,pvalue,cvalue,13) AS hack13
72                 FROM (SELECT p.id,coords(x,y,z),x,y,z,size
73                         ,metal + metal_roids * (tick()-ps.tick) * 125 AS metal
74                         ,crystal + crystal_roids * (tick()-ps.tick) * 125 AS crystal
75                         ,eonium + eonium_roids * (tick()-ps.tick) * 125 AS eonium
76                         ,distorters,guards
77                         ,covop_alert(seccents,ds.total,size,guards,gov,0) AS minalert
78                         ,covop_alert(seccents,ds.total,size,guards,gov,50) AS maxalert
79                         , planet_status, relationship,gov,ps.tick AS pstick, ds.tick AS dstick
80                         , p.value AS pvalue, c.value AS cvalue
81                         FROM current_planet_stats p
82                                 LEFT OUTER JOIN current_planet_scans ps ON p.id = ps.planet
83                                 LEFT OUTER JOIN current_development_scans ds ON p.id = ds.planet
84                                 CROSS JOIN (SELECT value FROM current_planet_stats WHERE id = $1) c
85                         ) AS foo
86                         LEFT OUTER JOIN (SELECT id,max(tick) AS lastcovop FROM covop_attacks
87                                 GROUP BY id) co USING (id)
88                 WHERE (metal IS NOT NULL OR distorters IS NOT NULL)
89                         AND (NOT planet_status IN ('Friendly','NAP'))
90                         AND  (relationship IS NULL OR NOT relationship IN ('Friendly','NAP'))
91         ) a
92         WHERE } . $c->stash->{where});
93         $query->execute($c->user->planet);
94
95         $c->stash(targets => $query->fetchall_arrayref({}));
96
97         $c->stash(template => 'covop/index.tt2');
98 }
99 =head1 AUTHOR
100
101 Michael Andreen (harv@ruin.nu)
102
103 =head1 LICENSE
104
105 GPL 2.0, or later
106
107 =cut
108
109 1;