Added org lookup and assignment for import

This commit is contained in:
Tom Bloor 2017-11-14 15:02:46 +00:00
parent f0b1540f3e
commit 9d07830e27
4 changed files with 81 additions and 7 deletions

View file

@ -207,7 +207,6 @@ sub startup {
$admin_routes->get('/import/:set_id')->to('admin-import#list'); $admin_routes->get('/import/:set_id')->to('admin-import#list');
$admin_routes->get('/import/:set_id/user')->to('admin-import#get_user'); $admin_routes->get('/import/:set_id/user')->to('admin-import#get_user');
$admin_routes->get('/import/:set_id/org')->to('admin-import#get_org'); $admin_routes->get('/import/:set_id/org')->to('admin-import#get_org');
$admin_routes->post('/import/:set_id/org')->to('admin-import#set_org');
$admin_routes->get('/import/:set_id/:value_id')->to('admin-import#get_value'); $admin_routes->get('/import/:set_id/:value_id')->to('admin-import#get_value');
$admin_routes->post('/import/:set_id/:value_id')->to('admin-import#post_value'); $admin_routes->post('/import/:set_id/:value_id')->to('admin-import#post_value');

View file

@ -193,16 +193,51 @@ sub get_user {
); );
} }
sub get_org { sub get_org {
my $c = shift; my $c = shift;
my $set_id = $c->param('set_id');
my $org_name = $c->param('org');
my $values_rs = $c->result_set->find($set_id)->values->search(
{
org_name => $org_name,
ignore_value => 0,
}
);
unless ( $values_rs->count > 0 ) {
$c->flash( error => 'Organisation not found or all values are ignored' );
return $c->redirect_to( '/admin/import/' . $set_id );
} }
sub set_org { my $lookup_result = $c->result_set->find($set_id)->lookups->find(
my $c = shift; { name => $org_name },
);
my $entity_id = $c->param('entity');
my $orgs_rs = $c->schema->resultset('Organisation');
if ( defined $entity_id && $orgs_rs->find({ entity_id => $entity_id }) ) {
if ( defined $lookup_result ) {
$lookup_result->update({ entity_id => $entity_id });
} else {
$lookup_result = $c->result_set->find($set_id)->lookups->create(
{
name => $org_name,
entity_id => $entity_id,
},
);
}
} elsif ( defined $entity_id ) {
$c->stash( error => "Organisation does not exist" );
}
$c->stash(
orgs_rs => $orgs_rs,
lookup => $lookup_result,
org_name => $org_name,
);
} }
sub get_value { sub get_value {

View file

@ -0,0 +1,36 @@
% layout 'admin_errors';
% title 'Import';
<div class="row">
<div class="col-8">
<h3><%= $org_name %></h3>
</div>
<div class="col-4 mb-3">
<a href="<%= url_for '/admin/import/' . $c->param('set_id') %>"
class="btn btn-success">
Return to Import
</a>
</div>
<div class="col-12">
<div class="card">
<h4 class="card-header">
Organisations
</h4>
<div class="card-body text-muted">
Choose a user to assign to this name
</div>
<div class="list-group list-group-flush">
% for my $org ( $orgs_rs->all ) {
<a href="<%= url_with->query([ entity => $org->entity_id ]) %>"
class="list-group-item list-group-item-action<%= defined $lookup && $lookup->entity_id == $org->entity_id ? ' list-group-item-success' : '' %>">
<div class="row">
<div class="col-12">
%= $org->name
</div>
</div>
</a>
% }
</div>
</div>
</div>
</div>

View file

@ -59,10 +59,14 @@
%= $org->org_name %= $org->org_name
</div> </div>
<div class="col-4"> <div class="col-4">
% if ( my $lookup = $import_lookup_rs->find({ name => $org->org_name }) ) {
<span class="text-muted"><%= $lookup->entity->name %></span>
% } else {
<span class="text-muted font-italic">Unassigned</span> <span class="text-muted font-italic">Unassigned</span>
% }
</div> </div>
<div class="col-4"> <div class="col-4">
<a class="btn btn-primary">Select</a> <a href="<%= url_for(url_for . '/org')->query([ org => $org->org_name ]) %>" class="btn btn-primary">Select</a>
</div> </div>
</div> </div>
</div> </div>