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

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::LabelList;
use RPS::GenreList;
use RPS::GenreList;

use RPS::Product::ProductList;
use RPS::Product::PriceList;
use RPS::Product::StatusList;
use RPS::Product::TypeList;
use RPS::Product::ProductDigital;

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

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

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

	if ($args{albumID})
	{
		$self->{Album} = RPS::Catalog::Album->new(albumID => $args{albumID});

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

	}
	else
	{
		$self->{Album} = RPS::Catalog::Album->new();
	}

	$self->{LabelList} = RPS::LabelList->new();
	$self->{GenreList} = RPS::GenreList->new();
    $self->{ProductList} = RPS::Product::ProductList->new(albumID => $args{albumID}, loadSubs => 0);
    $self->{TrackProductList} = RPS::Product::ProductList->new(albumID => $args{albumID}, digitalTracksOnly => 1);
	# $self->{PriceList} = RPS::Product::PriceList->new();
	$self->{StatusList} = RPS::Product::StatusList->new();
	$self->{TypeList} = RPS::Product::TypeList->new();

	return $self;
}

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

	# The Album (and contained objects) can be edited.
	#
	if ($propertyName eq 'Album')
	{
		return 1;
	}
	return 0;
}

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

	my $valid = $self->{Album}->validate();

	return $valid;
}


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

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

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


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


###
1;#
###
