summaryrefslogtreecommitdiff
path: root/GroLUG/lib/GroLUG/C/Iscritto.pm
diff options
context:
space:
mode:
Diffstat (limited to 'GroLUG/lib/GroLUG/C/Iscritto.pm')
-rw-r--r--GroLUG/lib/GroLUG/C/Iscritto.pm60
1 files changed, 47 insertions, 13 deletions
diff --git a/GroLUG/lib/GroLUG/C/Iscritto.pm b/GroLUG/lib/GroLUG/C/Iscritto.pm
index e708c36..3e733ca 100644
--- a/GroLUG/lib/GroLUG/C/Iscritto.pm
+++ b/GroLUG/lib/GroLUG/C/Iscritto.pm
@@ -22,6 +22,39 @@ sub scheda :Local {
$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') { # ho i dati, li uso
+ 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') { # ho i dati, li uso
+ 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)=@_;
@@ -29,11 +62,12 @@ sub rinnova :Local {
$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 => $last_pag->data_scadenza->clone()->add(days => 1),
- data_scadenza => $last_pag->data_scadenza->clone()->add($c->config->{iscrizione}->{durata}),
+ data_iscrizione => $scadenza->clone()->add(days => 1),
+ data_scadenza => $scadenza->clone()->add($c->config->{iscrizione}->{durata}),
prezzo => $c->config->{iscrizione}->{prezzo},
};
@@ -49,17 +83,17 @@ sub pagamento :Local {
$c->log->info($c->user->id,'pagamento iscritto '.($iscritto->id));
- my $pagid= (($params->{pag_id} ne '') ? $params->{pag_id} : -1);
- my $pagamento=GroLUG::M::DB->resultset('Pagamento')->update_or_create(
- {
- id => $pagid,
- iscritto => $iscritto->id,
- data_pagamento => $params->{data_pagamento},
- data_iscrizione => $params->{data_iscrizione},
- data_scadenza => $params->{data_scadenza},
- prezzo => $params->{prezzo},
- },
- );
+ 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()));
}