#------------------------------------------------------------
# Copyright (C) 2006 RoyaltyShare, Inc.   All Rights Reserved
#------------------------------------------------------------
package RPS::DB::Item::ServicePriceTier;
use strict;
use warnings;

use lib '/app/tools/common/lib';
use Common::DB::Item;
use Common::DB::ItemCollection;
use Common::Assert;
use Common::Log;

use lib '/app/tools/rps/lib';
use RPS::DB::Item::ProductServicePricing;

use base 'Common::DB::Item';

use constant kTable => 'service_price_tier';
use constant kDB    => Common::DB::Item::kCommonDB();

sub GetAll {
    my $class = shift;
    my %args  = @_;
    my $dbo   = Common::RSApp::GetCommonDB();

    my $sql = "SELECT * FROM " . kTable;
    $sql .= " WHERE service_id = " . $dbo->DBQuote( $args{service_id} )
      if ( $args{service_id} );

    $sql .= " ORDER BY service_id, display_order";

    return $class->SUPER::GetAll($sql);
}

sub LookupByProduct {
    my $class         = shift;
    my %args          = @_;
    my $dbo           = Common::RSApp::GetCommonDB();
    my $price_tier_id = 0;

    assert( $args{product_id} );
    assert( $args{service_id} );

    my $product_service_price = RPS::DB::Item::ProductServicePricing->Lookup(
        service_id => $args{service_id},
        product_id => $args{product_id}
    );
    $price_tier_id = $product_service_price->service_price_tier_id
      if ($product_service_price);

    my $sql = "SELECT * FROM " . kTable;
    $sql .= " WHERE service_id = " . $dbo->DBQuote( $args{service_id} );

    $sql .= " AND service_price_tier_id = " . $dbo->DBQuote($price_tier_id);

    my $collection = $class->SUPER::GetAll($sql);

    return $collection->next if ($collection);
}

sub LookupByTierName {
    my $class = shift;
    my %args  = @_;
    my $dbo   = Common::RSApp::GetCommonDB();

    assert( $args{tier_name} );
    assert( $args{service_name} );

    my $sql = "SELECT * FROM " . kTable . " INNER JOIN distribution_service USING ( service_id ) ";
    $sql .= " WHERE service_name = " . $dbo->DBQuote( $args{service_name} ) . " AND " . " tier_name = " . $dbo->DBQuote( $args{tier_name} );

    my $collection = $class->SUPER::GetAll($sql);

    return $collection->next if ($collection);
}

1;
