/********************************************************************************
*********************************************************************************
*Projeto:	TCgertec
*Arquivo:	tabelas.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(char *filename,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 "tabelas.h" // possui os tipos de dados

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

*Entrada:	filename: string com o nome do arquivo
		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(char *filename,char *barras,int *achou)
{
	FILE *faq; //Descritor de arquivo
	int  ci;
	char pos;
	char linha[0xff];
	char *p;
	char aux[0xff];
	Preco prod; //variável que receberá informações dos produtos
	
	char temp[255];
	
	bzero(&prod,sizeof(Preco));

	faq=fopen(filename,"rt");
	if (faq!=NULL)
	{
		do
		{
			// lê os caracteres da linha
			for(ci=0;ci<0xff;ci++)
			{
				if (fread(&linha[ci],1,1,faq)==0)
					break;
				if (linha[ci]=='\n')
					break;
			}
			linha[ci]=0;

			p = strchr(linha, '|');
			if (p!=NULL)
			{
				strncpy(aux,linha,p-linha);
				aux[p-linha]=0;
				pos=strcmp(barras,aux); //compara o código do arquivo com o lido
				if (pos==0) // se achou
				{
					p = strchr(linha, '|');
					if (p!=NULL)
					{
						//pega o nome do produto
						strcpy(temp,p+1);
						p = strchr(temp,'|');
						strncpy(prod.nome,temp,p-temp);
						
						//pega o preço do produto
						strcpy(temp,p+1);
						p = strchr(temp,'|');
						strncpy(prod.preco,temp,p-temp);
						
						//pega a coordenada X do nome
						bzero(aux,sizeof(aux));
						strcpy(temp,p+1);
						p = strchr(temp,'|');
						strncpy(aux,temp,p-temp);
						prod.Xnome = atoi(aux);
						
						//Pega a coordenada Y do nome
						bzero(aux,sizeof(aux));
						strcpy(temp,p+1);
						p = strchr(temp,'|');
						strncpy(aux,temp,p-temp);
						prod.Ynome = atoi(aux);
						
						//pega a coordenada X do preço
						bzero(aux,sizeof(aux));
						strcpy(temp,p+1);
						p = strchr(temp,'|');
						strncpy(aux,temp,p-temp);
						prod.Xpreco = atoi(aux);
						
						//pega a coordenada Y do preço
						bzero(aux,sizeof(aux));
						strcpy(temp,p+1);
						p = strchr(temp,'|');
						strncpy(aux,temp,p-temp);
						prod.Ypreco = atoi(aux);
						
						//pega a cor do texto
						bzero(aux,sizeof(aux));
						strcpy(temp,p+1);
						p = strchr(temp,'|');
						strncpy(prod.cor,temp,p-temp);
						
						//pega a cor de fundo do texto
						bzero(aux,sizeof(aux));
						strcpy(temp,p+1);
						p = strchr(temp,'|');
						strncpy(prod.background,temp,p-temp);
						
						//pega o nome da primeira imagem
						strcpy(temp,p+1);
						p = strchr(temp,'|');
						strncpy(prod.imagem1,temp,p-temp);
						
						//pega o nome da segunda imagem
						strcpy(temp,p+1);
						p = strchr(temp,'|');
						strncpy(prod.imagem2,temp,p-temp);
						
						//pega o nome da terceira imagem
						strcpy(temp,p+1);
						p = strchr(temp,'|');
						strncpy(prod.imagem3,temp,p-temp);
						
						fclose(faq);
						*achou = 1;
						return prod;
					}
					else
					{
						*achou = 0;
					}
				}
			}
		} while (!(feof(faq)));
	}
	fclose(faq);
	*achou = 0;
	return prod;
} 

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

*Entrada:	filename: nome do arquivo
		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(char *filename,char *code,int *achou)
{
	FILE *faq;
	int  ci;
	char pos;
	char linha[0xff];
	char *p;
	char aux[0xff];
	Bonus bonus;
	
	char temp[255];
	
	bzero(&bonus,sizeof(Bonus));

	faq=fopen(filename,"rt");
	if (faq!=NULL)
	{
		do
		{
			for(ci=0;ci<0xff;ci++)
			{
				if (fread(&linha[ci],1,1,faq)==0)
					break;
				if (linha[ci]=='\n')
					break;
			}
			linha[ci]=0;

			p = strchr(linha, '|');
			if (p!=NULL)
			{
				strncpy(aux,linha,p-linha);
				aux[p-linha]=0;
				pos=strcmp(code,aux);
				if (pos==0)
				{
					p = strchr(linha, '|');
					if (p!=NULL)
					{
						strcpy(temp,p+1);
						p = strchr(temp,'|');
						strncpy(bonus.nome,temp,p-temp);
						
						strcpy(temp,p+1);
						p = strchr(temp,'|');
						strncpy(bonus.bonus,temp,p-temp);
						
						strcpy(temp,p+1);
						p = strchr(temp,'|');
						strncpy(bonus.imagem,temp,p-temp);
						
						fclose(faq);
						*achou = 1;
						return bonus;
					}
					else
					{
						achou = 0;
					}
				}
			}
		} while (!(feof(faq)));
	}
	fclose(faq);
	*achou = 0;
	return bonus;
}
