Files
SIG/Contabilidad/DescargaRespaldos.aspx.vb
JORGE LUIS CAUDILLO ESPARZA c35cf91883 Commit inicial Ventas Productivo
2019-08-14 16:40:54 -07:00

408 lines
13 KiB
VB.net

Option Strict On
Imports System.IO
Imports System.Data
Imports Extensiones
Partial Class Contabilidad_DescargaRespaldos
Inherits ClsPaginas
Protected rutaCon As String = ""
Protected rutaRes As String = ""
Private Sub Contabilidad_DescargaRespaldos_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Dim empresa As Empresa = getEmpresaBDContPAQi()
Dim pilaUrl As New List(Of String)
ViewState("URLS") = pilaUrl
ViewState("URLR") = "/"
ViewState("FEMPRESA") = empresa.BDContPAQi
ViewState("URLACTUAL") = ""
Else
End If
Try
'addCaragaLinksInicio()
loadEvent()
Catch ex As Exception
End Try
End Sub
Private Sub directorioDefault()
End Sub
Private Sub loadEvent()
Dim lista As List(Of String) = DirectCast(ViewState("URLS"), List(Of String))
If getUrl() = "" Then
addCargaLinksInicio()
Else
cargarFolderActual()
End If
End Sub
Private Sub addCargaLinksInicio()
Dim empresa As Empresa = getEmpresaBDContPAQi()
Dim BDContPAQi As String = empresa.BDContPAQi
lblEmpresa.Text = "Empresa: " & empresa.Empresa
Dim listaFile As New List(Of String)
Dim listaDir As New List(Of String)
Dim listaNombres As New List(Of String)
Dim GB As Integer = 1073741824
Dim MB As Integer = 1048576
Dim KB As Integer = 1024
Dim resultado As Double = 0.0
listaFile.Clear()
listaDir.Clear()
tdBodyDescargas.Controls.Clear()
If (BDContPAQi <> "") Then
tdBodyDescargas.Controls.Add(New LiteralControl("<tr>"))
tdBodyDescargas.Controls.Add(New LiteralControl("<td style='text-align:left!important'>CONTPAQI</td>"))
tdBodyDescargas.Controls.Add(New LiteralControl("<td></td>"))
tdBodyDescargas.Controls.Add(New LiteralControl("<td></td>"))
tdBodyDescargas.Controls.Add(New LiteralControl("<td style='text-align:center!important'>Carpeta</td>"))
Dim lnkConpaq As New ImageButton
lnkConpaq.ID = "lnkContPaq"
lnkConpaq.ImageUrl = "~/Imagenes/folder.png"
lnkConpaq.PostBackUrl = "#"
lnkConpaq.Attributes.Add("data-toggle", "tooltip")
lnkConpaq.Attributes.Add("data-placement", "right")
lnkConpaq.Attributes.Add("title", "Acceder")
AddHandler lnkConpaq.Click, AddressOf Me.lnkFolderCompaqt
tdBodyDescargas.Controls.Add(New LiteralControl("<td style='text-align:center'>"))
tdBodyDescargas.Controls.Add(lnkConpaq)
tdBodyDescargas.Controls.Add(New LiteralControl("</td>"))
tdBodyDescargas.Controls.Add(New LiteralControl("</tr>"))
tdBodyDescargas.Controls.Add(New LiteralControl("<tr>"))
tdBodyDescargas.Controls.Add(New LiteralControl("<td style='text-align:left!important'>RESPALDOS</td>"))
tdBodyDescargas.Controls.Add(New LiteralControl("<td></td>"))
tdBodyDescargas.Controls.Add(New LiteralControl("<td></td>"))
tdBodyDescargas.Controls.Add(New LiteralControl("<td style='text-align:center!important'>Carpeta</td>"))
Dim lnkRes As New ImageButton
lnkRes.ID = "lnkRes"
lnkRes.ImageUrl = "~/Imagenes/folder.png"
lnkRes.PostBackUrl = "#"
lnkRes.Attributes.Add("data-toggle", "tooltip")
lnkRes.Attributes.Add("data-placement", "right")
lnkRes.Attributes.Add("title", "Acceder")
AddHandler lnkRes.Click, AddressOf Me.lnkFolderRes
tdBodyDescargas.Controls.Add(New LiteralControl("<td style='text-align:center'>"))
tdBodyDescargas.Controls.Add(lnkRes)
tdBodyDescargas.Controls.Add(New LiteralControl("</td>"))
tdBodyDescargas.Controls.Add(New LiteralControl("</tr>"))
Else
dvPanel.Visible = False
Alert("No se encontraron descargas relacionadas.", TipoMensaje.MsgAdvertencia)
End If
udpDescargas.Update()
End Sub
Protected Sub lnkFolderCompaqt(sender As Object, e As EventArgs)
addUrl(Path.Combine(System.Configuration.ConfigurationManager.AppSettings("ContPAQDescargas").ToString, ViewState("FEMPRESA").ToString))
cargarFolderActual()
End Sub
Protected Sub lnkFolderRes(sender As Object, e As EventArgs)
If System.Configuration.ConfigurationManager.AppSettings("RespaldosArchivos") <> Nothing Then
addUrl(Path.Combine(System.Configuration.ConfigurationManager.AppSettings("RespaldosArchivos"), ViewState("FEMPRESA").ToString))
cargarFolderActual()
End If
End Sub
Private Sub cargarFolderActual()
tdBodyDescargas.Controls.Clear()
Dim empresa As Empresa = getEmpresaBDContPAQi()
Dim BDContPAQi As String = empresa.BDContPAQi
Dim contador As Integer = 0
Dim listaFile As New List(Of String)
Dim listaDir As New List(Of String)
Dim listaNombres As New List(Of String)
Dim GB As Integer = 1073741824
Dim MB As Integer = 1048576
Dim KB As Integer = 1024
lblEmpresa.Text = "Empresa: " & empresa.Empresa
Dim resultado As Double = 0.0
listaFile.Clear()
listaDir.Clear()
If (BDContPAQi <> "") Then
Try
Dim ruta As String = getUrl()
listaFile.AddRange(Directory.GetFiles(ruta))
listaDir.AddRange(Directory.GetDirectories(ruta))
dvPanel.Visible = True
For Each d In listaDir
Dim di As New DirectoryInfo(d)
tdBodyDescargas.Controls.Add(New LiteralControl("<tr>"))
tdBodyDescargas.Controls.Add(New LiteralControl("<td style='text-align:left!important'>" & di.Name & "</td>"))
tdBodyDescargas.Controls.Add(New LiteralControl("<td style='text-align:center!important'></td>"))
tdBodyDescargas.Controls.Add(New LiteralControl("<td style='text-align:center!important'>" & di.CreationTime.ToString("dd/MM/yyyy") & "</td>"))
tdBodyDescargas.Controls.Add(New LiteralControl("<td style='text-align:center!important'>Carpeta</td>"))
Dim lnk As New ImageButton
lnk.ID = "lnkFol" & contador
lnk.Attributes.Add("fname", di.Name)
lnk.ImageUrl = "~/Imagenes/folder.png"
lnk.PostBackUrl = "#"
lnk.PostBackUrl = "#"
lnk.Attributes.Add("data-toggle", "tooltip")
lnk.Attributes.Add("data-placement", "right")
lnk.Attributes.Add("title", "Acceder")
AddHandler lnk.Click, AddressOf Me.lnkFolder
tdBodyDescargas.Controls.Add(New LiteralControl("<td style='text-align:center'>"))
tdBodyDescargas.Controls.Add(lnk)
tdBodyDescargas.Controls.Add(New LiteralControl("</td>"))
tdBodyDescargas.Controls.Add(New LiteralControl("</tr>"))
contador = contador + 1
Next
contador = 0
For Each s In listaFile
Dim fi As New FileInfo(s)
Dim sLen As String = fi.Length.ToString()
If fi.Length >= (GB) Then
resultado = fi.Length / GB
sLen = String.Format("{0} Gb", resultado.ToString("#.##"))
ElseIf fi.Length >= (MB) Then
resultado = fi.Length / MB
sLen = String.Format("{0} Mb", resultado.ToString("#.##"))
ElseIf fi.Length >= (KB) Then
resultado = fi.Length / KB
sLen = String.Format("{0} Kb", resultado.ToString("#.##"))
End If
tdBodyDescargas.Controls.Add(New LiteralControl("<tr>"))
tdBodyDescargas.Controls.Add(New LiteralControl("<td style='text-align:left!important'>" & fi.Name & "</td>"))
tdBodyDescargas.Controls.Add(New LiteralControl("<td style='text-align:center!important'>" & sLen & "</td>"))
tdBodyDescargas.Controls.Add(New LiteralControl("<td style='text-align:center!important'>" & fi.CreationTime.ToString("dd/MM/yyyy") & "</td>"))
tdBodyDescargas.Controls.Add(New LiteralControl("<td style='text-align:center!important'>Archivo</td>"))
Dim lnk As New ImageButton
lnk.ID = "lnkDes" & contador
lnk.Attributes.Add("fname", fi.Name)
lnk.ImageUrl = "~/Imagenes/Abajo.png"
lnk.PostBackUrl = "#"
lnk.Attributes.Add("data-toggle", "tooltip")
lnk.Attributes.Add("data-placement", "right")
lnk.Attributes.Add("title", "Descargar")
AddHandler lnk.Click, AddressOf Me.lnkBtnDownload
tdBodyDescargas.Controls.Add(New LiteralControl("<td style='text-align:center'>"))
tdBodyDescargas.Controls.Add(lnk)
tdBodyDescargas.Controls.Add(New LiteralControl("</td>"))
tdBodyDescargas.Controls.Add(New LiteralControl("</tr>"))
contador = contador + 1
udpDescargas.Update()
Next
Catch ex As Exception
Alert("Error al obtener Archivos." & ex.Message, TipoMensaje.MsgAdvertencia)
dvPanel.Visible = False
End Try
Else
dvPanel.Visible = False
Alert("No se encontraron descargas relacionadas.", TipoMensaje.MsgAdvertencia)
End If
udpDescargas.Update()
End Sub
Protected Sub lnkFolder(sender As Object, e As EventArgs)
Dim lnk As ImageButton
lnk = DirectCast(sender, ImageButton)
Dim nombre As String = lnk.Attributes("fname")
addUrl(nombre)
cargarFolderActual()
End Sub
Protected Sub lnkBtnDownload(sender As Object, e As EventArgs)
Dim empresa As Empresa = getEmpresaBDContPAQi()
Dim BDContPAQi As String = empresa.BDContPAQi
Dim ruta As String = getUrl()
Dim lnk As ImageButton
lnk = DirectCast(sender, ImageButton)
Dim nombre As String = lnk.Attributes("fname")
Dim filename As String = Path.Combine(ruta, nombre)
If filename <> "" Then
Dim file As New System.IO.FileInfo(filename)
If file.Exists Then
Response.Clear()
Response.AddHeader("Content-Disposition", "attachment; filename=" & cleanFileName(file.Name))
Response.AddHeader("Content-Length", file.Length.ToString())
Response.ContentType = "application/octet-stream"
Response.TransmitFile(file.FullName)
Response.End()
Else
End If
End If
End Sub
Private Shared ReadOnly AllowedChars As Dictionary(Of Char, Char) = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ._()0123456789".ToDictionary(Function(c) c)
Private Function cleanFileName(fileName As String) As String
Dim newFileName As Char() = fileName.ToCharArray()
For i As Integer = 0 To newFileName.Length - 1
If Not AllowedChars.ContainsKey(newFileName(i)) Then
newFileName(i) = "_"c
End If
Next
Return New String(newFileName)
End Function
Private Function getEmpresaBDContPAQi() As Empresa
Dim objEmpresa As New ClsSisEmpresas()
Dim empresa As New Empresa
If objEmpresa.GetEmpresas(UsuarioActual.CveEmpresa, "-1", "-1", "-1", "-1") Then
' If objEmpresa.GetEmpresas(4, "-1", "-1", "-1", "-1") Then
empresa = objEmpresa.Empresa
End If
objEmpresa.Dispose()
Return empresa
End Function
Private Function getUrl() As String
Dim listaUrl As List(Of String) = DirectCast(ViewState("URLS"), List(Of String))
Dim tempUrl As String = ""
If listaUrl.Count > 0 Then
tempUrl = listaUrl(listaUrl.Count - 1)
End If
Return tempUrl
End Function
Private Sub addUrl(ByVal folder As String)
Dim listaUrl As List(Of String) = DirectCast(ViewState("URLS"), List(Of String))
Dim tempUrl As String
If listaUrl.Count = 0 Then
listaUrl.Add(folder)
Else
tempUrl = Path.Combine(listaUrl(listaUrl.Count - 1), folder)
listaUrl.Add(tempUrl)
End If
End Sub
Private Sub removerUltimaUrl()
Dim urls As List(Of String) = DirectCast(ViewState("URLS"), List(Of String))
If urls.Count > 0 Then
urls.RemoveAt(urls.Count - 1)
End If
End Sub
Protected Sub btnImgBack_Click(sender As Object, e As ImageClickEventArgs) Handles btnImgBack.Click
removerUltimaUrl()
If getUrl() = "" Then
addCargaLinksInicio()
Else
cargarFolderActual()
End If
End Sub
Protected Sub btnHome_Click(sender As Object, e As ImageClickEventArgs) Handles btnHome.Click
Dim urlLista As New List(Of String)
ViewState("URLS") = urlLista
addCargaLinksInicio()
End Sub
End Class