CMS-Drupal-Modules-MembershipEntity
view release on metacpan or search on metacpan
lib/CMS/Drupal/Modules/MembershipEntity/Membership.pm view on Meta::CPAN
package CMS::Drupal::Modules::MembershipEntity::Membership;
$CMS::Drupal::Modules::MembershipEntity::Membership::VERSION = '0.96';
# ABSTRACT: Perl interface to a Drupal MembershipEntity membership
use strict;
use warnings;
use Moo;
use Types::Standard qw/ :all /;
has mid => ( is => 'ro', isa => Int, required => 1 );
has created => ( is => 'ro', isa => Int, required => 1 );
has changed => ( is => 'ro', isa => Int, required => 1 );
has uid => ( is => 'ro', isa => Int, required => 1 );
has status => ( is => 'ro', isa => Enum[ qw/0 1 2 3/ ], required => 1 );
has member_id => ( is => 'ro', isa => Str, required => 1 );
has type => ( is => 'ro', isa => Str, required => 1 );
has terms => ( is => 'ro', isa => HashRef, required => 1 );
sub is_expired {
my $self = shift;
$self->{'_is_expired'} = $self->{'status'} eq '0' ? 1 : 0;
return $self->{'_is_expired'};
}
sub is_active {
my $self = shift;
$self->{'_is_active'} = $self->{'status'} eq '1' ? 1 : 0;
return $self->{'_is_active'};
}
sub is_cancelled {
my $self = shift;
$self->{'_is_cancelled'} = $self->{'status'} eq '2' ? 1 : 0;
return $self->{'_is_cancelled'};
}
sub is_pending {
my $self = shift;
$self->{'_is_pending'} = $self->{'status'} eq '3' ? 1 : 0;
return $self->{'_is_pending'};
}
sub has_renewal {
my $self = shift;
$self->{'_has_renewal'} = 0;
foreach my $term ( values %{ $self->{'terms'} } ) {
$self->{'_has_renewal'} = 1 if ($term->is_future and $term->is_active);
}
return $self->{'_has_renewal'};
}
sub current_was_renewal {
my $self = shift;
$self->{'_current_was_renewal'} = 0;
foreach my $term ( values %{ $self->{'terms'} } ) {
$self->{'_current_was_renewal'} = 1 if ($term->is_current and $term->was_renewal);
}
return $self->{'_current_was_renewal'};
}
1; ## return true to end package MembershipEntity::Membership
__END__
=pod
=encoding UTF-8
=head1 NAME
( run in 0.507 second using v1.01-cache-2.11-cpan-39bf76dae61 )