#------------------------------------------------------------
# Copyright (C) 2006 RoyaltyShare, Inc.   All Rights Reserved
# $Id$
#------------------------------------------------------------
package Support::Module::Module;

use strict;
use warnings;
use Carp;

use lib '/app/tools/common/lib';
use Common::Assert;

use lib '/app/tools/support/lib';
use Support::DB::Item::ModuleAccess;
use Support::Module::PageList;
use Support::Permission;

use Support::Module::ModuleSimple;
use base 'Support::Module::ModuleSimple';

sub _init {
    my $self = shift;
    my %args = @_;

    $self->{_userID}        = $args{userID};
    $self->{_supportRoleID} = $args{supportRoleID};

    return $self->SUPER::_init(%args);
}

sub _initProperties {
    my $self = shift;

    $self->SUPER::_initProperties(@_);

    $self->{CanAccess} = $self->_CanAccess();
    $self->{CanWrite}  = $self->_CanWrite();

    $self->{ImpliedAccess} = 1 if ( $self->{CanAccess} && $self->{CanAccess} == 1 );
    $self->{ImpliedWrite}  = 1 if ( $self->{CanWrite}  && $self->{CanWrite} == 1 );

    $self->{Pages} = new Support::Module::PageList( moduleID => $self->ModuleID, restrictList => $self->{_restrictList} );

    return $self;
}

sub Pages {
    my $self = shift;
    return $self->{Pages}->Pages;
}

sub _CanAccess {
    my $self = shift;

    return Support::Permission->CanRead( supportRoleID => $self->{_supportRoleID}, userID => $self->{_userID}, module => $self->Slug );
}

sub _CanWrite {
    my $self = shift;

    return Support::Permission->CanWrite( supportRoleID => $self->{_supportRoleID}, userID => $self->{_userID}, module => $self->Slug );
}

1;
