namespace Sernatur { namespace DB { using Postgres; using Wrapper; public class Realiza : GLib.Object { public Tour tour { get; set; default = null; } public Turista turista { get; set; default = null; } public Descuento descuento { get; set; default = null; } public Realiza (Tour? tour = null, Turista? turista = null, Descuento? descuento = null) { this.tour = tour; this.turista = turista; this.descuento = descuento; } public static Realiza[]? get_all_realizas(Database conn) { var res = conn.exec (" SELECT T.id_tour, T.nombre_tour, T.costo_indiv, T.costo_grupal, T.minima_personas, C.id_ciudad, C.nombre_ciudad, R.id_region, R.nombre_region, T2.rut_turista, T2.nombre_turista, T2.fecha_nacimento, C2.id_contacto, C2.telefono_emergencia, C2.nombre_emergencia, D.id_descuento, D.descripcion_descuento, D.porcentaje FROM realiza RE JOIN tour T ON (RE.id_tour = T.id_tour) JOIN ciudad C ON (T.id_ciudad = C.id_ciudad) JOIN region R ON (C.id_region = R.id_region) JOIN turista T2 ON (RE.rut_turista = T2.rut_turista) JOIN contacto_emergencia C2 ON (T2.id_contacto = C2.id_contacto) JOIN descuento D ON (RE.id_descuento = D.id_descuento) "); 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); Realiza[] realizas = {}; int n = res.get_n_tuples (); for (int i = 0; i < n; i++) { try { var realiza = new Realiza ( new Tour (wra.get_int_n (i, "id_tour"), wra.get_string_n (i, "nombre_tour"), wra.get_int_n (i, "costo_indiv"), wra.get_int_n (i, "costo_grupal"), wra.get_int_n (i, "minima_personas"), new Ciudad (wra.get_int_n (i, "id_ciudad"), wra.get_string_n (i, "nombre_ciudad"), new Region (wra.get_int_n (i, "id_region"), wra.get_string_n (i, "nombre_region") ) ) ), 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 Descuento (wra.get_int_n (i, "id_descuento"), wra.get_string_n (i, "descripcion_descuento"), wra.get_float_n (i, "porcentaje") ) ); realizas += realiza; } catch (Error e) { #if DEBUG error (e.message); #else warning (e.message); #endif } } return realizas; } } } }