#------------------------------------------------------------
# Copyright (C) 2006 RoyaltyShare, Inc.   All Rights Reserved
# $Id$
#------------------------------------------------------------
package Admin::Permission::AddForm;

use strict;
use warnings;

use lib '/app/tools/common/lib';
use Common::Assert;
use Common::DB::Item::Permission;
use Common::DB::Item::AccessLevel;

use lib '/app/tools/rps/lib';

# !!! Should move XMLObject into Common namespace

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

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

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

    $self->{Application} = Common::FormObject::Scalar::String->new( value => '', maxlength => 32 );
    $self->{Area}        = Common::FormObject::Scalar::String->new( value => '', maxlength => 32 );
    $self->{Command}     = Common::FormObject::Scalar::String->new( value => '', maxlength => 32 );

    return $self;
}

sub save {
    my ($self) = @_;

    # Create a set of permissions.
    # We'll default to having access level 1 as the only enabled level.
    #
    my $levels = Common::DB::Item::AccessLevel->GetAll();
    while ( my $level = $levels->next() ) {
        my $id      = $level->access_level_id;
        my $enabled = 0;
        if ( 1 == $id ) {
            $enabled = 1;
        }

        my $newPermission = Common::DB::Item::Permission->Create(
            application     => $self->Application(),
            area            => $self->Area(),
            command         => $self->Command(),
            access_level_id => $id,
            enabled         => $enabled,
        );
        $newPermission->save();
    }

    return 1;
}

###
1;    #
###

