+#**************************************************************************
+# Copyright (C) 2009 by Michael Andreen <harvATruinDOTnu> *
+# *
+# This program is free software; you can redistribute it and/or modify *
+# it under the terms of the GNU General Public License as published by *
+# the Free Software Foundation; either version 2 of the License, or *
+# (at your option) any later version. *
+# *
+# This program is distributed in the hope that it will be useful, *
+# but WITHOUT ANY WARRANTY; without even the implied warranty of *
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+# GNU General Public License for more details. *
+# *
+# You should have received a copy of the GNU General Public License *
+# along with this program; if not, write to the *
+# Free Software Foundation, Inc., *
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+#**************************************************************************/
+
+package NDIRC::Commands::Members;
+
+use strict;
+use warnings;
+use feature ':5.10';
+
+use Moose;
+use MooseX::MethodAttributes;
+
+sub def
+ : Help(Show current calls)
+ : Type(member)
+{
+ my ($self,$c,$msg) = @_;
+ my $f = $c->model->prepare(q{
+SELECT (c.landing_tick - tick()) AS eta, concat(i.shiptype||'/') AS shiptype
+ , dc.username
+FROM calls c
+ JOIN incomings i ON i.call = c.id
+ LEFT OUTER JOIN users dc ON dc.uid = c.dc
+ JOIN users u ON u.uid = c.member
+WHERE open AND (c.landing_tick - tick()) >= 7
+GROUP BY c.id,c.landing_tick,dc.username
+ORDER BY c.landing_tick;
+ });
+ $f->execute();
+ my $calls = "";
+ while (my @row = $f->fetchrow()){
+ chop($row[1]);
+ my $dc = $row[2] // '';
+ $calls .= " (Anti $row[1] ETA: $row[0] DC: $dc) |"
+ }
+ chop($calls);
+ if ($msg ne 'q' || length $calls > 0){
+ $c->reply("Current calls: $calls");
+ }
+}
+
+sub raids
+ : Help(List currently open raids)
+ : Type(member)
+{
+ my ($self,$c,$msg) = @_;
+
+ my $f = $c->model->prepare(q{
+SELECT id FROM raids
+WHERE open AND not removed AND tick + waves - 7 > tick()
+AND id IN (SELECT raid FROM raid_access WHERE gid = 2)
+ });
+ $f->execute();
+ my $calls = "";
+ while (my ($raid) = $f->fetchrow()){
+ $calls .= " https://nd.ruin.nu/raids/view/$raid |"
+ }
+ $calls = "No open future raids" if ($f->rows == 0);
+ chop($calls);
+ $c->reply($calls);
+}
+
+sub points
+ : Help(syntax: .points [nick] | not everyone have access to check for others.)
+{
+ my ($self,$c,$msg) = @_;
+ my $f;
+ my $nick = $c->host;
+ if ($msg =~ /(\S+)/ && $c->check_user_roles(qw/irc_points_others/)){
+ $nick = $1;
+ $f = $c->model->prepare(q{
+SELECT username, attack_points, defense_points, scan_points, humor_points
+FROM users WHERE username ILIKE ? LIMIT 5
+ });
+ }else{
+ $f = $c->model->prepare(q{
+SELECT username, attack_points, defense_points, scan_points, humor_points
+FROM users WHERE hostmask ILIKE ?
+ });
+ }
+ $f->execute($nick);
+ while (my @row = $f->fetchrow()){
+ $c->reply("$row[0] has $row[1] Attack, $row[2] Defense, $row[3] Scan, $row[4] Humor points");
+ }
+}
+
+sub sms
+ : Help(syntax: .sms nick | % can be used for wildcards %arro% will match barrow)
+ : ACL(irc_sms)
+{
+ my ($self,$c,$msg) = @_;
+ my ($nick) = $msg =~ /(\S+)/ or die 'ARGS';
+ my $f = $c->model->prepare(q{
+SELECT username,COALESCE(sms,'nothing added') FROM users WHERE username ILIKE ?
+ });
+ if (my ($username,$sms) = $c->model->selectrow_array($f,undef,$nick)){
+ $c->reply("<b>$username</b> has sms <b>$sms</b>");
+ }else{
+ $c->reply("No hit, maybe spelling mistake, or add % as wildcard");
+ }
+}
+
+1;