summaryrefslogtreecommitdiff
path: root/GroLUG/lib/GroLUG/C/Iscritto.pm
blob: 3e733ca88063570ba69c42d973debccfb66d78e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
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_ideq '') {
        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;