#------------------------------------------------------------
# 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;
