parroquia 1.1.12 → 1.1.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/parroquia/catecismo/actualizar_alumno.rb +181 -0
- data/lib/parroquia/catecismo/alumno.rb +179 -0
- data/lib/parroquia/catecismo/catecismo.rb +119 -0
- data/lib/parroquia/catecismo/consulta.rb +177 -0
- data/lib/parroquia/catecismo/resultado.rb +230 -0
- data/lib/parroquia/main.rb +82 -92
- data/lib/parroquia/sacramentos/actualizar_bautismo.rb +313 -0
- data/lib/parroquia/sacramentos/actualizar_certificado_prebautismal.rb +184 -0
- data/lib/parroquia/sacramentos/actualizar_comunion.rb +239 -0
- data/lib/parroquia/sacramentos/actualizar_confirmacion.rb +239 -0
- data/lib/parroquia/sacramentos/actualizar_matrimonio.rb +298 -0
- data/lib/parroquia/sacramentos/actualizar_misa.rb +170 -0
- data/lib/parroquia/sacramentos/actualizar_permiso_prebautismal.rb +200 -0
- data/lib/parroquia/sacramentos/actualizar_permiso_prematrimonial.rb +205 -0
- data/lib/parroquia/sacramentos/actualizar_supletoria.rb +313 -0
- data/lib/parroquia/sacramentos/bautizo.rb +310 -0
- data/lib/parroquia/sacramentos/certificado_prebautismal.rb +195 -0
- data/lib/parroquia/sacramentos/comunion.rb +234 -0
- data/lib/parroquia/sacramentos/confirmacion.rb +239 -0
- data/lib/parroquia/sacramentos/consultas.rb +162 -0
- data/lib/parroquia/sacramentos/matrimonio.rb +297 -0
- data/lib/parroquia/sacramentos/misa.rb +171 -0
- data/lib/parroquia/sacramentos/permiso_bautismo.rb +207 -0
- data/lib/parroquia/sacramentos/permiso_prematrimonial.rb +219 -0
- data/lib/parroquia/sacramentos/resultados.rb +931 -0
- data/lib/parroquia/sacramentos/sacramentos.rb +182 -0
- data/lib/parroquia/sacramentos/supletoria.rb +309 -0
- metadata +30 -11
- data/lib/parroquia/actualizar_bautismo.rb +0 -255
- data/lib/parroquia/actualizar_confirmacion.rb +0 -203
- data/lib/parroquia/actualizar_matrimonio.rb +0 -243
- data/lib/parroquia/bautizo.rb +0 -249
- data/lib/parroquia/confirmacion.rb +0 -200
- data/lib/parroquia/consultas.rb +0 -147
- data/lib/parroquia/matrimonio.rb +0 -241
- data/lib/parroquia/resultados.rb +0 -414
@@ -0,0 +1,230 @@
|
|
1
|
+
require 'pg'
|
2
|
+
require 'prawn'
|
3
|
+
require 'fox16'
|
4
|
+
include Fox
|
5
|
+
|
6
|
+
class ResultadosConsulta < FXMainWindow
|
7
|
+
def initialize(app, result_data)
|
8
|
+
super(app, 'Resultados de la Consulta', width: 800, height: 480)
|
9
|
+
@app = app
|
10
|
+
|
11
|
+
@result_data = result_data # Los datos de resultados que se pasan a esta clase
|
12
|
+
|
13
|
+
# Crea una tabla para mostrar los resultados
|
14
|
+
@tabla = FXTable.new(self, opts: LAYOUT_EXPLICIT | TABLE_COL_SIZABLE | TABLE_ROW_SIZABLE, width: 800,
|
15
|
+
height: 400, x: 0, y: 0)
|
16
|
+
@tabla.visibleRows = 10
|
17
|
+
@tabla.visibleColumns = 10
|
18
|
+
# El tamaño de la tabla depende del número de columnas nombrada en poner nombre a las columnas y las filas al numero de registros encontrados
|
19
|
+
@tabla.setTableSize(@result_data.length, 13)
|
20
|
+
|
21
|
+
|
22
|
+
# Llena la tabla con los datos de resultados
|
23
|
+
@result_data.each_with_index do |row, i|
|
24
|
+
row.each_with_index do |col, j|
|
25
|
+
@tabla.setItemText(i, j, col.to_s)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# Poner nombre a las columnas
|
30
|
+
@tabla.setColumnText(0, 'ID Alumnos')
|
31
|
+
@tabla.setColumnText(1, 'Nombres')
|
32
|
+
@tabla.setColumnText(2, 'Apellidos')
|
33
|
+
@tabla.setColumnText(3, 'Lugar_nacimiento')
|
34
|
+
@tabla.setColumnText(4, 'Fecha_nacimiento')
|
35
|
+
@tabla.setColumnText(5, 'Cédula')
|
36
|
+
@tabla.setColumnText(6, 'ID Niveles')
|
37
|
+
@tabla.setColumnText(7, 'Nivel')
|
38
|
+
@tabla.setColumnText(8, 'Sector')
|
39
|
+
@tabla.setColumnText(9, 'Año lectivo')
|
40
|
+
@tabla.setColumnText(10, 'ID Catequistas')
|
41
|
+
@tabla.setColumnText(11, 'Nombres')
|
42
|
+
@tabla.setColumnText(12, 'Apellidos')
|
43
|
+
|
44
|
+
|
45
|
+
# Al hacer clic en una fila, se selecciona la fila completa para imprimir los datos
|
46
|
+
def seleccionar_fila
|
47
|
+
@tabla.each_row do |i|
|
48
|
+
@tabla.selectRow(i.index) if @tabla.isRowSelected(i.index)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def registros_seleccionados
|
53
|
+
registros = []
|
54
|
+
(0...@tabla.numRows).each do |i|
|
55
|
+
registros << @result_data[i] if @tabla.isRowSelected(i)
|
56
|
+
end
|
57
|
+
registros
|
58
|
+
end
|
59
|
+
|
60
|
+
def seleccionar_columna
|
61
|
+
selected_columns = []
|
62
|
+
|
63
|
+
(0...@tabla.numColumns).each do |i|
|
64
|
+
selected_columns << i if @tabla.isColumnSelected(i)
|
65
|
+
end
|
66
|
+
|
67
|
+
selected_columns
|
68
|
+
end
|
69
|
+
|
70
|
+
# Cambiar el formato de la fecha de YYYY-MM-DD a DD de nombre_mes de YYYY
|
71
|
+
def cambiar_formato_fecha(fecha)
|
72
|
+
# split "-" or "/"
|
73
|
+
fecha = fecha.split(%r{-|/})
|
74
|
+
# si el formato de fecha es YYYY-MM-DD o YYYY/MM/DD, sino si es DD-MM-YYYY o DD/MM/YYYY
|
75
|
+
if fecha[0].length == 4
|
76
|
+
"#{fecha[2]} de #{nombre_mes(fecha[1])} de #{fecha[0]}"
|
77
|
+
else
|
78
|
+
"#{fecha[0]} de #{nombre_mes(fecha[1])} de #{fecha[2]}"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# Nombre del mes
|
83
|
+
def nombre_mes(mes)
|
84
|
+
meses = {
|
85
|
+
'01' => 'enero',
|
86
|
+
'02' => 'febrero',
|
87
|
+
'03' => 'marzo',
|
88
|
+
'04' => 'abril',
|
89
|
+
'05' => 'mayo',
|
90
|
+
'06' => 'junio',
|
91
|
+
'07' => 'julio',
|
92
|
+
'08' => 'agosto',
|
93
|
+
'09' => 'septiembre',
|
94
|
+
'10' => 'octubre',
|
95
|
+
'11' => 'noviembre',
|
96
|
+
'12' => 'diciembre'
|
97
|
+
}
|
98
|
+
meses[mes]
|
99
|
+
end
|
100
|
+
|
101
|
+
# Nombre de las filas
|
102
|
+
@result_data.each_with_index do |_row, i|
|
103
|
+
@tabla.setRowText(i, "Registro #{i + 1}")
|
104
|
+
end
|
105
|
+
|
106
|
+
# create buttons
|
107
|
+
@btnlists = FXButton.new(self, 'Listar', opts: LAYOUT_EXPLICIT | BUTTON_NORMAL, width: 100, height: 30,
|
108
|
+
x: 350, y: 430)
|
109
|
+
@btnprint = FXButton.new(self, 'Exportar PDF', opts: LAYOUT_EXPLICIT | BUTTON_NORMAL, width: 100,
|
110
|
+
height: 30, x: 460, y: 430)
|
111
|
+
@btnedit = FXButton.new(self, 'Editar', opts: LAYOUT_EXPLICIT | BUTTON_NORMAL, width: 100, height: 30,
|
112
|
+
x: 570, y: 430)
|
113
|
+
@btndelete = FXButton.new(self, 'Eliminar', opts: LAYOUT_EXPLICIT | BUTTON_NORMAL, width: 100, height: 30,
|
114
|
+
x: 680, y: 430)
|
115
|
+
|
116
|
+
# connect buttons
|
117
|
+
@btnprint.connect(SEL_COMMAND) do
|
118
|
+
seleccionar_directorio
|
119
|
+
imprimir_pdf
|
120
|
+
end
|
121
|
+
|
122
|
+
@btnlists.connect(SEL_COMMAND) do
|
123
|
+
seleccionar_directorio
|
124
|
+
listar_pdf
|
125
|
+
end
|
126
|
+
|
127
|
+
def listar_pdf
|
128
|
+
selected_columns = seleccionar_columna
|
129
|
+
registros_seleccionados = registros_seleccionados() # Obtén los registros seleccionados
|
130
|
+
|
131
|
+
if selected_columns.empty? || registros_seleccionados.empty?
|
132
|
+
FXMessageBox.warning(self, MBOX_OK, 'Advertencia', 'Debe seleccionar al menos una columna y registros')
|
133
|
+
else
|
134
|
+
# Genera el archivo PDF
|
135
|
+
Prawn::Document.generate(@archivo_pdf, margin: [150, 100, 100, 100]) do |pdf|
|
136
|
+
pdf.font 'Helvetica'
|
137
|
+
pdf.font_size 12
|
138
|
+
pdf.image File.join(File.dirname(__FILE__), '../assets/images/arquidiocesisquito.png'), height: 100,
|
139
|
+
position: :absolute, at: [-60, 680]
|
140
|
+
pdf.text_box 'Arquidiócesis de Quito', align: :center, size: 16, style: :bold, at: [10, 670],
|
141
|
+
width: pdf.bounds.width
|
142
|
+
pdf.text_box 'Parroquia Eclesiástica "San Judas Tadeo"', align: :center, size: 14, style: :bold,
|
143
|
+
at: [10, 650], width: pdf.bounds.width
|
144
|
+
pdf.text_box "Jaime Roldós Aguilera, calle Oe13A y N82\nEl Condado, Quito - Ecuador\nTeléfono: 02496446",
|
145
|
+
align: :center, size: 10, at: [10, 630], width: pdf.bounds.width
|
146
|
+
pdf.image File.join(File.dirname(__FILE__), '../assets/images/sanjudastadeo.png'), height: 100,
|
147
|
+
position: :absolute, at: [430, 680]
|
148
|
+
# Título del certificado en color rojo
|
149
|
+
pdf.text 'Lista de alumnos', align: :center, size: 20, style: :bold, color: 'FF0000'
|
150
|
+
pdf.move_down 20
|
151
|
+
|
152
|
+
# Recorre todos los registros seleccionados y agrega sus horarios de misas
|
153
|
+
pdf.text "Año Lectivo #{registros_seleccionados[0][9]}"
|
154
|
+
pdf.move_down 10
|
155
|
+
pdf.text "Catequista #{registros_seleccionados[0][11]} #{registros_seleccionados[0][12]}"
|
156
|
+
pdf.move_down 10
|
157
|
+
pdf.text 'Número | Apellidos | Nombres | Nivel | Sector'
|
158
|
+
pdf.move_down 10
|
159
|
+
contador = 1
|
160
|
+
registros_seleccionados.each do |registro|
|
161
|
+
# Listar con numeros
|
162
|
+
pdf.text "#{contador} | #{registro[selected_columns[2]]} #{registro[selected_columns[1]]} | #{registro[selected_columns[7]]} | #{registro[selected_columns[8]]}"
|
163
|
+
pdf.move_down 10
|
164
|
+
contador += 1
|
165
|
+
end
|
166
|
+
end
|
167
|
+
# Abre el archivo PDF con el visor de PDF predeterminado del sistema
|
168
|
+
system("xdg-open '#{@archivo_pdf}'")
|
169
|
+
end
|
170
|
+
# Mensaje de confirmación
|
171
|
+
FXMessageBox.information(self, MBOX_OK, 'Información', 'El archivo PDF se ha generado correctamente')
|
172
|
+
end
|
173
|
+
|
174
|
+
def seleccionar_directorio
|
175
|
+
dialog = FXDirDialog.new(self, 'Seleccionar directorio para guardar PDF')
|
176
|
+
return unless dialog.execute != 0
|
177
|
+
|
178
|
+
directorio = dialog.getDirectory
|
179
|
+
|
180
|
+
if registros_seleccionados.nil? || registros_seleccionados.empty?
|
181
|
+
FXMessageBox.warning(self, MBOX_OK, 'Advertencia', 'No hay registros seleccionados')
|
182
|
+
else
|
183
|
+
@archivo_pdf = "#{directorio}/#{registros_seleccionados[0][19]} #{registros_seleccionados[0][20]} - #{registros_seleccionados[0][1]}.pdf"
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
|
188
|
+
@btnedit.connect(SEL_COMMAND) do
|
189
|
+
# Editar registros seleccionados y actualizar la basee de datos
|
190
|
+
registros_seleccionados.each do |registro|
|
191
|
+
sql = "SELECT * FROM alumnos INNER JOIN catequistas ON alumnos.id = catequistas.id INNER JOIN niveles ON alumnos.id = niveles.id WHERE alumnos.id = #{registro[0]}"
|
192
|
+
$conn.exec(sql) do |result|
|
193
|
+
@registros = result.values[0]
|
194
|
+
require_relative 'actualizar_alumno'
|
195
|
+
vtnactualizar_alumno = ActualizarAlumno.new(@app, @registros)
|
196
|
+
vtnactualizar_alumno.create
|
197
|
+
vtnactualizar_alumno.show(PLACEMENT_SCREEN)
|
198
|
+
end
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
@btndelete.connect(SEL_COMMAND) do
|
203
|
+
# eliminar registros seleccionados
|
204
|
+
if registros_seleccionados.empty?
|
205
|
+
FXMessageBox.warning(self, MBOX_OK, 'Advertencia', 'Debe seleccionar al menos un registro')
|
206
|
+
elsif FXMessageBox.question(self, MBOX_YES_NO, 'Confirmación',
|
207
|
+
'¿Está seguro de eliminar los registros seleccionados?') == MBOX_CLICKED_YES
|
208
|
+
# Mensaje de confirmación
|
209
|
+
registros_seleccionados.each do |registro|
|
210
|
+
# Eliminar registros de todas las tablas
|
211
|
+
sql = 'DELETE FROM alumnos WHERE id = $1'
|
212
|
+
$conn.exec_params(sql, [registro[0]])
|
213
|
+
sql = 'DELETE FROM catequistas WHERE id = $1'
|
214
|
+
$conn.exec_params(sql, [registro[10]])
|
215
|
+
sql = 'DELETE FROM niveles WHERE id = $1'
|
216
|
+
$conn.exec_params(sql, [registro[6]])
|
217
|
+
# Mensaje de confirmación
|
218
|
+
FXMessageBox.information(self, MBOX_OK, 'Información',
|
219
|
+
'Los registros seleccionados se han eliminado correctamente')
|
220
|
+
end
|
221
|
+
end
|
222
|
+
end
|
223
|
+
Prawn::Fonts::AFM.hide_m17n_warning = true
|
224
|
+
end
|
225
|
+
|
226
|
+
def create
|
227
|
+
super
|
228
|
+
show(PLACEMENT_SCREEN)
|
229
|
+
end
|
230
|
+
end
|
data/lib/parroquia/main.rb
CHANGED
@@ -4,114 +4,109 @@ include Fox
|
|
4
4
|
|
5
5
|
class Home < FXMainWindow
|
6
6
|
def initialize(app)
|
7
|
-
super(app,
|
7
|
+
super(app, 'Parroquia San Judas Tadeo', width: 700, height: 500)
|
8
8
|
@app = app
|
9
|
-
self.backColor = FXRGB(3,187,133)
|
9
|
+
self.backColor = FXRGB(3, 187, 133)
|
10
10
|
|
11
11
|
# Font
|
12
|
-
@font = FXFont.new(app,
|
12
|
+
@font = FXFont.new(app, 'Geneva', 12, FONTWEIGHT_BOLD)
|
13
13
|
|
14
14
|
# Inserar imagen del logo
|
15
|
-
@image = File.join(File.dirname(__FILE__),
|
16
|
-
@image = File.open(@image,
|
15
|
+
@image = File.join(File.dirname(__FILE__), 'assets/images/Logo-SJT.png')
|
16
|
+
@image = File.open(@image, 'rb')
|
17
17
|
@image = FXPNGIcon.new(app, @image.read)
|
18
|
-
@logo = FXImageFrame.new(self, @image, :
|
18
|
+
@logo = FXImageFrame.new(self, @image, opts: LAYOUT_EXPLICIT | LAYOUT_CENTER_X | LAYOUT_CENTER_Y, width: 400,
|
19
|
+
height: 250, x: 10, y: 100)
|
19
20
|
# Color de fondo de image frame es el mismo que el de la ventana
|
20
|
-
@logo.backColor = FXRGB(3,187,133)
|
21
|
+
@logo.backColor = FXRGB(3, 187, 133)
|
21
22
|
# Escalar imagen
|
22
23
|
@image.scale(400, 250)
|
23
24
|
|
24
25
|
# Title
|
25
|
-
@lbltitle = FXLabel.new(self,
|
26
|
-
|
27
|
-
@lbltitle.
|
26
|
+
@lbltitle = FXLabel.new(self, 'Bienvenido a la Parroquia San Judas Tadeo',
|
27
|
+
opts: LAYOUT_EXPLICIT | JUSTIFY_CENTER_X, width: 700, height: 20, x: 0, y: 20)
|
28
|
+
@lbltitle.font = FXFont.new(app, 'Geneva', 16, FONTWEIGHT_BOLD)
|
29
|
+
@lbltitle.backColor = FXRGB(3, 187, 133)
|
28
30
|
# Subtitle
|
29
|
-
@lblsubtitle = FXLabel.new(self,
|
30
|
-
|
31
|
-
@lblsubtitle.
|
31
|
+
@lblsubtitle = FXLabel.new(self, 'ARQUIDIOSESIS DE QUITO - SERVICIO PARROQUIAL DE SAN JUDAS TADEO',
|
32
|
+
opts: LAYOUT_EXPLICIT | JUSTIFY_CENTER_X, width: 700, height: 20, x: 0, y: 40)
|
33
|
+
@lblsubtitle.font = FXFont.new(app, 'Geneva', 10, FONTWEIGHT_BOLD)
|
34
|
+
@lblsubtitle.backColor = FXRGB(3, 187, 133)
|
32
35
|
# Date
|
33
|
-
@date = Time.now.strftime(
|
34
|
-
@lbldate = FXLabel.new(self, "Fecha: #{cambiar_formato_fecha(@date)}", :
|
35
|
-
|
36
|
-
@lbldate.
|
36
|
+
@date = Time.now.strftime('%d/%m/%Y')
|
37
|
+
@lbldate = FXLabel.new(self, "Fecha: #{cambiar_formato_fecha(@date)}", opts: LAYOUT_EXPLICIT | JUSTIFY_RIGHT,
|
38
|
+
width: 700, height: 20, x: 0, y: 60, padRight: 20)
|
39
|
+
@lbldate.font = FXFont.new(app, 'Geneva', 12, FONTWEIGHT_BOLD)
|
40
|
+
@lbldate.backColor = FXRGB(3, 187, 133)
|
37
41
|
|
38
|
-
#section lista
|
39
|
-
@
|
40
|
-
|
41
|
-
@
|
42
|
-
|
42
|
+
# section lista
|
43
|
+
@btnsacramentos = FXButton.new(self, 'Sacramentos', opts: LAYOUT_EXPLICIT | BUTTON_NORMAL, width: 150,
|
44
|
+
height: 30, x: 460, y: 150)
|
45
|
+
@btncatecismo = FXButton.new(self, 'Catecismo', opts: LAYOUT_EXPLICIT | BUTTON_NORMAL, width: 150,
|
46
|
+
height: 30, x: 460, y: 190)
|
43
47
|
|
44
|
-
|
45
|
-
@lblfooter = FXLabel.new(self,
|
46
|
-
|
47
|
-
@lblfooter.
|
48
|
-
@
|
49
|
-
@lblauthor
|
50
|
-
|
51
|
-
@
|
52
|
-
@
|
53
|
-
@lblweb
|
54
|
-
|
55
|
-
@
|
56
|
-
@
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
48
|
+
# Footer
|
49
|
+
@lblfooter = FXLabel.new(self, 'WebMinds Studio - 2023', opts: LAYOUT_EXPLICIT | JUSTIFY_CENTER_X, width: 700,
|
50
|
+
height: 20, x: 0, y: 400)
|
51
|
+
@lblfooter.font = FXFont.new(app, 'Geneva', 10)
|
52
|
+
@lblfooter.backColor = FXRGB(3, 187, 133)
|
53
|
+
@lblauthor = FXLabel.new(self, 'Desarrollado por Ing. Francisco J. Borja L.',
|
54
|
+
opts: LAYOUT_EXPLICIT | JUSTIFY_CENTER_X, width: 700, height: 20, x: 0, y: 420)
|
55
|
+
@lblauthor.font = FXFont.new(app, 'Geneva', 10)
|
56
|
+
@lblauthor.backColor = FXRGB(3, 187, 133)
|
57
|
+
@lblweb = FXLabel.new(self, 'www.webmindsstudio.com', opts: LAYOUT_EXPLICIT | JUSTIFY_CENTER_X, width: 700,
|
58
|
+
height: 20, x: 0, y: 440)
|
59
|
+
@lblweb.font = FXFont.new(app, 'Geneva', 10)
|
60
|
+
@lblweb.backColor = FXRGB(3, 187, 133)
|
61
|
+
@lbllicence = FXLabel.new(self, 'MIT License', opts: LAYOUT_EXPLICIT | JUSTIFY_CENTER_X, width: 700,
|
62
|
+
height: 20, x: 0, y: 460)
|
63
|
+
@lbllicence.font = FXFont.new(app, 'Geneva', 10)
|
64
|
+
@lbllicence.backColor = FXRGB(3, 187, 133)
|
65
|
+
# section buttons executions
|
66
|
+
@btnsacramentos.connect(SEL_COMMAND) do
|
67
|
+
require_relative 'sacramentos/sacramentos'
|
68
|
+
vtnsacramentos = Sacramentos.new(@app)
|
69
|
+
vtnsacramentos.create
|
70
|
+
vtnsacramentos.show(PLACEMENT_SCREEN)
|
63
71
|
end
|
64
|
-
@
|
65
|
-
require_relative '
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
end
|
70
|
-
@btnmatrimonio.connect(SEL_COMMAND) do
|
71
|
-
require_relative 'matrimonio.rb'
|
72
|
-
vtnmatrimonio = Matrimonio.new(@app)
|
73
|
-
vtnmatrimonio.create
|
74
|
-
vtnmatrimonio.show(PLACEMENT_SCREEN)
|
75
|
-
end
|
76
|
-
@btnconsulta.connect(SEL_COMMAND) do
|
77
|
-
require_relative 'consultas.rb'
|
78
|
-
vtnconsulta = Consulta.new(@app)
|
79
|
-
vtnconsulta.create
|
80
|
-
vtnconsulta.show(PLACEMENT_SCREEN)
|
72
|
+
@btncatecismo.connect(SEL_COMMAND) do
|
73
|
+
require_relative 'catecismo/catecismo'
|
74
|
+
vtncatecismo = Catecismo.new(@app)
|
75
|
+
vtncatecismo.create
|
76
|
+
vtncatecismo.show(PLACEMENT_SCREEN)
|
81
77
|
end
|
82
78
|
end
|
83
79
|
|
84
80
|
# Nombre del mes
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
81
|
+
def nombre_mes(mes)
|
82
|
+
meses = {
|
83
|
+
'01' => 'enero',
|
84
|
+
'02' => 'febrero',
|
85
|
+
'03' => 'marzo',
|
86
|
+
'04' => 'abril',
|
87
|
+
'05' => 'mayo',
|
88
|
+
'06' => 'junio',
|
89
|
+
'07' => 'julio',
|
90
|
+
'08' => 'agosto',
|
91
|
+
'09' => 'septiembre',
|
92
|
+
'10' => 'octubre',
|
93
|
+
'11' => 'noviembre',
|
94
|
+
'12' => 'diciembre'
|
95
|
+
}
|
96
|
+
meses[mes]
|
97
|
+
end
|
103
98
|
|
104
99
|
# Cambiar el formato de la fecha de YYYY-MM-DD a DD de nombre_mes de YYYY
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
end
|
100
|
+
def cambiar_formato_fecha(fecha)
|
101
|
+
# split "-" or "/"
|
102
|
+
fecha = fecha.split(%r{-|/})
|
103
|
+
# si el formato de fecha es YYYY-MM-DD o YYYY/MM/DD, sino si es DD-MM-YYYY o DD/MM/YYYY
|
104
|
+
if fecha[0].length == 4
|
105
|
+
"#{fecha[2]} de #{nombre_mes(fecha[1])} de #{fecha[0]}"
|
106
|
+
else
|
107
|
+
"#{fecha[0]} de #{nombre_mes(fecha[1])} de #{fecha[2]}"
|
114
108
|
end
|
109
|
+
end
|
115
110
|
|
116
111
|
def create
|
117
112
|
super
|
@@ -121,14 +116,9 @@ end
|
|
121
116
|
|
122
117
|
$conn = PG.connect(host: 'localhost', port: '5432', dbname: 'sacramentos', user: 'postgres', password: 'postgres')
|
123
118
|
# Comprobar conexión con la base de datos
|
124
|
-
if $conn.status != PG::CONNECTION_OK
|
125
|
-
puts "Error de conexión con la base de datos"
|
126
|
-
exit
|
127
|
-
end
|
119
|
+
exit if $conn.status != PG::CONNECTION_OK
|
128
120
|
|
129
121
|
app = FXApp.new
|
130
|
-
|
122
|
+
Home.new(app)
|
131
123
|
app.create
|
132
124
|
app.run
|
133
|
-
|
134
|
-
|