]> saetta.ns0.it Git - albonline/be/commitdiff
Controllo sovrapposizione date dell'atto per l'albo (closes #609). master
authorAndrea Zagli <azagli@libero.it>
Sun, 24 Feb 2013 11:54:00 +0000 (12:54 +0100)
committerAndrea Zagli <azagli@libero.it>
Sun, 24 Feb 2013 11:54:00 +0000 (12:54 +0100)
src/atto.c

index 9e32e50b5e6eddaf2e7d512f3bef8bfb32712372..43d1b51a05067e744dfcb36ed82e356275833147 100644 (file)
@@ -21,6 +21,7 @@
 
 #include <libautoz/autoz.h>
 #include <libgtkform/form.h>
+#include <libgtkform/fielddatetime.h>
 #include <libgtkformui/gtkformdecoder.h>
 #include <libsolipa/libsolipa.h>
 #include <libreptool/libreptool.h>
@@ -303,6 +304,10 @@ atto_salva (Atto *atto, gboolean chiudi)
 {
        gchar *sql;
 
+       GDateTime *gdt_ricezione_data;
+       GDateTime *gdt_da_data;
+       GDateTime *gdt_a_data;
+
        AttoClass *klass = ATTO_GET_CLASS (atto);
 
        AttoPrivate *priv = ATTO_GET_PRIVATE (atto);
@@ -312,6 +317,29 @@ atto_salva (Atto *atto, gboolean chiudi)
                        return;
                }
 
+       gdt_ricezione_data = gtk_form_field_datetime_get_gdatetime_from_str (gtk_form_get_form_field_value_stringify_by_name (priv->form, "ricezione_data"), "%d/%m/%Y");
+       gdt_da_data = gtk_form_field_datetime_get_gdatetime_from_str (gtk_form_get_form_field_value_stringify_by_name (priv->form, "pubblicazione_inizio_data"), "%d/%m/%Y");
+       gdt_a_data = gtk_form_field_datetime_get_gdatetime_from_str (gtk_form_get_form_field_value_stringify_by_name (priv->form, "pubblicazione_fine_data"), "%d/%m/%Y");
+
+       if (gdt_ricezione_data != NULL
+           && g_date_time_compare (gdt_ricezione_data, gdt_da_data) > 0)
+               {
+                       solipa_message_dialog (priv->w,
+                                              GTK_MESSAGE_INFO,
+                                              GTK_BUTTONS_OK,
+                                              "La data ricezione  non può essere maggiore di quella di inizio pubblicazione.");
+                       return;
+               }
+
+       if (g_date_time_compare (gdt_da_data, gdt_a_data) > 0)
+               {
+                       solipa_message_dialog (priv->w,
+                                              GTK_MESSAGE_INFO,
+                                              GTK_BUTTONS_OK,
+                                              "La data inizio pubblicazione non può essere maggiore di quella di fine.");
+                       return;
+               }
+
        if (priv->id == 0)
                {
                        sql = gtk_form_get_sql (priv->form, GTK_FORM_SQL_INSERT);