2017-08-31 11:16:38 +00:00
|
|
|
package Pear::LocalLoop::Schema::Result::Entity;
|
|
|
|
|
|
|
|
use strict;
|
|
|
|
use warnings;
|
|
|
|
|
|
|
|
use base 'DBIx::Class::Core';
|
|
|
|
|
|
|
|
__PACKAGE__->table("entities");
|
|
|
|
|
|
|
|
__PACKAGE__->add_columns(
|
|
|
|
"id" => {
|
|
|
|
data_type => "integer",
|
|
|
|
is_auto_increment => 1,
|
|
|
|
is_nullable => 0,
|
|
|
|
},
|
|
|
|
"type" => {
|
|
|
|
data_type => "varchar",
|
|
|
|
size => 255,
|
|
|
|
is_nullable => 0,
|
|
|
|
},
|
|
|
|
);
|
|
|
|
|
|
|
|
__PACKAGE__->set_primary_key("id");
|
|
|
|
|
|
|
|
__PACKAGE__->might_have(
|
|
|
|
"customer",
|
|
|
|
"Pear::LocalLoop::Schema::Result::Customer" => "entity_id",
|
|
|
|
);
|
|
|
|
|
|
|
|
__PACKAGE__->might_have(
|
|
|
|
"organisation",
|
|
|
|
"Pear::LocalLoop::Schema::Result::Organisation" => "entity_id",
|
|
|
|
);
|
|
|
|
|
|
|
|
__PACKAGE__->might_have(
|
|
|
|
"user",
|
|
|
|
"Pear::LocalLoop::Schema::Result::User" => "entity_id",
|
|
|
|
);
|
|
|
|
|
2017-11-23 14:54:59 +00:00
|
|
|
__PACKAGE__->might_have(
|
|
|
|
"associations",
|
|
|
|
"Pear::LocalLoop::Schema::Result::EntityAssociation" => "entity_id",
|
|
|
|
);
|
|
|
|
|
2017-08-31 11:16:38 +00:00
|
|
|
__PACKAGE__->has_many(
|
|
|
|
"purchases",
|
|
|
|
"Pear::LocalLoop::Schema::Result::Transaction",
|
|
|
|
{ "foreign.buyer_id" => "self.id" },
|
|
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
|
|
);
|
|
|
|
|
|
|
|
__PACKAGE__->has_many(
|
|
|
|
"sales",
|
|
|
|
"Pear::LocalLoop::Schema::Result::Transaction",
|
|
|
|
{ "foreign.seller_id" => "self.id" },
|
|
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
|
|
);
|
|
|
|
|
2017-09-04 13:03:58 +00:00
|
|
|
sub name {
|
|
|
|
my $self = shift;
|
|
|
|
|
|
|
|
if ( $self->type eq 'customer' ) {
|
|
|
|
return $self->customer->display_name;
|
|
|
|
} elsif ( $self->type eq 'organisation' ) {
|
|
|
|
return $self->organisation->name;
|
|
|
|
} else {
|
|
|
|
return "Unknown Name";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-09-27 17:01:06 +00:00
|
|
|
sub type_object {
|
|
|
|
my $self = shift;
|
|
|
|
|
|
|
|
if ( $self->type eq 'customer' ) {
|
|
|
|
return $self->customer;
|
|
|
|
} elsif ( $self->type eq 'organisation' ) {
|
|
|
|
return $self->organisation;
|
|
|
|
} else {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-08-31 11:16:38 +00:00
|
|
|
1;
|