summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@luxion>2006-02-10 16:15:50 +0000
committerdakkar <dakkar@luxion>2006-02-10 16:15:50 +0000
commit58a383deff213b1ffed3f48e91e2bb3dd1af3354 (patch)
tree92ea94eebfa02eaf4172d7d001cafe4f411eece5
parent r1306@host183-17: dakkar | 2006-02-10 10:25:10 +0100 (diff)
downloadIscrittiGroLUG-58a383deff213b1ffed3f48e91e2bb3dd1af3354.tar.gz
IscrittiGroLUG-58a383deff213b1ffed3f48e91e2bb3dd1af3354.tar.bz2
IscrittiGroLUG-58a383deff213b1ffed3f48e91e2bb3dd1af3354.zip
r1307@host183-17: dakkar | 2006-02-10 11:34:33 +0100
nuovo e edit iscritto, vari fix git-svn-id: svn://luxion/repos/IscrittiGroLUG/trunk@181 fcb26f47-9200-0410-b104-b98ab5b095f3
-rw-r--r--GroLUG/lib/GroLUG/C/Iscritto.pm60
-rw-r--r--GroLUG/lib/GroLUG/M/DB/Iscritto.pm3
-rw-r--r--GroLUG/root/src/edit-iscritto.tt27
-rw-r--r--GroLUG/root/src/nuovo-iscritto.tt27
4 files changed, 63 insertions, 14 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()));
}
diff --git a/GroLUG/lib/GroLUG/M/DB/Iscritto.pm b/GroLUG/lib/GroLUG/M/DB/Iscritto.pm
index ca475ee..1cea0ac 100644
--- a/GroLUG/lib/GroLUG/M/DB/Iscritto.pm
+++ b/GroLUG/lib/GroLUG/M/DB/Iscritto.pm
@@ -10,7 +10,8 @@ __PACKAGE__->has_many(pagamenti=>'GroLUG::M::DB::Pagamento','iscritto',{order_by
sub scadenza {
my ($self)=@_;
- return $self->pagamenti()->next()->data_scadenza();
+ my $last_pag=$self->pagamenti()->next();
+ return ($last_pag ? $last_pag->data_scadenza() : undef);
}
1;
diff --git a/GroLUG/root/src/edit-iscritto.tt2 b/GroLUG/root/src/edit-iscritto.tt2
new file mode 100644
index 0000000..e75765d
--- /dev/null
+++ b/GroLUG/root/src/edit-iscritto.tt2
@@ -0,0 +1,7 @@
+<h1>Modifica [% iscritto.nome %]</h1>
+<form action="[% Catalyst.uri_for('edit',iscritto.id) %]" method="post">
+<p><label for="nome">nome</label> <input type="text" id="nome" name="nome" value="[% iscritto.nome %]" /></p>
+<p><label for="email">email</label> <input type="text" id="email" name="email" value="[% iscritto.email %]" /></p>
+<p><label for="note">note</label> <input type="text" id="note" name="note" value="[% iscritto.note %]" /></p>
+<p><input type="submit" /></p>
+</form>
diff --git a/GroLUG/root/src/nuovo-iscritto.tt2 b/GroLUG/root/src/nuovo-iscritto.tt2
new file mode 100644
index 0000000..91bbfb9
--- /dev/null
+++ b/GroLUG/root/src/nuovo-iscritto.tt2
@@ -0,0 +1,7 @@
+<h1>Nuovo iscritto</h1>
+<form action="[% Catalyst.uri_for('nuovo') %]" method="post">
+<p><label for="nome">nome</label> <input type="text" id="nome" name="nome" value="[% iscritto.nome %]" /></p>
+<p><label for="email">email</label> <input type="text" id="email" name="email" value="[% iscritto.email %]" /></p>
+<p><label for="note">note</label> <input type="text" id="note" name="note" value="[% iscritto.note %]" /></p>
+<p><input type="submit" /></p>
+</form>