From 58a383deff213b1ffed3f48e91e2bb3dd1af3354 Mon Sep 17 00:00:00 2001 From: dakkar Date: Fri, 10 Feb 2006 16:15:50 +0000 Subject: 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 --- GroLUG/lib/GroLUG/C/Iscritto.pm | 60 +++++++++++++++++++++++++++++--------- GroLUG/lib/GroLUG/M/DB/Iscritto.pm | 3 +- GroLUG/root/src/edit-iscritto.tt2 | 7 +++++ GroLUG/root/src/nuovo-iscritto.tt2 | 7 +++++ 4 files changed, 63 insertions(+), 14 deletions(-) create mode 100644 GroLUG/root/src/edit-iscritto.tt2 create mode 100644 GroLUG/root/src/nuovo-iscritto.tt2 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 @@ +

Modifica [% iscritto.nome %]

+
+

+

+

+

+
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 @@ +

Nuovo iscritto

+
+

+

+

+

+
-- cgit v1.2.3