###################################################################
# Copyright (C) 2006 RoyaltyShare, Inc.  All Rights Reserved
# $Id$
###################################################################

package Common::Preference::Common;

use strict;
use warnings;

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

use base 'Common::Preference';

sub set {
    my $self  = shift;
    my $value = shift;
    assert( $self->name );

    $self->{_value} = $value;
    $self->{_found} = 1;

    my $dbItem = Common::DB::Item::UserPreference->Lookup( name => $self->name );
    unless ($dbItem) {
        $dbItem = Common::DB::Item::UserPreference->Create(
            user_id => Common::RSApp::GetActiveUserID,
            name    => $self->name
        );
    }

    $dbItem->value( $self->value );
    $dbItem->save();

    return $self;
}

sub get {
    my $self = shift;
    assert( $self->name );

    my $dbItem = Common::DB::Item::UserPreference->Lookup( name => $self->name );

    if ($dbItem) {
        $self->{_value} = $dbItem->value;
        $self->{_found} = 1;
    } else {
        $self->{_value} = undef;
        $self->{_found} = undef;
    }

    return $self;
}
1;
