Expense-Tracker

 view release on metacpan or  search on metacpan

lib/ExpenseTracker/Controllers/Base.pm  view on Meta::CPAN

package ExpenseTracker::Controllers::Base;
{
  $ExpenseTracker::Controllers::Base::VERSION = '0.008';
}
{
  $ExpenseTracker::Controllers::Base::VERSION = '0.008';
}

use strict;
use warnings;

use Mojo::Base 'Mojolicious::Controller';
use Mojo::JSON;
use Mojo::Util;
use DateTime;

use DBIx::Class::ResultClass::HashRefInflator;
use Lingua::EN::Inflect qw/PL/;


sub new{
  my $self = shift;
  
  my $obj = $self->SUPER::new(@_);
  
  $obj->_after_init();
  
  return $obj;
}

sub create{
  my $self = shift;
  
  $self->_before_create( @_ );
  
  my $result = $self->app->model
    ->resultset( $self->{resource} )    
    ->create( $self->{_payload} );   

  return $self->render_json( $result->{_column_data} );
}

sub update{
  my $self = shift;
  
  my $result_rs = $self->app->model
    ->resultset( $self->{resource} )
    ->search_rs(
        { id => $self->param('id') },         
    );
  
  return $self->render_not_found if ( scalar( ( $result_rs->all ) ) == 0 );  
  
  $result_rs->update_all( $self->{_payload} );
  
  $result_rs->result_class('DBIx::Class::ResultClass::HashRefInflator');
  my @result = $result_rs->all();
  return $self->render_json( @result );
}

sub list{
  my $self = shift;  
    
  my $result = $self->app->model
    ->resultset( $self->{resource} )
    ->search_rs;
  
  $result->result_class('DBIx::Class::ResultClass::HashRefInflator');

  #TODO: paging for the records
  return $self->render_json( [ $result->all() ] );
}


sub show{
  my $self = shift;
  
  my $result = $self->app->model
      ->resultset( $self->{resource} )
      ->search_rs(
          { id => $self->param('id') },
          { result_class => 'DBIx::Class::ResultClass::HashRefInflator' },
      )
      ->first;  
  
  return $self->render_not_found if ( ref $result eq 'HASHREF' );
  return $self->render_json( $result );
}

sub remove{
  my $self = shift;  
  
  my $result_rs = $self->app->model
      ->resultset( $self->{resource} )
      ->search_rs(
          { id => $self->param('id') },         
      );

  
  return $self->render_not_found if ( scalar( ( $result_rs->all ) ) == 0 );
  
  $result_rs->delete_all;
  



( run in 2.517 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )