137 lines
2.6 KiB
Perl
137 lines
2.6 KiB
Perl
package Pear::LocalLoop::Schema::Result::Organisation;
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use base 'DBIx::Class::Core';
|
|
|
|
__PACKAGE__->load_components("InflateColumn::DateTime", "FilterColumn");
|
|
|
|
__PACKAGE__->table("organisations");
|
|
|
|
__PACKAGE__->add_columns(
|
|
id => {
|
|
data_type => 'integer',
|
|
is_auto_increment => 1,
|
|
is_nullable => 0,
|
|
},
|
|
entity_id => {
|
|
data_type => 'integer',
|
|
is_nullable => 0,
|
|
is_foreign_key => 1,
|
|
},
|
|
name => {
|
|
data_type => 'varchar',
|
|
size => 255,
|
|
is_nullable => 0,
|
|
},
|
|
street_name => {
|
|
data_type => 'text',
|
|
is_nullable => 1,
|
|
},
|
|
town => {
|
|
data_type => 'varchar',
|
|
size => 255,
|
|
is_nullable => 0,
|
|
},
|
|
postcode => {
|
|
data_type => 'varchar',
|
|
size => 16,
|
|
is_nullable => 1,
|
|
},
|
|
country => {
|
|
data_type => 'varchar',
|
|
size => 255,
|
|
is_nullable => 1,
|
|
},
|
|
sector => {
|
|
data_type => 'varchar',
|
|
size => 1,
|
|
is_nullable => 1,
|
|
},
|
|
pending => {
|
|
data_type => 'boolean',
|
|
default => \"false",
|
|
is_nullable => 0,
|
|
},
|
|
is_local => {
|
|
data_type => 'boolean',
|
|
default => undef,
|
|
is_nullable => 1,
|
|
},
|
|
is_fair => {
|
|
data_type => 'boolean',
|
|
default => undef,
|
|
is_nullable => 1,
|
|
},
|
|
submitted_by_id => {
|
|
data_type => 'integer',
|
|
is_nullable => 1,
|
|
},
|
|
latitude => {
|
|
data_type => 'decimal',
|
|
size => [8,5],
|
|
is_nullable => 1,
|
|
default_value => undef,
|
|
},
|
|
longitude => {
|
|
data_type => 'decimal',
|
|
size => [8,5],
|
|
is_nullable => 1,
|
|
default_value => undef,
|
|
},
|
|
);
|
|
|
|
__PACKAGE__->set_primary_key('id');
|
|
|
|
__PACKAGE__->belongs_to(
|
|
"entity",
|
|
"Pear::LocalLoop::Schema::Result::Entity",
|
|
"entity_id",
|
|
);
|
|
|
|
__PACKAGE__->has_many(
|
|
"payroll",
|
|
"Pear::LocalLoop::Schema::Result::OrganisationPayroll",
|
|
{ "foreign.org_id" => "self.id" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
__PACKAGE__->filter_column(
|
|
pending => {
|
|
filter_to_storage => 'to_bool',
|
|
},
|
|
is_local => {
|
|
filter_to_storage => 'to_bool',
|
|
}
|
|
);
|
|
|
|
# Only works when calling ->deploy, but atleast helps for tests
|
|
sub sqlt_deploy_hook {
|
|
my ( $source_instance, $sqlt_table ) = @_;
|
|
my $pending_field = $sqlt_table->get_field('pending');
|
|
if ( $sqlt_table->schema->translator->producer_type =~ /SQLite$/ ) {
|
|
$pending_field->{default_value} = 0;
|
|
} else {
|
|
$pending_field->{default_value} = \"false";
|
|
}
|
|
}
|
|
|
|
sub to_bool {
|
|
my ( $self, $val ) = @_;
|
|
return if ! defined $val;
|
|
my $driver_name = $self->result_source->schema->storage->dbh->{Driver}->{Name};
|
|
if ( $driver_name eq 'SQLite' ) {
|
|
return $val ? 1 : 0;
|
|
} else {
|
|
return $val ? 'true' : 'false';
|
|
}
|
|
}
|
|
|
|
sub user {
|
|
my $self = shift;
|
|
|
|
return $self->entity->user;
|
|
}
|
|
|
|
1;
|