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 )