/********************************************************************************
*********************************************************************************
*Projeto:	TCgertec
*Arquivo:	tabelas_PostGre.c
*Descrição:	Contém funções para o busca no banco de dados
*Data da Criação:	01/06/2006

*Revisão:	1.0
*Data:		01/06/2006
*Modificações:

**********************************************************************************
**********************************************************************************

Funções e procedimentos utilizados no arquivo

Preco SeekBarCode(PGconn *conn,char *barras,int *achou) - procura na tabela de preço
Bonus SeekBonus(char *filename,char *code,int *achou) - procura na tabela de bonus

********************************************************************************/

/*-------------------------------------------------------------------------------
			INCLUDES
-------------------------------------------------------------------------------*/

#include <stdio.h>
#include <string.h>

#include <pgsql/libpq-fe.h> // Biblioteca do PostGreSQL
#include "tabelas_PostGre.h" // possui os tipos de dados

/********************************************************************************
>>>>Preco SeekBarCode(PGconn *conn,char *barras,int *achou) <<<<
---------------------------------------------------------------------------------
*Função:	Preco SeekBarCode(PGconn *conn,char *barras,int *achou)
*Descrição:	Procura um código de barras

*Entrada:	conn: conexao com o banco de dados
		barras: string com o código de barras lido

*Saída:		Retorna uma variável do tipo Preco com informações do produto pesquisado
		achou: variável para verificar se o código foi encontrado
			1 - produto foi encontrado
			0 - produto não foi encontrado

*Data da Criação:	01/06/2006
*Modificações:

*Obs:

********************************************************************************/
Preco SeekBarCode(PGconn *conn,char *barras,int *achou)
{
	PGresult *res;
	
	char query[100];
	Preco prod; //variável que receberá informações dos produtos
	
	bzero(query,sizeof(query)); // limpa a string de query
	bzero(&prod,sizeof(Preco));
	
	sprintf(query,"SELECT * FROM %s WHERE %s = %s;",PRICE,BARCODEL,barras); //Monta a string de busca
//	printf("%s\n",query);
    res = PQexec(conn,query);

	if (!res && (PQresultStatus(res) != PGRES_COMMAND_OK))
	{
		*achou = 0;
		return prod;
	}
	
	if (PQgetvalue(res, 0, 1)==NULL)
	{
		*achou = 0;
		return prod;
	}

    // Separa o registro
	strcpy(prod.nome,PQgetvalue(res, 0, 1)); 
	strcpy(prod.preco,PQgetvalue(res, 0, 2));
    prod.Xnome=atoi(PQgetvalue(res, 0, 3));
    prod.Ynome=atoi(PQgetvalue(res, 0, 4));
    prod.Xpreco=atoi(PQgetvalue(res, 0, 5));
    prod.Xpreco=atoi(PQgetvalue(res, 0, 6));
    strcpy(prod.cor,PQgetvalue(res, 0, 7));
    strcpy(prod.background,PQgetvalue(res, 0, 8));
    if (PQgetvalue(res, 0, 9)!= NULL)
    strcpy(prod.imagem1,PQgetvalue(res, 0, 9));
    if (PQgetvalue(res, 0, 10)!= NULL)
    strcpy(prod.imagem2,PQgetvalue(res, 0, 10));
    if (PQgetvalue(res, 0, 11)!= NULL)
    strcpy(prod.imagem3,PQgetvalue(res, 0, 11));
	
	*achou = 1;
	return prod;
} 

/********************************************************************************
>>>> Bonus SeekBonus(PGconn *conn,char *code,int *achou) <<<<
---------------------------------------------------------------------------------
*Função:	Bonus SeekBonus(PGconn *conn,char *code,int *achou)
*Descrição:	Procura um código de barras

*Entrada:	conn: Conexao com o banco de dados
		code: string com o código do cartão ligo
*Saída:		Retorna uma variável do tipo Bonus
		achou: variável para verificar se o código foi encontrado
			1 - produto foi encontrado
			0 - produto não foi encontrado

*Data da Criação:	01/06/2006
*Modificações:

*Obs: o funcionamento desta função é semelhante a anterior

********************************************************************************/
Bonus SeekBonus(PGconn *conn,char *code,int *achou)
{
	PGresult *res;
		
	char query[350];
	Bonus bonus; //variável que receberá informações dos produtos
	
	bzero(query,sizeof(query)); // limpa a string de query
	bzero(&bonus,sizeof(Bonus));
	
	sprintf(query,"SELECT * FROM %s WHERE %s = %s;",CARD,CARDCODEL,code); //Monta a string de busca
	//printf("%s\n",query);
	res = PQexec(conn,query); 
	
  	if (!res && (PQresultStatus(res) != PGRES_COMMAND_OK))
	{
	//	printf("erro\n");
		*achou = 0;
		return bonus;
	}
	
	if (PQgetvalue(res, 0, 1)==NULL)
	{
	//	printf("erro2\n");
		*achou = 0;
		return bonus;
	}
	
	strcpy(bonus.nome,PQgetvalue(res, 0, 1));
	strcpy(bonus.bonus,PQgetvalue(res, 0, 2));
	
	if ( PQgetvalue(res, 0, 3) )
	strcpy(bonus.imagem,PQgetvalue(res, 0, 3));
	
	*achou = 1;
	return bonus;
}
