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

use strict;
use warnings;
use Carp;

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

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

use Common::FormObject;
use base 'Common::FormObject';

sub _init {
    my ( $self, %args ) = @_;

    my $userID        = $args{userID};
    my $supportRoleID = $args{supportRoleID};
    my $moduleID      = $args{moduleID};
    my $restrictList  = $args{restrictedList};

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

    my $modules;

    $self->{Module} = [];

    if ($moduleID) {
        $modules = Support::DB::Item::Module->Lookup( module_id => $moduleID );
    } else {
        $modules = Support::DB::Item::Module->GetAll();
    }

    while ( $modules->hasNext() ) {
        my $moduleData = $modules->next();
        my $modObj = new Support::Module::Module( _dbItem => $moduleData, userID => $userID, supportRoleID => $supportRoleID );

        if ( !$restrictList || $modObj->{CanAccess} || $supportRoleID ) {
            push( @{ $self->{Module} }, $modObj );
        }
    }

    return $self;
}

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

1;
