namespace LibSernatur { namespace DB { using Postgres; using Wrapper; public class Participa : GLib.Object { public Tour tour { get; set; default = null; } public Guia guia { get; set; default = null; } public Categoria categoria { get; set; default = null; } public Participa (Tour? tour = null, Guia? guia = null, Categoria? categoria = null) { this.tour = tour; this.guia = guia; this.categoria = categoria; } public static Participa[]? get_all_participas(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, G.rut_guia, G.nombre_guia, G.calle, G.numero, C2.id_ciudad AS id_ciudad_guia, C2.nombre_ciudad AS nombre_ciudad_guia, R2.id_region AS id_region_guia, R2.nombre_region AS nombre_region_guia, C3.id_categoria, C3.descripcion_categoria FROM participa P JOIN tour T ON (P.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 guia G on (P.rut_guia = G.rut_guia) JOIN ciudad C2 ON (G.id_ciudad = C2.id_ciudad) JOIN region R2 ON (C2.id_region = R2.id_region) JOIN categoria C3 ON (P.id_categoria = C3.id_categoria) "); 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); Participa[] participas = {}; int n = res.get_n_tuples (); for (int i = 0; i < n; i++) { try { var participa = new Participa ( 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 Guia (wra.get_string_n (i, "rut_guia"), wra.get_string_n (i, "nombre_guia"), wra.get_string_n (i, "calle"), wra.get_int_n (i, "numero"), new Ciudad (wra.get_int_n (i, "id_ciudad_guia"), wra.get_string_n (i, "id_region_guia"), new Region (wra.get_int_n (i, "id_region_guia"), wra.get_string_n (i, "nombre_region_guia")) ) ), new Categoria (wra.get_int_n (i, "id_categoria"), wra.get_string_n (i, "descripcion_categoria") ) ); participas += participa; } catch (Error e) { #if DEBUG error (e.message); #else warning (e.message); #endif } } return participas; } } } }