From: Andrea Zagli Date: Sat, 23 Feb 2013 16:47:00 +0000 (+0100) Subject: Depubblicazione dell'atto dell'albo. X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=c180a9aa2c2218fd0ddf466997c2698e35ac045f;p=albonline%2Fbe Depubblicazione dell'atto dell'albo. --- diff --git a/data/messi/gui/messi.gui b/data/messi/gui/messi.gui index 19e1555..971a535 100644 --- a/data/messi/gui/messi.gui +++ b/data/messi/gui/messi.gui @@ -1540,6 +1540,20 @@ 1 + + + De_pubblica + True + True + True + True + + + False + False + 2 + + _Esporta @@ -1551,7 +1565,7 @@ False False - 2 + 3 @@ -1565,7 +1579,7 @@ False False - 3 + 4 @@ -1579,7 +1593,7 @@ False False - 4 + 5 @@ -1593,7 +1607,7 @@ False False - 5 + 6 diff --git a/src/registro.c b/src/registro.c index 249befb..5a359b3 100644 --- a/src/registro.c +++ b/src/registro.c @@ -57,6 +57,8 @@ static void registro_on_btn_apri_clicked (GtkButton *button, gpointer user_data); static void registro_on_btn_ratifica_clicked (GtkButton *button, gpointer user_data); +static void registro_on_btn_depubblica_clicked (GtkButton *button, + gpointer user_data); static void registro_on_trv_registro_row_activated (GtkTreeView *tree_view, GtkTreePath *tree_path, GtkTreeViewColumn *column, @@ -186,6 +188,8 @@ Registro "clicked", G_CALLBACK (registro_on_btn_apri_clicked), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button23"), "clicked", G_CALLBACK (registro_on_btn_ratifica_clicked), (gpointer)a); + g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "button24"), + "clicked", G_CALLBACK (registro_on_btn_depubblica_clicked), (gpointer)a); g_signal_connect (gtk_builder_get_object (priv->commons->gtkbuilder, "treeview2"), "row-activated", G_CALLBACK (registro_on_trv_registro_row_activated), (gpointer)a); @@ -627,6 +631,91 @@ registro_on_btn_ratifica_clicked (GtkButton *button, } } +static void +registro_on_btn_depubblica_clicked (GtkButton *button, + gpointer user_data) +{ + GtkTreeIter iter; + guint id; + guint azione; + gchar *pubblicazione_fine_data; + GDateTime *gdt_oggi; + GDateTime *gdt_pubblicazione_fine_data; + + gchar *sql; + GdaDataModel *dm; + guint newid; + + Registro *registro = (Registro *)user_data; + RegistroPrivate *priv = REGISTRO_GET_PRIVATE (registro); + + if (gtk_tree_selection_get_selected (priv->selection, NULL, &iter)) + { + /* controllo che le date siano corrette */ + gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_registro), &iter, + COL_ID_ATTI, &id, + COL_AZIONE_ID, &azione, + COL_DATA_FINE_PUBBLICAZIONE, &pubblicazione_fine_data, + -1); + + gdt_oggi = g_date_time_new_now_local (); + gdt_pubblicazione_fine_data = gtk_form_field_datetime_get_gdatetime_from_str (pubblicazione_fine_data, "%d/%m/%Y"); + + if (azione != AZIONE_PUBBLICATO) + { + solipa_message_dialog (GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "w_main")), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "L'atto selezionato non è depubblicabile."); + return; + } + if (g_date_time_compare (gdt_pubblicazione_fine_data, gdt_oggi) < 0) + { + solipa_message_dialog (GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "w_main")), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Non è possibile depubblicare un atto già defisso."); + return; + } + + if (solipa_message_dialog (GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "w_main")), + GTK_MESSAGE_QUESTION, + GTK_BUTTONS_YES_NO, + "Sicuro di voler depubblicare l'atto selezionato?") == GTK_RESPONSE_YES) + { + newid = 0; + sql = g_strdup_printf ("SELECT COALESCE(MAX(id), 0) FROM registro"); + dm = gdaex_query (priv->commons->gdaex, sql); + g_free (sql); + if (dm != NULL) + { + if (gda_data_model_get_n_rows (dm) > 0) + { + newid = gdaex_data_model_get_value_integer_at (dm, 0, 0); + } + g_object_unref (dm); + } + newid++; + + sql = g_strdup_printf ("INSERT INTO registro" + " (id, id_atti, azione, azione_data)" + " VALUES (%d, %d, %d, CURRENT_TIMESTAMP)", + newid, id, AZIONE_DEPUBBLICATO); + gdaex_execute (priv->commons->gdaex, sql); + g_free (sql); + + registro_carica (registro); + } + } + else + { + solipa_message_dialog (priv->selezione ? priv->widget : GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "w_main")), + GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + "Occorre prima selezionare un atto."); + } +} + static void registro_on_trv_registro_row_activated (GtkTreeView *tree_view, GtkTreePath *tree_path,