]> ruin.nu Git - ndwebbie.git/blob - lib/NDWeb/Controller/CovOp.pm
Converted covop target list
[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{AND MaxResHack > 130000
27                 ORDER BY minalert ASC,MaxResHack DESC});
28 }
29
30 sub distwhores : Local {
31         my ( $self, $c ) = @_;
32         $c->stash( where =>  qq{AND distorters > 0
33                 ORDER BY distorters DESC, minalert ASC});
34 }
35
36 sub marktarget : Local {
37         my ( $self, $c, $target ) = @_;
38         my $dbh = $c->model;
39
40         my $update = $dbh->prepare(q{INSERT INTO covop_attacks (uid,id,tick) VALUES(?,?,tick())});
41         $update->execute($c->user->id,$target);
42
43         $c->res->redirect($c->req->referer);
44 }
45
46 sub end : Private {
47         my ( $self, $c ) = @_;
48         my $dbh = $c->model;
49
50         my $query = $dbh->prepare(q{SELECT id, coords, metal, crystal, eonium
51                 , covop_alert(seccents,structures,gov,0) AS minalert
52                 , covop_alert(seccents,structures,gov,50) AS maxalert
53                 , distorters,gov
54                 , MaxResHack,co.tick AS lastcovop
55                 FROM (SELECT p.id,coords(x,y,z), metal,crystal,eonium,
56                         seccents,NULLIF(ss.total::integer,0) AS structures,distorters
57                         ,max_bank_hack(metal,crystal,eonium,p.value
58                                 ,(SELECT value FROM current_planet_stats WHERE id = ?)) AS MaxResHack
59                         , planet_status, relationship,gov
60                         FROM current_planet_stats p
61                                 LEFT OUTER JOIN planet_scans ps ON p.id = ps.planet
62                                 LEFT OUTER JOIN structure_scans ss ON p.id = ss.planet
63                         ) AS foo
64                         LEFT OUTER JOIN (SELECT id,max(tick) AS tick FROM covop_attacks GROUP BY id) co USING (id)
65                 WHERE (metal IS NOT NULL OR seccents IS NOT NULL)
66                         AND (NOT planet_status IN ('Friendly','NAP'))
67                         AND  (relationship IS NULL OR NOT relationship IN ('Friendly','NAP'))
68                 } . $c->stash->{where});
69         $query->execute($c->user->planet);
70
71         my @targets;
72         while (my $target = $query->fetchrow_hashref){
73                 push @targets,$target;
74         }
75         $c->stash(targets => \@targets);
76
77         $c->stash(template => 'covop/index.tt2');
78         $c->forward('/end');
79 }
80 =head1 AUTHOR
81
82 Michael Andreen (harv@ruin.nu)
83
84 =head1 LICENSE
85
86 GPL 2.0, or later
87
88 =cut
89
90 1;