2017-08-31 12:16:38 +01: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" ,
) ;
2019-07-12 21:30:34 +01:00
__PACKAGE__ - > might_have (
"postcode" ,
"Pear::LocalLoop::Schema::Result::EntityPostcode" = > "entity_id" ,
) ;
2017-08-31 12:16:38 +01: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 } ,
) ;
2018-02-20 17:20:51 +00:00
__PACKAGE__ - > has_many (
"global_user_medals" ,
"Pear::LocalLoop::Schema::Result::GlobalUserMedals" ,
{ "foreign.entity_id" = > "self.id" } ,
{ cascade_copy = > 0 , cascade_delete = > 0 } ,
) ;
__PACKAGE__ - > has_many (
"global_user_medal_progress" ,
"Pear::LocalLoop::Schema::Result::GlobalUserMedalProgress" ,
{ "foreign.entity_id" = > "self.id" } ,
{ cascade_copy = > 0 , cascade_delete = > 0 } ,
) ;
2018-02-20 17:44:22 +00:00
__PACKAGE__ - > has_many (
"org_user_medals" ,
"Pear::LocalLoop::Schema::Result::OrgUserMedals" ,
{ "foreign.entity_id" = > "self.id" } ,
{ cascade_copy = > 0 , cascade_delete = > 0 } ,
) ;
__PACKAGE__ - > has_many (
"org_user_medal_progress" ,
"Pear::LocalLoop::Schema::Result::OrgUserMedalProgress" ,
{ "foreign.entity_id" = > "self.id" } ,
{ cascade_copy = > 0 , cascade_delete = > 0 } ,
) ;
2017-09-04 14:03:58 +01: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 18:01:06 +01: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 12:16:38 +01:00
1 ;