//-*- coding: utf-8 -*-
#include <QVariant>
#include <QSqlQuery>
#include <QSqlError>
#include <QTextStream>
#include "MiEmpresaBD.hpp"

MiEmpresaBD::MiEmpresaBD(): m_usuario("MiEmpresa"), m_contrasena("qwe123"),
m_servidor("PSCMARTIR1102"), m_nombrebd("MiEmpresa"){
	m_cbd = new QSqlDatabase;

	*m_cbd = QSqlDatabase::addDatabase("QMYSQL");
	m_cbd->setHostName(m_servidor);
	m_cbd->setDatabaseName(m_nombrebd);
	m_cbd->setUserName(m_usuario);
	m_cbd->setPassword(m_contrasena);
	if (!m_cbd->open()) {
		QTextStream stream(stdout);
		stream << m_cbd->lastError().text();
	}
}
////////////////////////////////////////////////////////////////////////////////
MiEmpresaBD::~MiEmpresaBD(){
	if (0 != m_cbd){
		m_cbd->close();
		delete m_cbd;
	}
}
////////////////////////////////////////////////////////////////////////////////
QList<Cliente>* MiEmpresaBD::obtenerTodosLosClientes() const{
	QList<Cliente>* clientes = new QList<Cliente>;
	QSqlQuery q;

	q.exec("SELECT * from Cliente ORDER BY apellidop, apellidom, nombre");
	while (q.next()) {
		clientes->push_back(Cliente(q.value(0).toInt(),
			Nombre(q.value(1).toString(),
			       q.value(2).toString(),
			       q.value(3).toString()),
			q.value(4).toString(),
			q.value(5).toString(),
			Direccion(q.value(6).toString(),
			          q.value(7).toString(),
			          q.value(8).toString(),
			          q.value(9).toString(),
			          q.value(10).toString(),
			          q.value(11).toString())));
	}

	return clientes;
}
////////////////////////////////////////////////////////////////////////////////
bool MiEmpresaBD::insertarCliente(Cliente const & c) const{
	QSqlQuery q;

	q.exec(QString("INSERT INTO Cliente(nombre, apellidop, apellidom, correo, telefono, calle, colonia, ciudad, estado, cp, pais) "
	               "VALUES(\"%1\", \"%2\", \"%3\", \"%4\", \"%5\", \"%6\", \"%7\", \"%8\", \"%9\", \"%10\", \"%11\")").arg(c.nombre().nombre()).arg(c.nombre().apellidop()).arg(c.nombre().apellidom()).arg(c.correo()).arg(c.tel()).arg(c.direccion().calle()).arg(c.direccion().colonia()).arg(c.direccion().ciudad()).arg(c.direccion().estado()).arg(c.direccion().cp()).arg(c.direccion().pais()));

	return true;
}
////////////////////////////////////////////////////////////////////////////////
bool MiEmpresaBD::insertarCliente(Cliente const * const c) const{
	return this->insertarCliente(*c);
}
