#------------------------------------------------------------
# Copyright (C) 2006 RoyaltyShare, Inc.   All Rights Reserved
#------------------------------------------------------------
package RPS::Catalog::EditForm;

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

use lib '/app/tools/rps/lib';
use RPS::Catalog::Album;
use RPS::Product::ProductDigital;
#use RPS::Catalog::ArtistList;
use RPS::LabelList;
use RPS::GenreList;
use RPS::ArtistRoleList;
use RPS::Catalog::AlbumAdditionalArtistHash;
use RPS::RoyaltyRun::RoyaltyRunStatusList;

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

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

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

    $self->{Album} = $self->_instantiateAlbum($args{albumID});


	#$self->{ArtistList} = RPS::Catalog::ArtistList->new();
	$self->{LabelList} = RPS::LabelList->new();
	$self->{GenreList} = RPS::GenreList->new();
	$self->{ArtistRoleList} = RPS::ArtistRoleList->new();

    my $albums  = RPS::DB::Item::ProductDigital->GetByAlbumID( $args{albumID} );
    my $digiproduct = $albums->next() if( $albums );

    $self->{ProductDigital} = RPS::Product::ProductDigital->new( productID => $digiproduct->{product_id} );
    $self->{RoyaltyRunStatus} = RPS::RoyaltyRun::RoyaltyRunStatusList->new( label => 1 );

	return $self;
}

sub _instantiateAlbum
{
    my ($self, $albumID) = @_;

	if ($albumID)
	{
		$self->{Album} = RPS::Catalog::Album->new(albumID => $albumID, loadSubs => 0);
	}
	else
	{
		$self->{Album} = RPS::Catalog::Album->new(loadSubs => 0);
	}
}

sub _propertyIsEditable
{
	my ($self, $propertyName) = @_;

	# The Product (and contained objects) can be edited.

	return 1 if ($propertyName eq 'Album');
	return 1 if ($propertyName eq 'ProductDigital');
	return 1 if ($propertyName eq 'AlbumAdditionalArtistList');
	return 0;
}

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

	# JPK - This is one of those situations where I _don't_ want to
	# validate everything this object contains.  It's a waste of time
	# to validate the <Album>, for example, since we don't support making
	# changes to it.
	#
	return $self->{Album}->validate( %args );
}


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

	# my $userID = Common::RSApp::GetActiveUserID();

	$self->{Album}->save();
    $self->{ProductDigital}->save();
}


sub albumID
{
	my ($self) = @_;
	return $self->{Album}->AlbumID();
}


###
1;#
###
