File Coverage

blib/lib/AproJo/Admin.pm
Criterion Covered Total %
statement 6 36 16.6
branch 0 20 0.0
condition 0 6 0.0
subroutine 2 5 40.0
pod 0 3 0.0
total 8 70 11.4


line stmt bran cond sub pod time code
1             package AproJo::Admin;
2 1     1   738 use Mojo::Base 'Mojolicious::Controller';
  1         1  
  1         5  
3              
4 1     1   110 use Data::Dumper;
  1         1  
  1         390  
5              
6 0     0 0   sub change { shift->render }
7              
8             sub show {
9 0     0 0   my $self = shift;
10              
11 0           print STDERR 'Admin::show()',"\n";
12            
13             #my $table = $self->stash->{table};
14              
15 0           $self->render;
16             }
17              
18             sub save {
19 0     0 0   my $self = shift;
20 0           my $params = [$self->req->param()];
21              
22 0           my $table = $self->stash->{table};
23              
24 0           my $form = $self->form_handler($table);
25 0           $form->from_schema($self->schema, $table);
26              
27 0           my $data = {};
28              
29             $data->{$_} = $self->req->param($_) ? $self->req->param($_) : 0
30 0 0         for (@$params);
31            
32 0           for my $param (@$params) {
33 0 0         if ($form->elements->{$param}->{type} eq 'text' ) {
    0          
34 0 0         $data->{$param} =
35             $self->req->param($param) ? $self->req->param($param) : '';
36             }
37             elsif ($form->elements->{$param}->{type} eq 'number' ) {
38 0 0         $data->{$param} =
39             $self->req->param($param) ? $self->req->param($param) : 0;
40             }
41             else {
42 0 0         $data->{$param} =
43             $self->req->param($param) ? $self->req->param($param) : undef;
44             }
45             }
46              
47 0           my @elements = @{$form->ordered_elements};
  0            
48              
49 0           my @checkboxes =
50 0           grep { $form->elements->{$_}->{type} eq 'checkbox' } @elements;
51              
52 0           for my $param (@checkboxes) {
53 0 0 0       $data->{$param} =
54             (exists $data->{$param} && $data->{$param} eq 'on') ? 1 : 0;
55             }
56              
57 0           my $id_field = $form->id_field;
58 0 0         say STDERR 'Admin::save() $id_field: ',$id_field if $self->app->app_debug;
59 0 0 0       if (exists $data->{$id_field} && !$data->{$id_field}) {
60 0           delete $data->{$id_field};
61             }
62 0 0         say STDERR 'Admin::save() $data: ',Dumper($data) if $self->app->app_debug;
63              
64 0           my $rs = $self->schema->resultset($table);
65 0           $rs->update_or_create($data);
66              
67 0           $self->redirect_to('/admin/show/' . $table);
68             }
69              
70             1;