package LedgerSMB::RESTXML::Document::Part_Search;
use strict;
use warnings;
use base qw(LedgerSMB::RESTXML::Document::Base);
use LedgerSMB::Log;

sub handle_get { 
	my ($self, $args) = @_;	
	my $user = $args->{user};
	my $dbh = $args->{dbh};
	my $handler = $args->{handler};
	
	my $query = $handler->read_query();

	my %terms;

	for my $field ($query->param()) { 
		# TODO: BIG GAPING HOLE HERE.
		$terms{$field} = $query->param($field);	
	}

	if($terms{_keyword}) { 
		%terms = (
				description=>$terms{_keyword},
				partnumber=>$terms{_keyword},
		);
	}
	my $sql = 'SELECT id,description,partnumber FROM parts WHERE '.join(' OR ',map { "$_ like ?" } sort keys %terms);
	
		
	my $res = $dbh->prepare($sql);

	$res->execute(map { "$terms{$_}\%" } sort keys %terms) or return $handler->error($dbh->errstr);

	my @rows;
	my $row;
	push @rows, $row while $row = $res->fetchrow_hashref();
	
	$res->finish();
	
	$handler->respond(XML::Twig::Elt->new('Part_Search_Response',{'xmlns:xlink'=>"http://www.w3.org/1999/xlink"},map {  
			$self->hash_to_twig({name=>'Part',root_attr=>{'xlink:href'=>"Part/$_->{id}"}, hash=>$_});			
		} @rows));
}
1;