Clasificacion EmpleadoModel::findClasificacion(QString codigo)
{
    QSqlQuery clasificQuery = *query;

    clasificQuery.prepare("SELECT * FROM "+TABLE_CLASIFIC+" WHERE codigo=:codigo");
    clasificQuery.bindValue(":codigo",codigo);

    if (!clasificQuery.exec())
    {
        status = "Error al Buscar Clasificación: " + clasificQuery.lastError().text();
        debugMessage(status);
    }else if (!clasificQuery.next())
    {
        status = "Clasificación Codigo: "+codigo+" No existe.";
        debugMessage(status);
    }else
    {
        Clasificacion clasificacion(
                    clasificQuery.value("codigo").toString(),
                    clasificQuery.value("descripcion").toString(),
                    clasificQuery.value("cod_area").toString(),
                    clasificQuery.value("formapago").toString(),
                    clasificQuery.value("valor").toDouble(),
                    clasificQuery.value("activo").toBool(),
                    clasificQuery.value("fechacreac").toString()
                    );

        status = "Clasificación código:"+codigo+" Encontrada...";
        debugMessage(status);
        return clasificacion;
    }
    return Clasificacion();
}
Empleado EmpleadoWidget::descargarEmpleado()
{
    QString codigoClasif = clasificModel->record(ui->clasifcComboBox->currentIndex()).value("codigo").toString();
    Clasificacion clasificacion(model->findClasificacion(codigoClasif));
    empleado = Empleado(
                ui->cedulaLineEdit->text(),
                ui->nombresLineEdit->text(),
                ui->apellidosLineEdit->text(),
                ui->rifLineEdit->text(),
                ui->fechaNacDateEdit->date().toString("yyyy-MM-dd"),
                ui->lugarNacLineEdit->text(),
                ui->emailLineEdit->text(),
                ui->edoCivilComboBox->currentText(),
                ui->numHijosSpinBox->value(),
                ui->direccionLineEdit->text(),
                ui->tlf1LineEdit->text(),
                ui->tlf2LineEdit->text(),
                ui->nivelAcadLineEdit->text(),
                ui->especLineEdit->text(),
                ui->nivelSupCheckBox->isChecked(),
                ui->tituloLineEdit->text(),
                "2016-10-10",
                "2016-10-10",
                ui->fechaIngrDateEdit->date().toString("yyyy-MM-dd"),
                ui->statusComboBox->currentText(),
                clasificacion.getArea(),
                clasificacion,
                ui->nivelAcadLineEdit->text(),
                ui->HorasSpinBox->value(),
                ui->tipoContratoComboBox->currentText());

    qDebug() << clasificacion.getArea();
    return empleado;
}
Empleado EmpleadoModel::findEmpleado(QString cedula)
{

    Empleado empleado;
    query->prepare("SELECT * FROM "+TABLE_EMPLEADO+" where cedula=:cedula");
    query->bindValue(":cedula",cedula);

    if (!query->exec())
    {
        status = "ERROR al buscar Empleado: " + query->lastError().text();
        debugMessage(status);

    } else if (!query->next())
    {
        status = "Empleado numero de cedula: " +cedula+" No existe.";
        debugMessage(status);
    } else
    {
        Clasificacion clasificacion(findClasificacion(query->value("cod_clasif").toString()));
        empleado = Empleado(
                    query->value("cedula").toString(),
                    query->value("nombres").toString(),
                    query->value("apellidos").toString(),
                    query->value("rif").toString(),
                    query->value("fechanac").toString(),
                    query->value("lugarnac").toString(),
                    query->value("email").toString(),
                    query->value("edocivil").toString(),
                    query->value("numhijos").toInt(),
                    query->value("direccion").toString(),
                    query->value("tlf1").toString(),
                    query->value("tlf2").toString(),
                    query->value("nivelacad").toString(),
                    query->value("espec").toString(),
                    query->value("nivelsup").toBool(),
                    query->value("titulo").toString(),
                    query->value("fecha_ingeduc").toString(),
                    query->value("fecha_ingeducpriv").toString(),
                    query->value("fecha_ing").toString(),
                    query->value("status").toString(),
                    query->value("cod_area").toString(),
                    clasificacion,
                    query->value("nivel").toString(),
                    query->value("horas").toInt(),
                    query->value("salariohora").toDouble(),
                    query->value("salariodia").toDouble(),
                    query->value("salariasem").toDouble(),
                    query->value("salariomes").toDouble(),
                    query->value("contrato").toString(),
                    query->value("antiguedad").toInt()
                    );
       status = "Empleado Encontrado...";
       debugMessage(status);
    }

    return empleado;
}
string OCR::run(Placa *input){

	//Segment chars of plate
	vector<SegmentoLetra> segmentos = segmento(*input);
	cout << "Numero de letras: "<<segmentos.size() << endl;
	for (int i = 0; i<segmentos.size(); i++){
		//Preprocess each char for all images have same sizes
		Mat ch = preprocesamientoCaracter(segmentos[i].imagen);
		if (saveSegments){
			stringstream ss(stringstream::in | stringstream::out);
			ss << "tmpChars/" << nombreArchivo << "_" << i << ".jpg";
			imwrite(ss.str(), ch);
		}
		//For each segment Extract Features
		Mat f = caracteristicas(ch, 15);
		//For each segment feature Classify
		int character = clasificacion(f);
		input->letras.push_back(Caracteres[character]);
		input->posLetras.push_back(segmentos[i].posicion);
	}
	return "-";//input->str();
}