@@ -160,7 +160,7 @@ class DirectoryController {
160
160
Future {
161
161
try {
162
162
// Deshabilita todos los subdirectorios del directorio especificado
163
- val disableResult = sql " UPDATE directorios SET habilitado = false WHERE id_padre = $idDirectorio"
163
+ val disableResult = sql " UPDATE directorios SET habilitado = false WHERE padre_id = $idDirectorio"
164
164
.update()
165
165
166
166
if (disableResult > 0 ) {
@@ -203,65 +203,73 @@ class DirectoryController {
203
203
def borrarDirectorio (id : Int ): Future [Either [String , String ]] = {
204
204
Future {
205
205
try {
206
- // Deshabilita el directorio
206
+ // Verifica si el directorio existe
207
+ val dirExists = sql " SELECT count(*) FROM directorios WHERE id = $id" .map(_.int(1 )).single()
207
208
208
- val disableSubD = sql " UPDATE directorios SET habilitado = false WHERE id = $id" .update()
209
+ if (dirExists.getOrElse(0 ) > 0 ) {
210
+ // Deshabilita el directorio
211
+ val disableSubD = sql " UPDATE directorios SET habilitado = false WHERE id = $id" .update()
209
212
210
- if (disableSubD > 0 ) {
211
- val count = sql " SELECT count(*) FROM directorios WHERE id = $id"
212
- val subD = sql " SELECT * FROM directorios WHERE id = $id"
213
- .map { rs =>
214
- DirectoryModel (
215
- rs.int(" id" ),
216
- rs.string(" nombre" ),
217
- rs.string(" ruta" ),
218
- rs.int(" usuarioId" ),
219
- rs.double(" tamano" ),
220
- rs.int(" nodoId" ),
221
- rs.int(" padreId" ),
222
- rs.boolean(" habilitado" ),
223
- rs.int(" respaldo_id" )
224
- )
225
- }
226
- .list()
213
+ if (disableSubD > 0 ) {
214
+ // Verifica si hay archivos en el directorio
215
+ val fileCount = sql " SELECT count(*) FROM archivos WHERE directorio_id = $id" .map(_.int(1 )).single()
227
216
228
- for (i <- subD) {
229
-
230
- val subid = i.id
231
-
232
- // Deshabilita todos los archivos del directorio especificado
233
- val disableResult = sql " UPDATE archivos SET habilitado = false WHERE directorio_id = $subid" .update()
234
- if (disableResult > 0 ) {
235
- // Directorio y su contenido deshabilitados correctamente
236
- Right (" Directorio y su contenido deshabilitados correctamente" )
217
+ if (fileCount.getOrElse(0 ) > 0 ) {
218
+ // Si hay archivos, intenta deshabilitarlos
219
+ val disableResult = sql " UPDATE archivos SET habilitado = false WHERE directorio_id = $id" .update()
220
+ if (disableResult > 0 ) {
221
+ // Directorio y su contenido deshabilitados correctamente
222
+ Right (" Directorio y su contenido deshabilitados correctamente" )
223
+ } else {
224
+ // No se encontró el archivo o no se pudo deshabilitar
225
+ Left (" No se pudo deshabilitar el directorio y su contenido" )
226
+ }
237
227
} else {
238
- // No se encontró el archivo o no se pudo deshabilitar
239
- Left ( " No se pudo deshabilitar el directorio y su contenido" )
228
+ // Si no hay archivos, considera la operación exitosa
229
+ Right ( " Directorio y su contenido deshabilitados correctamente " )
240
230
}
241
231
242
- }
232
+ // Verifica si existen subdirectorios
233
+ val subDirCount = sql " SELECT count(*) FROM directorios WHERE padre_id = $id" .map(_.int(1 )).single()
243
234
244
- // Deshabilita todos los subdirectorios del directorio especificado
235
+ if (subDirCount.getOrElse(0 ) > 0 ) {
236
+ // Si existen subdirectorios, intenta deshabilitarlos
237
+ val disableF = sql " UPDATE directorios SET habilitado = false WHERE padre_id = $id" .update()
245
238
246
- val disableF = sql " UPDATE directorios SET habilitado = false WHERE padre_id = $id" .update()
239
+ if (disableF > 0 ) {
240
+ // Verifica si hay archivos en los subdirectorios
241
+ val subFileCount =
242
+ sql " SELECT count(*) FROM archivos WHERE directorio_id IN (SELECT id FROM directorios WHERE padre_id = $id) "
243
+ .map(_.int(1 ))
244
+ .single()
247
245
248
- if (disableF > 0 ) {
249
- // Deshabilita todos los archivos del directorio especificado
250
- val disableResult = sql " UPDATE archivos SET habilitado = false WHERE directorio_id = $id" .update()
251
- if (disableResult > 0 ) {
252
- // Directorio y su contenido deshabilitados correctamente
253
- Right (" Directorio y su contenido deshabilitados correctamente" )
246
+ if (subFileCount.getOrElse(0 ) > 0 ) {
247
+ // Si hay archivos, intenta deshabilitarlos
248
+ val disableSubFiles =
249
+ sql " UPDATE archivos SET habilitado = false WHERE directorio_id IN (SELECT id FROM directorios WHERE padre_id = $id) "
250
+ .update()
251
+ if (disableSubFiles > 0 ) {
252
+ Right (" Subdirectorios y sus contenidos deshabilitados correctamente" )
253
+ } else {
254
+ Left (" No se pudieron deshabilitar los archivos de los subdirectorios" )
255
+ }
256
+ } else {
257
+ // Si no hay archivos, considera la operación exitosa
258
+ Right (" Subdirectorios y sus contenidos deshabilitados correctamente" )
259
+ }
260
+ } else {
261
+ Left (" No se pudieron deshabilitar los subdirectorios" )
262
+ }
254
263
} else {
255
- // No se encontró el archivo o no se pudo deshabilitar
256
- Left ( " No se pudo deshabilitar el directorio y su contenido " )
264
+ // Si no existen subdirectorios, considera la operación exitosa
265
+ Right ( " Directorio deshabilitado, No existen subdirectorios para deshabilitar " )
257
266
}
258
267
} else {
259
- // No se encontraron subdirectorio o no se pudieron deshabilitar
260
- Left (" No se pudieron deshabilitar los archivos " )
268
+ // No se encontraron directorio o no se pudieron deshabilitar
269
+ Left (" No se pudieron deshabilitar los subdirectorios " )
261
270
}
262
271
} else {
263
- // No se encontraron directorio o no se pudieron deshabilitar
264
- Left (" No se pudieron deshabilitar los subdirectorios" )
272
+ Left (" El ID del directorio no existe" )
265
273
}
266
274
267
275
} catch {
@@ -271,4 +279,5 @@ class DirectoryController {
271
279
}
272
280
}
273
281
}
282
+
274
283
}
0 commit comments