Merge pull request #32 from Pear-Trading/finn/AddOrg
Add Organisation & test
This commit is contained in:
commit
f0334be0fc
5 changed files with 86 additions and 0 deletions
|
@ -171,6 +171,8 @@ sub startup {
|
||||||
$admin_routes->post('/users/:id/delete')->to('admin-users#delete');
|
$admin_routes->post('/users/:id/delete')->to('admin-users#delete');
|
||||||
|
|
||||||
$admin_routes->get('/organisations')->to('admin-organisations#list');
|
$admin_routes->get('/organisations')->to('admin-organisations#list');
|
||||||
|
$admin_routes->get('/organisations/add')->to('admin-organisations#add_org');
|
||||||
|
$admin_routes->post('/organisations/add/submit')->to('admin-organisations#add_org_submit');
|
||||||
$admin_routes->get('/organisations/valid/:id')->to('admin-organisations#valid_read');
|
$admin_routes->get('/organisations/valid/:id')->to('admin-organisations#valid_read');
|
||||||
$admin_routes->post('/organisations/valid/:id/edit')->to('admin-organisations#valid_edit');
|
$admin_routes->post('/organisations/valid/:id/edit')->to('admin-organisations#valid_edit');
|
||||||
$admin_routes->get('/organisations/pending/:id')->to('admin-organisations#pending_read');
|
$admin_routes->get('/organisations/pending/:id')->to('admin-organisations#pending_read');
|
||||||
|
|
|
@ -16,6 +16,46 @@ sub list {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub add_org {
|
||||||
|
my $c = shift;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub add_org_submit {
|
||||||
|
my $c = shift;
|
||||||
|
|
||||||
|
my $validation = $c->validation;
|
||||||
|
|
||||||
|
$validation->required('name');
|
||||||
|
$validation->optional('street_name');
|
||||||
|
$validation->required('town');
|
||||||
|
$validation->optional('postcode')->postcode;
|
||||||
|
|
||||||
|
if ( $validation->has_error ) {
|
||||||
|
$c->flash( error => 'The validation has failed' );
|
||||||
|
$c->app->log->warn(Dumper $validation);
|
||||||
|
return $c->redirect_to( '/admin/organisations/add/' );
|
||||||
|
}
|
||||||
|
|
||||||
|
my $organisation;
|
||||||
|
|
||||||
|
try {
|
||||||
|
$organisation = $c->schema->resultset('Organisation')->create({
|
||||||
|
name => $validation->param('name'),
|
||||||
|
street_name => $validation->param('street_name'),
|
||||||
|
town => $validation->param('town'),
|
||||||
|
postcode => $validation->param('postcode'),
|
||||||
|
});
|
||||||
|
} finally {
|
||||||
|
if ( @_ ) {
|
||||||
|
$c->flash( error => 'Something went wrong Adding the Organisation' );
|
||||||
|
$c->app->log->warn(Dumper @_);
|
||||||
|
} else {
|
||||||
|
$c->flash( success => 'Added Organisation' );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
$c->redirect_to( '/admin/organisations/add/' );
|
||||||
|
}
|
||||||
|
|
||||||
sub valid_read {
|
sub valid_read {
|
||||||
my $c = shift;
|
my $c = shift;
|
||||||
my $valid_org = $c->schema->resultset('Organisation')->find( $c->param('id') );
|
my $valid_org = $c->schema->resultset('Organisation')->find( $c->param('id') );
|
||||||
|
|
|
@ -78,4 +78,19 @@ $t->post_ok('/admin/organisations/pending/2/edit', form => {
|
||||||
postcode => 'WC1E 6AD',
|
postcode => 'WC1E 6AD',
|
||||||
})->content_like(qr/The validation has failed/);
|
})->content_like(qr/The validation has failed/);
|
||||||
|
|
||||||
|
#Valid adding organisation
|
||||||
|
$t->post_ok('/admin/organisations/add/submit', form => {
|
||||||
|
name => 'Wall Market',
|
||||||
|
street_name => 'Slums, Sector 6',
|
||||||
|
town => 'Midgar',
|
||||||
|
postcode => 'TN35 5AQ',
|
||||||
|
})->status_is(200)->content_like(qr/Added Organisation/);
|
||||||
|
|
||||||
|
#Failed validation on adding organisation
|
||||||
|
$t->post_ok('/admin/organisations/add/submit', form => {
|
||||||
|
name => 'Wall Market',
|
||||||
|
street_name => 'Slums, Sector 6',
|
||||||
|
postcode => 'TN35 5AQ',
|
||||||
|
})->content_like(qr/The validation has failed/);
|
||||||
|
|
||||||
done_testing();
|
done_testing();
|
28
templates/admin/organisations/add_org.html.ep
Normal file
28
templates/admin/organisations/add_org.html.ep
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
% layout 'admin';
|
||||||
|
% title 'Organisations';
|
||||||
|
% content_for javascript => begin
|
||||||
|
% end
|
||||||
|
% if ( my $error = flash 'error' ) {
|
||||||
|
<div class="alert alert-danger" role="alert">
|
||||||
|
<strong>Error!</strong> <%= $error %>
|
||||||
|
</div>
|
||||||
|
% } elsif ( my $success = flash 'success' ) {
|
||||||
|
<div class="alert alert-success" role="alert">
|
||||||
|
<strong>Success!</strong> <%= $success %>
|
||||||
|
</div>
|
||||||
|
% }
|
||||||
|
<div class="card mb-3">
|
||||||
|
<h3 class="card-header">
|
||||||
|
Add an Organisation
|
||||||
|
</h3>
|
||||||
|
<ul class="list-group list-group-flush">
|
||||||
|
<form action="<%= url_for . '/submit' %>" method="post">
|
||||||
|
<li class="list-group-item">Only 'Organisation Name' and 'Town' are required entries.</li>
|
||||||
|
<li class="list-group-item"><input id="name" type="text" class="form-control" placeholder="Organisation Name" name="name"></li>
|
||||||
|
<li class="list-group-item"><input id="street_name" type="text" class="form-control" placeholder="Street Name" name="street_name"></li>
|
||||||
|
<li class="list-group-item"><input id="town" type="text" class="form-control" placeholder="Town" name="town"></li>
|
||||||
|
<li class="list-group-item"><input id="postcode" type="text" class="form-control" placeholder="Postcode" name="postcode"></li>
|
||||||
|
<li class="list-group-item"><button class="btn btn-success" type="submit">Add Organisation</button></li>
|
||||||
|
</form>
|
||||||
|
</ul>
|
||||||
|
</div>
|
|
@ -16,6 +16,7 @@
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h3 class="card-header">
|
<h3 class="card-header">
|
||||||
Valid Organisations
|
Valid Organisations
|
||||||
|
<a href="<%= url_for . '/add' %>" class="btn btn-success" style="float: right">Add Organisation</a>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="list-group list-group-flush">
|
<div class="list-group list-group-flush">
|
||||||
% for my $valid_org ($valid_orgs_rs->all) {
|
% for my $valid_org ($valid_orgs_rs->all) {
|
||||||
|
|
Reference in a new issue