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') { # 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)=@_; $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;