App-Cinema

 view release on metacpan or  search on metacpan

lib/App/Cinema/Controller/Item.pm  view on Meta::CPAN

package App::Cinema::Controller::Item;
use Moose;
use namespace::autoclean;
use Mail::Mailer;
use HTTP::Date qw/time2iso/;

BEGIN {
	extends qw/Catalyst::Controller::FormBuilder/;
	our $VERSION = $App::Cinema::VERSION;
}

sub add : Local Form {
	my ( $self, $c ) = @_;
	my $form = $self->formbuilder;

	$form->field(
		name    => 'genre',
		options => [ map { [ $_->id, $_->name ] } $c->model('MD::Genre')->all ]
	);

	if ( $form->submitted && $form->validate ) {
		my $row = $c->model('MD::Item')->create(
			{
				title        => $form->field('title'),
				plot         => $form->field('plot'),
				year         => $form->field('year'),
				img          => $form->field('img'),
				release_date => HTTP::Date::time2iso(time),
				genre_items  => [ { g_id => $form->field('genre') }, ],
				uid          => $c->user->obj->username()
			}
		);

		my $e = App::Cinema::Event->new();
		$e->uid( $row->uid );
		$e->desc(' created movie : ');
		$e->target( $row->title );
		$e->insert($c);

		$c->flash->{message} = 'Created movie : ' . $row->title;
		$c->res->redirect( $c->uri_for('add') );
	}
}

sub detail : Local {
	my ( $self, $c, $id ) = @_;

	#find() returns a row object instead of a recordset
	$c->stash->{item} = $c->model('MD::Item')->find($id);
}

sub view : Local {
	my ( $self, $c ) = @_;
	my $rs = $c->model('MD::Item')->search( $c->session->{query},
		{ order_by => { -desc => 'release_date' } } );
	$c->stash->{items} = $rs;
}

sub delete_do : Local {
	my ( $self, $c, $id, $info ) = @_;

	eval { $c->assert_any_user_role(qw/admin sysadmin/); };
	if ($@) {
		$c->flash->{error} = $c->config->{need_auth_msg};
		$c->res->redirect( $c->uri_for('/item/view') );
		return;
	}

	$c->model('MD::Item')->find($id)->delete();

	my $e = App::Cinema::Event->new();
	$e->desc(' deleted movie : ');
	$e->target($info);
	$e->insert($c);

	$c->flash->{message} = "Item deleted";
	$c->res->redirect( $c->uri_for('/item/view') );
}

sub checkout_do : Local {
	my ( $self, $c, $id, $info ) = @_;



( run in 0.798 second using v1.01-cache-2.11-cpan-39bf76dae61 )