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(
|
2021-03-20 12:09:50 +00:00
|
|
|
"id" => {
|
|
|
|
data_type => "integer",
|
|
|
|
is_auto_increment => 1,
|
|
|
|
is_nullable => 0,
|
|
|
|
},
|
|
|
|
"type" => {
|
|
|
|
data_type => "varchar",
|
|
|
|
size => 255,
|
|
|
|
is_nullable => 0,
|
|
|
|
},
|
2017-08-31 11:16:38 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
__PACKAGE__->set_primary_key("id");
|
|
|
|
|
2021-03-20 12:09:50 +00:00
|
|
|
__PACKAGE__->might_have( "customer",
|
|
|
|
"Pear::LocalLoop::Schema::Result::Customer" => "entity_id", );
|
2017-08-31 11:16:38 +00:00
|
|
|
|
2021-03-20 12:09:50 +00:00
|
|
|
__PACKAGE__->might_have( "organisation",
|
|
|
|
"Pear::LocalLoop::Schema::Result::Organisation" => "entity_id", );
|
2017-08-31 11:16:38 +00:00
|
|
|
|
2021-03-20 12:09:50 +00:00
|
|
|
__PACKAGE__->might_have( "user",
|
|
|
|
"Pear::LocalLoop::Schema::Result::User" => "entity_id", );
|
2017-08-31 11:16:38 +00:00
|
|
|
|
2021-03-20 12:09:50 +00:00
|
|
|
__PACKAGE__->might_have( "associations",
|
|
|
|
"Pear::LocalLoop::Schema::Result::EntityAssociation" => "entity_id", );
|
2017-11-23 14:54:59 +00:00
|
|
|
|
2021-03-20 12:09:50 +00:00
|
|
|
__PACKAGE__->might_have( "postcode",
|
|
|
|
"Pear::LocalLoop::Schema::Result::EntityPostcode" => "entity_id", );
|
2019-07-12 20:30:34 +00:00
|
|
|
|
2017-08-31 11:16:38 +00:00
|
|
|
__PACKAGE__->has_many(
|
2021-03-20 12:09:50 +00:00
|
|
|
"purchases",
|
|
|
|
"Pear::LocalLoop::Schema::Result::Transaction",
|
|
|
|
{ "foreign.buyer_id" => "self.id" },
|
|
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
2017-08-31 11:16:38 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
__PACKAGE__->has_many(
|
2021-03-20 12:09:50 +00:00
|
|
|
"sales",
|
|
|
|
"Pear::LocalLoop::Schema::Result::Transaction",
|
|
|
|
{ "foreign.seller_id" => "self.id" },
|
|
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
2017-08-31 11:16:38 +00:00
|
|
|
);
|
|
|
|
|
2018-02-20 17:20:51 +00:00
|
|
|
__PACKAGE__->has_many(
|
2021-03-20 12:09:50 +00:00
|
|
|
"global_user_medals",
|
|
|
|
"Pear::LocalLoop::Schema::Result::GlobalUserMedals",
|
|
|
|
{ "foreign.entity_id" => "self.id" },
|
|
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
2018-02-20 17:20:51 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
__PACKAGE__->has_many(
|
2021-03-20 12:09:50 +00:00
|
|
|
"global_user_medal_progress",
|
|
|
|
"Pear::LocalLoop::Schema::Result::GlobalUserMedalProgress",
|
|
|
|
{ "foreign.entity_id" => "self.id" },
|
|
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
2018-02-20 17:20:51 +00:00
|
|
|
);
|
|
|
|
|
2018-02-20 17:44:22 +00:00
|
|
|
__PACKAGE__->has_many(
|
2021-03-20 12:09:50 +00:00
|
|
|
"org_user_medals",
|
|
|
|
"Pear::LocalLoop::Schema::Result::OrgUserMedals",
|
|
|
|
{ "foreign.entity_id" => "self.id" },
|
|
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
2018-02-20 17:44:22 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
__PACKAGE__->has_many(
|
2021-03-20 12:09:50 +00:00
|
|
|
"org_user_medal_progress",
|
|
|
|
"Pear::LocalLoop::Schema::Result::OrgUserMedalProgress",
|
|
|
|
{ "foreign.entity_id" => "self.id" },
|
|
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
2018-02-20 17:44:22 +00:00
|
|
|
);
|
|
|
|
|
2017-09-04 13:03:58 +00:00
|
|
|
sub name {
|
2021-03-20 12:09:50 +00:00
|
|
|
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-04 13:03:58 +00:00
|
|
|
}
|
|
|
|
|
2017-09-27 17:01:06 +00:00
|
|
|
sub type_object {
|
2021-03-20 12:09:50 +00:00
|
|
|
my $self = shift;
|
|
|
|
|
|
|
|
if ( $self->type eq 'customer' ) {
|
|
|
|
return $self->customer;
|
|
|
|
}
|
|
|
|
elsif ( $self->type eq 'organisation' ) {
|
|
|
|
return $self->organisation;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
return;
|
|
|
|
}
|
2017-09-27 17:01:06 +00:00
|
|
|
}
|
|
|
|
|
2017-08-31 11:16:38 +00:00
|
|
|
1;
|