diff --git a/lib/Pear/LocalLoop.pm b/lib/Pear/LocalLoop.pm index f06b1c0..c2e5972 100644 --- a/lib/Pear/LocalLoop.pm +++ b/lib/Pear/LocalLoop.pm @@ -179,12 +179,9 @@ sub startup { $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->post('/organisations/valid/:id/edit')->to('admin-organisations#valid_edit'); - $admin_routes->get('/organisations/pending/:id')->to('admin-organisations#pending_read'); - $admin_routes->post('/organisations/pending/:id/edit')->to('admin-organisations#pending_edit'); - $admin_routes->get('/organisations/pending/:id/approve')->to('admin-organisations#pending_approve'); + $admin_routes->post('/organisations/add')->to('admin-organisations#add_org_submit'); + $admin_routes->get('/organisations/:id')->to('admin-organisations#valid_read'); + $admin_routes->post('/organisations/:id')->to('admin-organisations#valid_edit'); $admin_routes->get('/feedback')->to('admin-feedback#index'); $admin_routes->get('/feedback/:id')->to('admin-feedback#read'); diff --git a/lib/Pear/LocalLoop/Controller/Admin/Organisations.pm b/lib/Pear/LocalLoop/Controller/Admin/Organisations.pm index f382a5e..dba62e0 100644 --- a/lib/Pear/LocalLoop/Controller/Admin/Organisations.pm +++ b/lib/Pear/LocalLoop/Controller/Admin/Organisations.pm @@ -2,7 +2,6 @@ package Pear::LocalLoop::Controller::Admin::Organisations; use Mojo::Base 'Mojolicious::Controller'; use Try::Tiny; -use Data::Dumper; sub list { my $c = shift; @@ -33,35 +32,38 @@ sub add_org_submit { if ( $validation->has_error ) { $c->flash( error => 'The validation has failed' ); - $c->app->log->warn(Dumper $validation); - return $c->redirect_to( '/admin/organisations/add/' ); + 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'), - sector => $validation->param('sector'), - postcode => $validation->param('postcode'), + my $entity = $c->schema->resultset('Entity')->create({ + organisation => { + name => $validation->param('name'), + street_name => $validation->param('street_name'), + town => $validation->param('town'), + sector => $validation->param('sector'), + postcode => $validation->param('postcode'), + }, + type => 'organisation', }); + $organisation = $entity->organisation; } finally { if ( @_ ) { $c->flash( error => 'Something went wrong Adding the Organisation' ); - $c->app->log->warn(Dumper @_); + $c->redirect_to( '/admin/organisations/add' ); } else { $c->flash( success => 'Added Organisation' ); + $c->redirect_to( '/admin/organisations/' . $organisation->id); } }; - $c->redirect_to( '/admin/organisations/add/' ); } sub valid_read { my $c = shift; my $valid_org = $c->schema->resultset('Organisation')->find( $c->param('id') ); - my $transactions = $valid_org->transactions->search( + my $transactions = $valid_org->entity->sales->search( undef, { page => $c->param('page') || 1, rows => 10, @@ -86,8 +88,7 @@ sub valid_edit { if ( $validation->has_error ) { $c->flash( error => 'The validation has failed' ); - $c->app->log->warn(Dumper $validation); - return $c->redirect_to( '/admin/organisations/valid/' . $c->param('id') ); + return $c->redirect_to( '/admin/organisations/' . $c->param('id') ); } my $valid_org = $c->schema->resultset('Organisation')->find( $c->param('id') ); @@ -105,90 +106,11 @@ sub valid_edit { } finally { if ( @_ ) { $c->flash( error => 'Something went wrong Updating the Organisation' ); - $c->app->log->warn(Dumper @_); } else { $c->flash( success => 'Updated Organisation' ); } }; - $c->redirect_to( '/admin/organisations/valid/' . $valid_org->id ); -} - -sub pending_read { - my $c = shift; - my $pending_org = $c->schema->resultset('PendingOrganisation')->find( $c->param('id') ); - my $transactions = $pending_org->transactions->search( - undef, { - page => $c->param('page') || 1, - rows => 10, - }, - ); - $c->stash( - pending_org => $pending_org, - transactions => $transactions, - ); -} - -sub pending_edit { - my $c = shift; - - my $validation = $c->validation; - $validation->required('name'); - $validation->required('street_name'); - $validation->required('town'); - $validation->required('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/pending/' . $c->param('id') ); - } - - my $pending_org = $c->schema->resultset('PendingOrganisation')->find( $c->param('id') ); - - try { - $c->schema->storage->txn_do( sub { - $pending_org->update({ - 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 Updating the Organisation' ); - $c->app->log->warn(Dumper @_); - } else { - $c->flash( success => 'Updated Organisation' ); - } - }; - $c->redirect_to( '/admin/organisations/pending/' . $pending_org->id ); -} - -sub pending_approve { - my $c = shift; - my $pending_org = $c->schema->resultset('PendingOrganisation')->find( $c->param('id') ); - - my $valid_org; - try { - $c->schema->storage->txn_do( sub { - $valid_org = $c->schema->resultset('Organisation')->create({ - name => $pending_org->name, - street_name => $pending_org->street_name, - town => $pending_org->town, - postcode => $pending_org->postcode, - }); - $c->copy_transactions_and_delete( $pending_org, $valid_org ); - } ); - } finally { - if ( @_ ) { - $c->flash( error => 'Something went wrong Validating the Organisation' ); - $c->redirect_to( '/admin/organisations/pending/' . $pending_org->id ); - } else { - $c->flash( success => 'Validated Organisation' ); - $c->redirect_to( '/admin/organisations/valid/' . $valid_org->id ); - } - } + $c->redirect_to( '/admin/organisations/' . $valid_org->id ); } 1; diff --git a/t/admin/organisation.t b/t/admin/organisation.t index 8ac7af6..cfc906b 100644 --- a/t/admin/organisation.t +++ b/t/admin/organisation.t @@ -1,38 +1,42 @@ use Mojo::Base -strict; +use FindBin qw/ $Bin /; + use Test::More; -use Mojo::JSON; use Test::Pear::LocalLoop; -my $framework = Test::Pear::LocalLoop->new; +my $framework = Test::Pear::LocalLoop->new( + etc_dir => "$Bin/../etc", +); +$framework->install_fixtures('users'); my $t = $framework->framework; my $schema = $t->app->schema; -my $user = $schema->resultset('User')->create({ - email => 'admin@example.com', - password => 'abc123', - administrator => {}, +my $valid_entity = $schema->resultset('Entity')->create({ + organisation => { + name => 'Shinra Electric Power Company', + street_name => 'Sector 0, Midgar, Eastern Continent', + town => 'Gaia', + sector => 'A', + postcode => 'WC1E 6AD', + }, + type => "organisation", }); -is $schema->resultset('Administrator')->count, 1, 'Admin Created'; - -$schema->resultset('Organisation')->create({ - id => 1, - name => 'Shinra Electric Power Company', - street_name => 'Sector 0, Midgar, Eastern Continent', - town => 'Gaia', - sector => 'A', - postcode => 'WC1E 6AD', +my $pending_entity = $schema->resultset('Entity')->create({ + organisation => { + name => '7th Heaven', + street_name => 'Slums, Sector 7', + town => 'Midgar', + sector => 'A', + postcode => 'WC1E 6AD', + pending => \"1", + }, + type => "organisation", }); -$schema->resultset('PendingOrganisation')->create({ - id => 2, - name => '7th Heaven', - street_name => 'Slums, Sector 7', - town => 'Midgar', - postcode => 'WC1E 6AD', - submitted_by_id => $user->id, -}); +my $valid_id = $valid_entity->organisation->id; +my $pending_id = $pending_entity->organisation->id; #login to admin $t->ua->max_redirects(10); @@ -42,15 +46,15 @@ $t->post_ok('/admin', form => { })->status_is(200); #Read approved organisation -$t->get_ok('/admin/organisations/valid/1/') - ->status_is(200); +$t->get_ok("/admin/organisations/$valid_id") + ->status_is(200)->or($framework->dump_error); #Read pending organisation -$t->get_ok('/admin/organisations/pending/2/') - ->status_is(200); +$t->get_ok("/admin/organisations/$pending_id") + ->status_is(200)->or($framework->dump_error); #Valid approved organisation update -$t->post_ok('/admin/organisations/valid/1/edit', form => { +$t->post_ok("/admin/organisations/$valid_id", form => { name => 'Shinra Electric Power Company', street_name => 'Sector 0, Midgar, Eastern Continent', town => 'Gaia', @@ -59,7 +63,7 @@ $t->post_ok('/admin/organisations/valid/1/edit', form => { })->status_is(200)->content_like(qr/Updated Organisation/); #Failed validation on approved organisation -$t->post_ok('/admin/organisations/valid/1/edit', form => { +$t->post_ok("/admin/organisations/$valid_id", form => { name => 'Shinra Electric Power Company', street_name => 'Sector 0, Midgar, Eastern Continent', sector => 'A', @@ -67,7 +71,7 @@ $t->post_ok('/admin/organisations/valid/1/edit', form => { })->content_like(qr/The validation has failed/); #Valid pending organisation update -$t->post_ok('/admin/organisations/pending/2/edit', form => { +$t->post_ok("/admin/organisations/$pending_id", form => { name => '7th Heaven', street_name => 'Slums, Sector 7', town => 'Midgar', @@ -75,14 +79,14 @@ $t->post_ok('/admin/organisations/pending/2/edit', form => { })->status_is(200)->content_like(qr/Updated Organisation/); #Failed validation on pending organisation -$t->post_ok('/admin/organisations/pending/2/edit', form => { +$t->post_ok("/admin/organisations/$pending_id", form => { name => '7th Heaven', street_name => 'Slums, Sector 7', postcode => 'WC1E 6AD', })->content_like(qr/The validation has failed/); #Valid adding organisation -$t->post_ok('/admin/organisations/add/submit', form => { +$t->post_ok('/admin/organisations/add', form => { name => 'Wall Market', street_name => 'Slums, Sector 6', town => 'Midgar', @@ -91,7 +95,7 @@ $t->post_ok('/admin/organisations/add/submit', form => { })->status_is(200)->content_like(qr/Added Organisation/); #Failed validation on adding organisation -$t->post_ok('/admin/organisations/add/submit', form => { +$t->post_ok('/admin/organisations/add', form => { name => 'Wall Market', street_name => 'Slums, Sector 6', postcode => 'TN35 5AQ',