#------------------------------------------------------------
# Copyright (C) 2006 RoyaltyShare, Inc.   All Rights Reserved
# $Id$
#------------------------------------------------------------
package RPS::MapFace::MapFaceTempMappingHistory;

use strict;
use warnings;
use Data::Dumper;

use lib '/app/tools/rps/lib';
use RPS::DB::Item::Service;
use RPS::DB::Item::User;
use lib '/app/tools/common/lib';
use Common::Assert;
use Common::DB::Item::Client;
use Common::FormObject;
use base 'Common::FormObject';


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

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

    my %properties;
	if ($args{_dbItem})
	{
		$self->_propertiesFromDBItem(\%properties, $args{_dbItem});
	}
	elsif ($args{mapface_temp_mapping_history_id})
	{
		$self->_propertiesFromDB(\%properties, $args{mapface_temp_mapping_history_id});
	}
	else
	{
		$self->_propertiesFromDefaults(\%properties);
	}

    $self->_initProperties(\%properties);

    return $self;
}

sub _propertiesFromDB
{
	my ($self, $hrProperties, $mapFaceTempMappingHistoryID) = @_;

	my $dbItem = RPS::DB::Item::MapFaceTempMappingHistory->Lookup(mapface_temp_mapping_history_id => $mapFaceTempMappingHistoryID);
	$self->_propertiesFromDBItem($hrProperties, $dbItem);
}

sub _propertiesFromDBItem
{
	my ($self, $hrProperties, $dbItem) = @_;

	$hrProperties->{mapface_temp_mapping_history_id} = $dbItem->mapface_temp_mapping_history_id;
	$hrProperties->{mapface_temp_mapping_id}         = $dbItem->mapface_temp_mapping_id;
	$hrProperties->{user_id}                         = $dbItem->user_id;
	$hrProperties->{action}                          = $dbItem->action;
	$hrProperties->{date}                            = $dbItem->date;	
}

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

	$self->{MapFaceTempMappingHistoryID} = Common::FormObject::Scalar->new(value => $props->{mapface_temp_mapping_history_id}, readOnly => 1);
	$self->{MapFaceTempMappingID}        = Common::FormObject::Scalar->new(value => $props->{mapface_temp_mapping_id});
	$self->{UserID}                      = Common::FormObject::Scalar->new(value => $props->{user_id});
	$self->{Action}                      = Common::FormObject::Scalar::String->new(value => $props->{action});
	$self->{Date}                        = Common::FormObject::Scalar::DateTime->new(value => $props->{date});	
	
	if ($props->{user_id} && $props->{user_id} != 0) {
		my $user = RPS::DB::Item::User->Lookup(user_id => $props->{user_id});
		$self->{UserName} = $user->first_name . " " . $user->last_name;	
	}	
}

sub _propertiesFromDefaults
{
	my ($self, $hrProperties) = @_;
}


sub save
{
    my ($self) = @_;

	my $dbObj;
	if(defined $self->MapFaceTempMappingHistoryID())
	{
		$dbObj = RPS::DB::Item::MapFaceTempMappingHistory->Lookup(mapface_file_id => $self->MapFaceTempMappingHistoryID());
	}
	else
	{
		$dbObj = RPS::DB::Item::MapFaceTempMappingHistory->Create();
	}

	# set fields here
	#
	$dbObj->mapface_temp_mapping_id($self->MapFaceTempMappingID());
	$dbObj->user_id($self->UserID());
	$dbObj->action($self->Action());
	$dbObj->date($self->Date());
		

	# save db item
	#
	$dbObj->save();

	# reload object
	#
	$self->_init(_dbItem => $dbObj);
}


1;
