From 50d18e6482fb7424d18663b98bbd1c59e0ec3c41 Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Wed, 29 May 2013 11:21:23 +0200 Subject: [PATCH] Aggiunto il ruolo alle persone-ufficio (closes #595). --- data/organigramma/form/persona_ufficio.form | 11 ++ data/organigramma/gui/organigramma.gui | 138 ++++++++++++++------ docs/DBChangelog | 4 +- libreria/Makefile.am | 4 + src/persona.c | 8 +- src/personaufficio.c | 44 ++++++- src/ufficio.c | 4 + 7 files changed, 164 insertions(+), 49 deletions(-) diff --git a/data/organigramma/form/persona_ufficio.form b/data/organigramma/form/persona_ufficio.form index b83de62..a0b7f42 100644 --- a/data/organigramma/form/persona_ufficio.form +++ b/data/organigramma/form/persona_ufficio.form @@ -34,6 +34,17 @@ + + + + SELECT nome FROM ruoli WHERE id = ##key0::gint + + + + t + + + date diff --git a/data/organigramma/gui/organigramma.gui b/data/organigramma/gui/organigramma.gui index 829b297..cfd8cb0 100644 --- a/data/organigramma/gui/organigramma.gui +++ b/data/organigramma/gui/organigramma.gui @@ -1,6 +1,7 @@ + 31 @@ -156,12 +157,28 @@ + + + + + + + + + + + + + + + + @@ -286,18 +303,6 @@ - - - - - - - - - - - - @@ -1662,13 +1667,24 @@ + + + Ruolo + + + + 2 + + + + Da data - 2 + 3 @@ -1679,7 +1695,7 @@ - 3 + 4 @@ -3536,7 +3552,7 @@ True False - 7 + 8 2 5 5 @@ -3549,8 +3565,8 @@ Note - 5 - 6 + 6 + 7 GTK_FILL GTK_FILL @@ -3572,8 +3588,8 @@ 1 2 - 5 - 6 + 6 + 7 @@ -3648,8 +3664,8 @@ lbl_id - 6 - 7 + 7 + 8 GTK_FILL GTK_FILL @@ -3662,8 +3678,8 @@ 1 2 - 6 - 7 + 7 + 8 @@ -3674,8 +3690,8 @@ Da data - 1 - 2 + 2 + 3 GTK_FILL GTK_FILL @@ -3694,8 +3710,8 @@ 1 2 - 1 - 2 + 2 + 3 GTK_FILL @@ -3707,8 +3723,8 @@ A data - 2 - 3 + 3 + 4 GTK_FILL GTK_FILL @@ -3727,8 +3743,8 @@ 1 2 - 2 - 3 + 3 + 4 GTK_FILL @@ -3740,8 +3756,8 @@ Piano - 3 - 4 + 4 + 5 GTK_FILL GTK_FILL @@ -3760,8 +3776,8 @@ 1 2 - 3 - 4 + 4 + 5 GTK_FILL @@ -3773,8 +3789,8 @@ Stanza - 4 - 5 + 5 + 6 GTK_FILL GTK_FILL @@ -3793,8 +3809,35 @@ 1 2 - 4 - 5 + 5 + 6 + GTK_FILL + + + + + True + False + 0 + Ruolo + + + 1 + 2 + GTK_FILL + GTK_FILL + + + + + True + False + + + 1 + 2 + 1 + 2 GTK_FILL @@ -8411,13 +8454,24 @@ False True 0 + + + Ruolo + + + + 1 + + + + Nome - 1 + 2 @@ -8428,7 +8482,7 @@ - 2 + 3 @@ -8439,7 +8493,7 @@ - 3 + 4 diff --git a/docs/DBChangelog b/docs/DBChangelog index 27da7a1..ac58a68 100644 --- a/docs/DBChangelog +++ b/docs/DBChangelog @@ -12,4 +12,6 @@ CREATE TABLE ruoli nome character varying(255) DEFAULT '', status character varying(1) DEFAULT '', CONSTRAINT ruoli_pkey PRIMARY KEY (id) -); \ No newline at end of file +); + +ALTER TABLE persona_uffici ADD COLUMN id_ruoli integer DEFAULT 0; diff --git a/libreria/Makefile.am b/libreria/Makefile.am index c17062a..0da44f9 100644 --- a/libreria/Makefile.am +++ b/libreria/Makefile.am @@ -27,6 +27,10 @@ liborganigramma_la_SOURCES = \ ../src/posizionieconomiche.c \ ../src/profiliprofessionali.c \ ../src/profiloprofessionale.c \ + ../src/ruoli.c \ + ../src/ruoli.h \ + ../src/ruolo.c \ + ../src/ruolo.h \ ../src/struttura.c \ ../src/strutturaindirizzo.c \ ../src/strutture.c \ diff --git a/src/persona.c b/src/persona.c index b69b06c..a05752e 100644 --- a/src/persona.c +++ b/src/persona.c @@ -201,6 +201,7 @@ enum { UFFICI_COL_ID, UFFICI_COL_UFFICIO, + UFFICI_COL_RUOLO, UFFICI_COL_DA_DATA, UFFICI_COL_A_DATA }; @@ -715,10 +716,10 @@ organigramma_persona_carica_uffici (OrganigrammaPersona *persona) gtk_list_store_clear (GTK_LIST_STORE (priv->objects[LSTORE_UFFICI])); - sql = g_strdup_printf ("SELECT pu.id, u.nome, pu.da_data, pu.a_data" + sql = g_strdup_printf ("SELECT pu.id, u.nome, r.nome AS ruolo, pu.da_data, pu.a_data" " FROM persona_uffici AS pu" - " INNER JOIN uffici AS u ON" - " pu.id_uffici = u.id" + " INNER JOIN uffici AS u ON pu.id_uffici = u.id" + " INNER JOIN ruoli AS r ON pu.id_ruoli = r.id" " WHERE pu.id_persone = %d" " AND pu.status <> 'E'" " ORDER BY pu.da_data, pu.a_data, u.nome", @@ -736,6 +737,7 @@ organigramma_persona_carica_uffici (OrganigrammaPersona *persona) gtk_list_store_set (GTK_LIST_STORE (priv->objects[LSTORE_UFFICI]), &iter, UFFICI_COL_ID, gdaex_data_model_get_field_value_integer_at (dm, row, "id"), UFFICI_COL_UFFICIO, gdaex_data_model_get_field_value_stringify_at (dm, row, "nome"), + UFFICI_COL_RUOLO, gdaex_data_model_get_field_value_stringify_at (dm, row, "ruolo"), UFFICI_COL_DA_DATA, gtk_form_field_datetime_get_str_from_tm (gdaex_data_model_get_field_value_tm_at (dm, row, "da_data"), "%d/%m/%Y"), UFFICI_COL_A_DATA, gtk_form_field_datetime_get_str_from_tm (gdaex_data_model_get_field_value_tm_at (dm, row, "a_data"), "%d/%m/%Y"), -1); diff --git a/src/personaufficio.c b/src/personaufficio.c index 7d35e78..d079b12 100644 --- a/src/personaufficio.c +++ b/src/personaufficio.c @@ -23,10 +23,12 @@ #include #include +#include #include #include "personaufficio.h" #include "uffici.h" +#include "ruoli.h" static void organigramma_persona_ufficio_class_init (OrganigrammaPersonaUfficioClass *klass); static void organigramma_persona_ufficio_init (OrganigrammaPersonaUfficio *organigramma_persona_ufficio); @@ -36,6 +38,7 @@ static void organigramma_persona_ufficio_salva (OrganigrammaPersonaUfficio *orga static gboolean organigramma_persona_ufficio_conferma_chiusura (OrganigrammaPersonaUfficio *organigramma_persona_ufficio); +static void organigramma_persona_ufficio_on_ruolo_selezionato (gpointer instance, guint id, gpointer user_data); static void organigramma_persona_ufficio_on_ufficio_selezionato (gpointer instance, guint id, gpointer user_data); @@ -52,8 +55,11 @@ static gboolean organigramma_persona_ufficio_on_w_organigramma_persona_ufficio_d GdkEvent *event, gpointer user_data); -static void organigramma_persona_ufficio_on_btn_ricerca_via_clicked (GtkButton *button, +static void organigramma_persona_ufficio_on_btn_ufficio_clicked (GtkButton *button, gpointer user_data); +static void organigramma_persona_ufficio_on_btn_ruolo_clicked (GtkButton *button, + gpointer user_data); + static void organigramma_persona_ufficio_on_btn_annulla_clicked (GtkButton *button, gpointer user_data); static void organigramma_persona_ufficio_on_btn_salva_clicked (GtkButton *button, @@ -164,7 +170,10 @@ OrganigrammaPersonaUfficio "delete-event", G_CALLBACK (organigramma_persona_ufficio_on_w_organigramma_persona_ufficio_delete_event), (gpointer)a); g_signal_connect (G_OBJECT (gtk_builder_get_object (priv->commons->gtkbuilder, "button82")), - "clicked", G_CALLBACK (organigramma_persona_ufficio_on_btn_ricerca_via_clicked), (gpointer)a); + "clicked", G_CALLBACK (organigramma_persona_ufficio_on_btn_ufficio_clicked), (gpointer)a); + + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "gtkformdecoder1"), + "btn-browse-clicked", G_CALLBACK (organigramma_persona_ufficio_on_btn_ruolo_clicked), (gpointer)a); g_signal_connect (G_OBJECT (gtk_builder_get_object (priv->commons->gtkbuilder, "button83")), "clicked", G_CALLBACK (organigramma_persona_ufficio_on_btn_annulla_clicked), (gpointer)a); @@ -352,7 +361,17 @@ organigramma_persona_ufficio_on_w_organigramma_persona_ufficio_delete_event (Gtk } static void -organigramma_persona_ufficio_on_btn_ricerca_via_clicked (GtkButton *button, +organigramma_persona_ufficio_on_ruolo_selezionato (gpointer instance, guint id, gpointer user_data) +{ + OrganigrammaPersonaUfficio *a = (OrganigrammaPersonaUfficio *)user_data; + OrganigrammaPersonaUfficioPrivate *priv = ORGANIGRAMMA_PERSONA_UFFICIO_GET_PRIVATE (a); + + gtk_form_widget_set_value_stringify (gtk_form_get_form_widget_from_name (priv->form, "gtkformdecoder1"), + g_strdup_printf ("%d", id)); +} + +static void +organigramma_persona_ufficio_on_btn_ufficio_clicked (GtkButton *button, gpointer user_data) { GtkWidget *w; @@ -370,6 +389,25 @@ organigramma_persona_ufficio_on_btn_ricerca_via_clicked (GtkButton *button, gtk_widget_show (w); } +static void +organigramma_persona_ufficio_on_btn_ruolo_clicked (GtkButton *button, + gpointer user_data) +{ + GtkWidget *w; + + OrganigrammaPersonaUfficio *ia = (OrganigrammaPersonaUfficio *)user_data; + OrganigrammaPersonaUfficioPrivate *priv = ORGANIGRAMMA_PERSONA_UFFICIO_GET_PRIVATE (ia); + + OrganigrammaRuoli *c = organigramma_ruoli_new (priv->commons, TRUE); + + g_signal_connect (G_OBJECT (c), "selezionato", + G_CALLBACK (organigramma_persona_ufficio_on_ruolo_selezionato), user_data); + + w = organigramma_ruoli_get_widget (c); + gtk_window_set_transient_for (GTK_WINDOW (w), GTK_WINDOW (priv->w)); + gtk_widget_show (w); +} + static void organigramma_persona_ufficio_on_btn_annulla_clicked (GtkButton *button, gpointer user_data) diff --git a/src/ufficio.c b/src/ufficio.c index 3375d38..fdc6377 100644 --- a/src/ufficio.c +++ b/src/ufficio.c @@ -180,6 +180,7 @@ enum enum { PERSONE_COL_ID, + PERSONE_COL_RUOLO, PERSONE_COL_NOME, PERSONE_COL_DA_DATA, PERSONE_COL_A_DATA @@ -664,9 +665,11 @@ organigramma_ufficio_carica_persone (OrganigrammaUfficio *ufficio) gtk_list_store_clear (GTK_LIST_STORE (priv->objects[LSTORE_PERSONE])); sql = g_strdup_printf ("SELECT p.id, p.cognome || ' ' || p.nome AS cognome_nome," + " r.nome AS ruolo," " pi.da_data, pi.a_data" " FROM persona_uffici AS pi" " INNER JOIN persone AS p ON pi.id_persone = p.id" + " INNER JOIN ruoli AS r ON pi.id_ruoli = r.id" " WHERE pi.id_uffici = %d" " AND pi.status <> 'E'" " ORDER BY p.cognome, p.nome, pi.da_data, pi.a_data", @@ -683,6 +686,7 @@ organigramma_ufficio_carica_persone (OrganigrammaUfficio *ufficio) gtk_list_store_append (GTK_LIST_STORE (priv->objects[LSTORE_PERSONE]), &iter); gtk_list_store_set (GTK_LIST_STORE (priv->objects[LSTORE_PERSONE]), &iter, PERSONE_COL_ID, gdaex_data_model_get_field_value_integer_at (dm, row, "id"), + PERSONE_COL_RUOLO, gdaex_data_model_get_field_value_stringify_at (dm, row, "ruolo"), PERSONE_COL_NOME, gdaex_data_model_get_field_value_stringify_at (dm, row, "cognome_nome"), PERSONE_COL_DA_DATA, gtk_form_field_datetime_get_str_from_tm (gdaex_data_model_get_field_value_tm_at (dm, row, "da_data"), "%d/%m/%Y"), PERSONE_COL_A_DATA, gtk_form_field_datetime_get_str_from_tm (gdaex_data_model_get_field_value_tm_at (dm, row, "a_data"), "%d/%m/%Y"), -- 2.49.0