//-*- coding: utf-8 -*-
#ifndef __MIEMPRESABD_H__
#define __MIEMPRESABD_H__

#ifdef WIN32
#ifdef MIEMPRESA_EXPORTS
#define MIEMPRESA_API __declspec(dllexport)
#else
#define MIEMPRESA_API __declspec(dllimport)
#endif
#else
#define MIEMPRESA_API
#endif

#include <QCoreApplication>
#include <QtSql/QSqlDatabase>
#include <QList>
#include <Cliente.hpp>

/** \brief Interfaz para la base de datos.
 *
 * La clase MiEmpresaBD es la interfaz entre el programa (interfaz de usuario)
 * y la base de datos.
 * Esta es la &uacute;nica clase que puede tener acceso directo a la base de datos */
class MIEMPRESA_API MiEmpresaBD{
public:
	/** Constructor por defecto */
	MiEmpresaBD();
	/** Destructor por defecto */
	~MiEmpresaBD();
	/** Regresa una lista con todos los clientes de la base de datos.
	 * @return Un puntero a una lista que incluye todos los clientes de la
	 * base de datos. Quien ejecuta esta funci&oacute;n es responsable de borrar
	 * la lista */
	QList<Cliente>* obtenerTodosLosClientes() const;
	/** Inserta un cliente en la base de datos
	 * @param c Los datos del cliente que ser&aacute;n insertados en la base de
	 * datos.
	 * @return Verdadero si se pudo insertar el cliente en la base de datos,
	 * falso sino no es posible */
	bool insertarCliente(Cliente const & c) const;
	bool insertarCliente(Cliente const * const c) const;

private:
	/// Conexión a la base de datos
	QSqlDatabase * m_cbd;
	/// Nombre de usuario para conectarse a la BD.
	QString m_usuario;
	/// Contrase&ntilde;a para conectarse a la base de datos.
	QString m_contrasena;
	/// Nombre del servidor donde est&aacute; la base de datos.
	QString m_servidor;
	/// Nombre de la base de datos.
	QString m_nombrebd;
};

#endif
