31 lines
889 B
Perl
31 lines
889 B
Perl
|
package Pear::LocalLoop::Plugin::Minion::Job::entity_postcode_lookup;
|
||
|
use Mojo::Base 'Pear::LocalLoop::Plugin::Minion::Job';
|
||
|
|
||
|
sub run {
|
||
|
my ( $self, $entity_id ) = @_;
|
||
|
|
||
|
my $entity_rs = $self->app->schema->resultset('Entity');
|
||
|
$entity_rs = $entity_rs->search({id => $entity_id }) if $entity_id;
|
||
|
|
||
|
while ( my $entity = $entity_rs->next ) {
|
||
|
my $obj = $entity->type_object;
|
||
|
next unless $obj;
|
||
|
|
||
|
my $postcode_obj = Geo::UK::Postcode::Regex->parse( $obj->postcode );
|
||
|
|
||
|
unless ( defined $postcode_obj && $postcode_obj->{non_geographical} ) {
|
||
|
my $pc_result = $self->app->schema->resultset('GbPostcode')->find({
|
||
|
incode => $postcode_obj->{incode},
|
||
|
outcode => $postcode_obj->{outcode},
|
||
|
});
|
||
|
if ( defined $pc_result ) {
|
||
|
$entity->update_or_create_related('postcode', {
|
||
|
gb_postcode => $pc_result,
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
1;
|