package GroLUG::C::Iscritto;
use strict;
use warnings;
use base 'Catalyst::Controller';
use DateTime;
sub iscritti :Global {
my ( $self, $c ) = @_;
$c->stash->{iscritti}=GroLUG::M::DB->resultset('Iscritto')->search({attivo=>1});
$c->stash->{template}='lista-iscritti.tt2';
}
sub scheda :Local {
my ($self,$c,$id)=@_;
$c->log->info($c->user->id,"scheda iscritto $id");
$c->stash->{iscritto}=GroLUG::M::DB->resultset('Iscritto')->find($id);
$c->stash->{template}='scheda-iscritto.tt2';
}
sub edit :Local {
my ($self,$c,$id)=@_;
$c->log->info($c->user->id,"edit iscritto $id");
$c->stash->{iscritto}=my $iscritto=GroLUG::M::DB->resultset('Iscritto')->find($id);
if ($c->req->method eq 'POST') {
my %data=map {$_ => $c->req->params->{$_}} qw(nome email note);
$iscritto->set_columns(\%data);
$iscritto->update();
$c->res->redirect($c->uri_for('scheda',$iscritto->id));
}
else {
$c->stash->{template}='edit-iscritto.tt2';
}
}
sub nuovo :Local {
my ($self,$c,$id)=@_;
$c->log->info($c->user->id,"nuovo iscritto");
if ($c->req->method eq 'POST') {
my %data=map {$_ => $c->req->params->{$_}} qw(nome email note);
my $iscritto=GroLUG::M::DB->resultset('Iscritto')->create(\%data);
$c->res->redirect('/iscritti');
}
else {
$c->stash->{template}='nuovo-iscritto.tt2';
}
}
sub rinnova :Local {
my ($self,$c,$id)=@_;
$c->log->info($c->user->id,"rinnovo iscritto $id");
$c->stash->{iscritto}=my $iscritto=GroLUG::M::DB->resultset('Iscritto')->find($id);
my $last_pag=$iscritto->pagamenti()->next();
my $scadenza=($last_pag ? $last_pag->data_scadenza() : DateTime->now());
$c->stash->{pagamento}={
data_pagamento => DateTime->now(),
data_iscrizione => $scadenza->clone()->add(days => 1),
data_scadenza => $scadenza->clone()->add($c->config->{iscrizione}->{durata}),
prezzo => $c->config->{iscrizione}->{prezzo},
};
$c->stash->{template}='nuovo-pagamento.tt2';
}
sub pagamento :Local {
my ($self,$c)=@_;
my $params=$c->req->parameters;
my $iscritto=GroLUG::M::DB->resultset('Iscritto')->find($params->{iscr_id});
$c->log->info($c->user->id,'pagamento iscritto '.($iscritto->id));
my %data=map {$_ => $params->{$_}} qw(data_pagamento data_iscrizione data_scadenza prezzo);
$data{iscritto}=$iscritto->id;
if ($params->{pag_id} eq '') {
GroLUG::M::DB->resultset('Pagamento')->create(\%data);
}
else {
my $pag=GroLUG::M::DB->resultset('Pagamento')->find($params->{pag_id});
$pag->set_columns(\%data);
$pag->update();
}
$c->res->redirect($c->uri_for('scheda',$iscritto->id()));
}
1;