]> saetta.ns0.it Git - albonline/be/commitdiff
Controllo della pubblicazione dell'atto all'albo (closes #606).
authorAndrea Zagli <azagli@libero.it>
Sun, 24 Feb 2013 11:33:00 +0000 (12:33 +0100)
committerAndrea Zagli <azagli@libero.it>
Sun, 24 Feb 2013 11:33:00 +0000 (12:33 +0100)
src/atti.c

index 67f8133c634e4887d29e02ac904000769be330ed..847d9564d5541abf166dc6408bbb3ff5a4e7b602 100644 (file)
@@ -611,9 +611,6 @@ atti_on_btn_pubblica_clicked (GtkButton *button,
 {
        GtkTreeIter iter;
        gint id;
-       gchar *pubblicazione_inizio_data;
-       GDateTime *gdt_oggi;
-       GDateTime *gdt_pubblicazione_inizio_data;
 
        gchar *sql;
        GdaDataModel *dm;
@@ -627,20 +624,30 @@ atti_on_btn_pubblica_clicked (GtkButton *button,
                        /* controllo che le date siano corrette */
                        gtk_tree_model_get (GTK_TREE_MODEL (priv->lstore_atti), &iter,
                                            COL_ID, &id,
-                                           COL_DATA_INIZIO_PUBBLICAZIONE, &pubblicazione_inizio_data,
                                            -1);
 
-                       gdt_oggi = g_date_time_new_now_local ();
-                       gdt_pubblicazione_inizio_data = gtk_form_field_datetime_get_gdatetime_from_str (pubblicazione_inizio_data, "%d/%m/%Y");
-
-                       if (g_date_time_compare (gdt_pubblicazione_inizio_data, gdt_oggi) < 0)
+                       sql = g_strdup_printf ("SELECT a.id"
+                                              " FROM atti AS a"
+                                              " WHERE a.id = %d"
+                                              " AND a.status <> 'E'"
+                                              " AND (a.pubblicazione_inizio_data < CURRENT_DATE"
+                                              " OR a.pubblicazione_fine_data < CURRENT_DATE"
+                                              " OR EXISTS (SELECT id FROM registro AS r WHERE a.id = r.id_atti))",
+                                              id);
+                       dm = gdaex_query (priv->commons->gdaex, sql);
+                       g_free (sql);
+                       if (dm != NULL && gda_data_model_get_n_rows (dm) > 0)
                                {
                                        solipa_message_dialog (GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "w_main")),
                                                               GTK_MESSAGE_WARNING,
                                                               GTK_BUTTONS_OK,
-                                                              "La data inizio pubblicazione non è valida.");
+                                                              "Le date di pubblicazione non sono valide o atto già pubblicato.");
                                        return;
                                }
+                       if (dm != NULL)
+                               {
+                                       g_object_unref (dm);
+                               }
 
                        if (solipa_message_dialog (GTK_WIDGET (gtk_builder_get_object (priv->commons->gtkbuilder, "w_main")),
                                                   GTK_MESSAGE_QUESTION,