The Perl Advent Calendar needs more articles for 2022. Submit your idea today!
package Vote::Controller::Newpoll;

use strict;
use warnings;
use base 'Catalyst::Controller';

=head1 NAME

Vote::Controller::Newpoll - Catalyst Controller

=head1 DESCRIPTION

Catalyst Controller.

=head1 METHODS

=cut


=head2 index 

=cut

sub begin : Private {
    my ( $self, $c ) = @_;
    $c->model('Vote')->db->rollback;
}

sub index : Private {
    my ( $self, $c ) = @_;

    $c->stash->{page}{title} = 'Créer un nouveau vote';
    if ($c->req->param('mail')) {
        $c->model('Vote')->create_poll_request(
            mail => $c->req->param('mail'),
            url => $c->uri_for('/newpoll'),
            label => $c->req->param('label'),
        );
        $c->stash->{template} = 'newpoll/request.tt';
    }

}

sub default : LocalPath {
    my ( $self, $c, undef, $id ) = @_;

    $c->stash->{reqid} = $id;

    if (!$c->model('Vote')->poll_request_info($id)) {
        $c->stash->{page}{title} = "Aucune requête de création de vote";
        $c->stash->{template} = 'newpoll/norequest.tt';
        return;
    }

    $c->stash->{page}{title} = 'Confirmer la création d\'un nouveau vote';
    if ($c->req->param('passwd')) {
        my $pid = $c->model('Vote')->poll_from_request($id, $c->req->param('passwd'));
        $c->res->redirect($c->uri_for('/admin', $pid));
    }
}

=head1 AUTHOR

Thauvin Olivier

=head1 LICENSE

This library is free software, you can redistribute it and/or modify
it under the same terms as Perl itself or CeCILL.

=cut

1;