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

use strict;
use warnings;
use Carp;

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

use lib '/app/tools/bookpub/lib';
use BookPub::Tracker::Service;

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

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

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

    if ( $args{_dbItem} ) {
        assert( 0, "No DB" );
    } elsif ( $args{serviceID} ) {
        return $self->_initFromHash( $args{serviceID} );
    } else {
        return $self->_initProperties( {} );
    }
}

sub _initFromHash {
    my ( $self, $serviceID ) = @_;

    Common::Log::Debug("ID: $serviceID");

    my $name = BookPub::Tracker::Service::GetDefaultServiceName( service_id => $serviceID );
    my $clean_name = BookPub::Tracker::Service::GetDefaultServiceName( service_id => $serviceID, clean => 1 );

    assert( $name, "Unknown Service ID" );

    my $props = {
        service_id         => $serviceID,
        service_name       => $name,
        service_name_clean => $clean_name
    };

    return $self->_initProperties($props);
}

sub _initProperties {
    my ( $self, $prop ) = @_;

    $self->{ServiceID} = Common::FormObject::Scalar::Integer->new( value => $prop->{service_id}, readOnly => 1 );
    $self->{ServiceName} = Common::FormObject::Scalar::String->new( value => $prop->{service_name}, required => 1 );
    $self->{ServiceNameClean} = Common::FormObject::Scalar::String->new( value => $prop->{service_name_clean} );

    $self->{ClientConfig} = new Common::ClientSettings::Service( serviceID => $self->ServiceID );

    return $self;
}

1;
