namespace Sernatur { namespace DB { using Postgres; using Wrapper; public class TieneEnfermedad : GLib.Object { public Turista turista { get; set; default = null; } public Enfermedad enfermedad { get; set; default = null; } public TieneEnfermedad (Turista? turista = null, Enfermedad? enfermedad = null) { this.turista = turista; this.enfermedad = enfermedad; } public static TieneEnfermedad[]? get_all_tiene_enfermedades(Database conn) { var res = conn.exec (" SELECT T.rut_turista, T.nombre_turista, T.fecha_nacimento, C.id_contacto, C.telefono_emergencia, C.nombre_emergencia, E.id_enfermedad, E.descripcion_enfermedad FROM tiene_enfermedad TE JOIN turista T ON (TE.rut_turista = T.rut_turista) JOIN contacto_emergencia C ON (T.id_contacto = C.id_contacto) JOIN enfermedad E ON (TE.id_enfermedad = E.id_enfermedad) "); if (res.get_status () != ExecStatus.TUPLES_OK) { #if DEBUG error (conn.get_error_message ()); #else warning (conn.get_error_message ()); return null; #endif } var wra = new ResultWrapper (res); TieneEnfermedad[] tiene_enfermedades = {}; int n = res.get_n_tuples (); for (int i = 0; i < n; i++) { try { var tiene_enfermedad = new TieneEnfermedad ( new Turista (wra.get_string_n (i, "rut_turista"), wra.get_string_n (i, "nombre_turista"), wra.get_string_n (i, "fecha_nacimento"), new ContactoEmergencia (wra.get_int_n (i, "id_contacto"), wra.get_int_n (i, "telefono_emergencia"), wra.get_string_n (i, "nombre_emergencia") ) ), new Enfermedad (wra.get_int_n (i, "id_enfermedad"), wra.get_string_n (i, "descripcion_enfermedad") ) ); tiene_enfermedades += tiene_enfermedad; } catch (Error e) { #if DEBUG error (e.message); #else warning (e.message); #endif } } return tiene_enfermedades; } } } }