#------------------------------------------------------------
# Copyright (C) 2010 RoyaltyShare, Inc.   All Rights Reserved
#------------------------------------------------------------
package BookPub::Dashboard::Module::CatalogSummary;

use strict;
use warnings;

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

use lib '/app/tools/bookpub/lib';
use BookPub::DB::Item::Product;
use BookPub::DB::Item::Imprint;
use BookPub::DB::Item::BookContributor;
use BookPub::DB::Item::CatalogImport;

use base 'Common::LandingPage::Module';

sub DisplayOrder { 2 }
sub Stylesheet   { "/app/tools/bookpub/templates/dashboard/module/catalog_summary.xsl" }
sub Template     { "dashboardCatalogSummary" }
sub Title        { "Catalog Summary" }
sub Class        { "sideModule" }

sub relatedCommands {
    qw(
      bookpub/analytics/is
      bookpub/analytics/as
      bookpub/analytics/bs
    );
}

sub _initProperties {
    my $self = shift;
    $self->SUPER::_initProperties(@_);

    $self->{ImprintCount} = Common::Client::Current()->Locale()->formatNumber( $self->_getImprintCount() );
    $self->{AuthorCount}  = Common::Client::Current()->Locale()->formatNumber( $self->_getAuthorCount() );
    $self->{BookCount}    = Common::Client::Current()->Locale()->formatNumber( $self->_getBookCount() );
    $self->{LastUpdate}   = $self->_getLastUpdate();
    return $self;
}

sub _getImprintCount {
    my $self = shift;

    my $collection = BookPub::DB::Item::Imprint->GetAll();
    return $collection ? $collection->size() : 0;
}

sub _getAuthorCount {
    my $self = shift;

    my $collection = BookPub::DB::Item::BookContributor->GetDistinctByRoleID(1);
    return $collection ? $collection->size() : 0;
}

sub _getBookCount {
    my $self = shift;

    my $collection = BookPub::DB::Item::Product->GetAll();
    return $collection ? $collection->size() : 0;
}

sub _getLastUpdate {
    my $self = shift;

    my $dbitem = BookPub::DB::Item::CatalogImport->GetLastSuccessfulUpdate();

    return $dbitem && $dbitem->import_end_time
      ? Common::Client::Current->Locale->formatDate( $dbitem->import_end_time )
      : undef;
}

###
1;    #
###
