TFS_ANTIGUO/SIGPC/App_Code/Documento.cs
kledezma 290b81b54d SIGPC
git-tfs-id: [http://192.168.1.10:8080/tfs/AyA]$/SINORT;C518
2021-01-22 14:59:35 +00:00

698 lines
31 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//=======================================================================
// Instituto Costarricense de Acueductos y Alcantarillados. - 2012
// Sistema de Autoevaluación para Control Interno
//
// Explicación de los contenidos del archivo.
// =========================================================================
// Historial
// PERSONA DIA MES - AÑO DESCRIPCIÓN
// Pedro Leiva Cerdas 10 Febrero - 2014 Entrega del sistema. (Versión original del archivo)
// Clase para trabajar con VISION 2020
// //======================================================================
// Derechos Reservados (C) 2012 AyA.
// ESTE CÓDIGO ES PROVEÍDO “TAL CUAL ES” SIN GARANTÍA ALGUNA
// DE NINGÚN TIPO, SEA IMPLICITA O EXPLICITA.
// NO SE PERMITE SU REPRODUCCIÓN PARCIAL O TOTAL, NI SU COMERCIALIZACIÓN
//======================================================================
using System;
using BASEBL; // Para usar a enumsBL
using System.IO;
using System.Web;
using System.Text;
using System.Data;
using System.Linq;
using System.Web.UI;
using System.Collections;
using System.Configuration;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Text.RegularExpressions;
using System.Net;
public partial class Documento : General
{
//Se hace referencia del WS
vision2020serverapionline.wsapi wsVision2020;
public string const_strUsuario = ConfigurationSettings.AppSettings["const_strUsuario"].ToString();
public string const_strClave = ConfigurationSettings.AppSettings["const_strClave"].ToString();
public string const_strArchivadores = ConfigurationSettings.AppSettings["const_strArchivadores"].ToString();
public string const_strGaveta = ConfigurationSettings.AppSettings["const_strGaveta"].ToString();
public string strIdGaveta = ""; //para este sistema sevri simpre serà ="00000035" pero mejor lo buscamos
public string const_strLlaves = ConfigurationSettings.AppSettings["const_strLlaves"].ToString(); //para este sistema SDI estas son las llaves por default
//public const string const_strUsuario = "sdaa";
//public const string const_strClave = "usersdaa";
//public const string const_strGaveta = "Disponibilidades";
/// <summary>
/// Método que se utiliza para retornar un DS con el àrbol Estructura
/// </summary>
///
public DataSet dsEstructura(string strUsuario, string strClave, bool bolMappingTypeAttribute)
{
DataSet dsArbolEstructura = new DataSet();
try
{
wsVision2020 = new vision2020serverapionline.wsapi();
dsArbolEstructura = wsVision2020.Arbol_Estructura(strUsuario, strClave, bolMappingTypeAttribute);
}
catch (Exception ex)
{
return null;
}
return dsArbolEstructura;
}
/// <summary>
/// Método que se utiliza para retornar el id de la Carpeta o sea la DEPENDENCIA que nos interesa
/// si retorna un null es que no encontro la Carpeta
/// </summary>
///
private string Id_Carpeta(string strLlaves, string strValores)
{
DataSet dsCarpeta = new DataSet();
string strId_Carpeta = null;
try
{
wsVision2020 = new vision2020serverapionline.wsapi();
dsCarpeta = wsVision2020.Devuelve_Ids_Gaveta_Carpeta(const_strUsuario, const_strClave, const_strArchivadores, const_strGaveta, strLlaves, strValores);
if (dsCarpeta.Tables[0].Rows.Count > 0)
{
strId_Carpeta = dsCarpeta.Tables[0].Rows[1]["valor"].ToString();
}
}
catch (Exception ex)
{
return strId_Carpeta;
}
return strId_Carpeta;
}
/// <summary>
/// Método que se utiliza para retornar un DS con la lista de los archivos soportados
/// </summary>
///
public DataSet dsLista_archivos_soportados()
{
DataSet dsLista_archivos_soportados = new DataSet();
try
{
wsVision2020 = new vision2020serverapionline.wsapi();
dsLista_archivos_soportados = wsVision2020.Lista_De_Archivos_Soportados();
}
catch (Exception ex)
{
return null;
}
return dsLista_archivos_soportados;
}
/// <summary>
/// Método que se utiliza para retornar un DS con la lista de las carpetas
/// Ejemplo: wsVision2020.Buscar_Carpetas("sisproap", "usersisproap", "Sistemas", "sisproap", "", "Dependencias|Region|Area|Sistema|Estacion|Equipo|Horimetro|Usuario Sistema");
/// </summary>
///
private DataSet dsLista_Carpetas(string strLlaves, string strValoresLlaves)
{
DataSet dsBuscar_Carpetas = new DataSet();
try
{
// Para el caso de sisproap siempre el strId_Gaveta = 0000003N
wsVision2020 = new vision2020serverapionline.wsapi();
dsBuscar_Carpetas = wsVision2020.Buscar_Carpetas(const_strUsuario, const_strClave, const_strArchivadores, const_strGaveta, strIdGaveta, strLlaves, strValoresLlaves);
}
catch (Exception ex)
{
throw ex;
}
return dsBuscar_Carpetas;
}
/// <summary>
/// Método que se utiliza para retornar un DS con la lista de documentos de una carpeta
/// Ejemplo: DataSet dsLista_De_Documentos = wsVision2020.Lista_De_Documentos(dsBuscar_Carpetas.Tables[0].Rows[0]["IDE_REG"].ToString());
/// </summary>
///
private DataSet dsLista_Simple_Documentos_Carpeta(string strId_Carpeta)
{
DataSet dsLista_De_Documentos = new DataSet();
try
{
wsVision2020 = new vision2020serverapionline.wsapi();
dsLista_De_Documentos = wsVision2020.Lista_De_Documentos(strId_Carpeta);
}
catch (Exception ex)
{
throw ex;
}
return dsLista_De_Documentos;
}
/// <summary>
/// Método que retorna un string con la URL de un id_objeto
/// </summary>
///
public string strURLArchivo(string strID_Carpeta, string strIde_obj)
{
DataSet dsObtener_URLArchivo = new DataSet();
string strURLArchivo = "";
try
{
wsVision2020 = new vision2020serverapionline.wsapi();
strURLArchivo = wsVision2020.Descargar_Documento(const_strUsuario, const_strClave, const_strArchivadores, const_strGaveta, strID_Carpeta, strIde_obj, true);
}
catch (Exception ex)
{
return "";
}
return strURLArchivo;
}
/// <summary>
/// Método que retorna un string con la descripción del archivo
/// </summary>
///
public string strDescripcionArchivo(string strIde_obj)
{
DataSet dsObtener_DescripcionArchivo = new DataSet();
string strDescripcionArchivo = "";
try
{
wsVision2020 = new vision2020serverapionline.wsapi();
dsObtener_DescripcionArchivo = wsVision2020.Lista_Notas_Documento(const_strUsuario, const_strClave, strIde_obj);
if (dsObtener_DescripcionArchivo.Tables.Count > 0)
{
strDescripcionArchivo = dsObtener_DescripcionArchivo.Tables[0].Rows[0]["Nota"].ToString();
}
}
catch (Exception ex)
{
return "Sin descripción";
}
return strDescripcionArchivo;
}
/// <summary>
/// Método que inserta una nota al documento
/// </summary>
///
public bool bolInsertar_DescripcionArchivo(string strIde_carpeta, string strIde_objeto, string strDescripcion_obj)
{
bool Respuesta = false;
try
{
wsVision2020 = new vision2020serverapionline.wsapi();
wsVision2020.Insertar_Nota_Documento(const_strUsuario, const_strClave, const_strArchivadores, const_strGaveta, strIde_carpeta, strIde_objeto, strDescripcion_obj);
Respuesta = true;
}
catch (Exception ex)
{
return Respuesta;
}
return Respuesta;
}
/// <summary>
/// Método que inserta una nota a la carpeta del riesgo, esto es para darle un nombre conocido a cada una de ellas
/// </summary>
///
public bool bolInsertar_DescripcionCarpeta(string strArchivadores, string strIde_carpeta, string strDescripcion_obj)
{
bool Respuesta = false;
try
{
wsVision2020 = new vision2020serverapionline.wsapi();
wsVision2020.Insertar_Nota_Expediente(const_strUsuario, const_strClave, const_strArchivadores, const_strGaveta, strIde_carpeta, strDescripcion_obj);
Respuesta = true;
}
catch (Exception ex)
{
return Respuesta;
}
return Respuesta;
}
/// <summary>
/// Este método devuelve un DS completo con la siguiente estructura (invoca los WebService necesarios)
///---------------------------------------------------------------------------------------------------------------------
/// Dependencia | ide_reg | ide_obj | des_obj | archivado | MB | ext_tipo | URL | ESTADO
///----------------------------------------------------------------------------------------------------------------------
/// </summary>
/// <param name="strLlaves">estructura de la llave: ejemplo:"Dependencias|Region|Area|Sistema|Estacion|Equipo|Horimetro|Usuario Sistema"</param>
/// <param name="strValoresLlaves">valores de la llave:ejemplo: 1|2|3|1|1|318|sisproap</param>
/// <returns></returns>
///
public DataSet dsLista_Completa_Documentos_Carpeta(string strLlaves, string strValoresLlaves)
{
DataSet dsCarpeta = new DataSet();
DataSet dsListaDocumentos = new DataSet();
DataSet dsArchivo = new DataSet();
try
{
// Obtener el id_reg (ID de la carpeta) y cantidad de documentos contenidos en ella
dsCarpeta = dsLista_Carpetas(strLlaves, strValoresLlaves);
if (dsCarpeta.Tables.Count.Equals(0))
{
// no existe una carpeta
}
else if (dsCarpeta.Tables[0].Rows.Count > 0)
//PENDIENTE: ojo si encuentra mas de dos registros debe de enviar un correo al administrador indicando que encontró
//directorios duplicados con la misma estructura y esto debe de correjirse.
{
// Obtiene la lista de los archivos (aun no tiene el URL)
dsListaDocumentos = dsLista_Simple_Documentos_Carpeta(dsCarpeta.Tables[0].Rows[0]["ide_reg"].ToString());
if (dsListaDocumentos.Tables.Count > 0)
{
//Construir el DataTable
DataTable dtArchivo = new DataTable();
dtArchivo.Columns.Add("ide_carpeta", typeof(string));
dtArchivo.Columns.Add("ide_objeto", typeof(string));
dtArchivo.Columns.Add("des_objeto", typeof(string));
dtArchivo.Columns.Add("FechaArchivado", typeof(DateTime));
dtArchivo.Columns.Add("MB", typeof(string));
dtArchivo.Columns.Add("ext_objeto", typeof(string));
dtArchivo.Columns.Add("descripcion_objeto", typeof(string));
dtArchivo.Columns.Add("Estado", typeof(string));
//se recorre el DS para obtener la descripción del los archivos
foreach (DataRow drTemp in dsListaDocumentos.Tables[0].Rows)
{
//Cargar valores al ROW y agregar al DataTable
dtArchivo.Rows.Add(dsCarpeta.Tables[0].Rows[0]["ide_reg"].ToString(),
drTemp["ide_obj"].ToString(),
drTemp["des_obj"].ToString(),
drTemp["Archivado"].ToString(),
drTemp["MB"].ToString(),
drTemp["ext_tip"].ToString(),
strDescripcionArchivo(drTemp["ide_obj"].ToString()).ToString(),
"~/App_Themes/Estados/imgBolita_Verde.png");
}
// Convertir el DataTable a DataSet
dsArchivo.Tables.Add(dtArchivo);
}
}
}
catch (Exception ex)
{
throw ex;
}
return dsArchivo;
}
/// <summary>
/// Este método crea una carpeta, en la GAVETA="SEVRI" Id_Gaveta="00000035"
/// </summary>
///
public string strInsertar_Carpeta(string strArchivadores, string strLlaves, string strValoresLlaves)
{
string strId_Carpeta = null;
try
{
// Me aseguro que no exista esa carpeta o sea que no no se ha creado esa dependencia, ya que
// aunque exista siempre ella crea una carpeta nueva, porque lo que importa es el ID y no el nombre de la dependencia
// que trae en la llave
wsVision2020 = new vision2020serverapionline.wsapi();
if (!(wsVision2020.Existe_Carpeta(const_strArchivadores, const_strGaveta, strLlaves, strValoresLlaves)))
{
// Se crea la carpeta y se obtiene el id de la nueva carpeta
strId_Carpeta = wsVision2020.Insertar_Carpeta(const_strUsuario, const_strClave, const_strArchivadores, const_strGaveta, strLlaves, strValoresLlaves);
}
else
{
// En el caso que si exista la carpeta, solo se solicita el id_carpeta invocando al método Id_Carpeta
strId_Carpeta = Id_Carpeta(strLlaves, strValoresLlaves);
}
}
catch (Exception ex)
{
}
return strId_Carpeta;
}
/// <summary>
/// Este método sube un archivo a una carpeta especifica, y agrega una descripción a al archivo,
/// En caso de no exisistir la carpeta, esta será creada automáticamente y se le agrega una etiqueta o nombre a dicha carpeta
/// </summary>
///
public bool Archivar_Documento_Byte(string strEtiquetaCarpeta, string strLlaves, string strValoresLlaves, string strNombreArchivo, Byte[] byteArchivoEnByte, string strDescripcionDocumento)
{
string strId_Carpeta = null;
bool valor_retornado = false;
string str_idObjeto = ""; //id del objeto luego de ser guardado
try
{
wsVision2020 = new vision2020serverapionline.wsapi();
//Paso 1: asegurarse que la carpeta exista
if (!(wsVision2020.Existe_Carpeta(const_strArchivadores, const_strGaveta, strLlaves, strValoresLlaves)))
{
// Se crea la carpeta y se obtiene el id de la nueva carpeta
strId_Carpeta = wsVision2020.Insertar_Carpeta(const_strUsuario, const_strClave, const_strArchivadores, const_strGaveta, strLlaves, strValoresLlaves);
// Se coloca una nota o etiqueta a la carpeta, esto es para personalizar el nombre, en este casa
// se le esta asignando el codigo del riesgo.
wsVision2020.Insertar_Nota_Expediente(const_strUsuario, const_strClave, const_strArchivadores, const_strGaveta, strId_Carpeta, strEtiquetaCarpeta);
}
else
{
// En el caso que si exista la carpeta, solo se solicita el id_carpeta invocando al método Id_Carpeta
strId_Carpeta = Id_Carpeta(strLlaves, strValoresLlaves);
}
//Verificar si encontro el id_carpeta
if (strId_Carpeta.ToString().Trim() != "")
{
//Paso 2: Archivar documento en Byte
str_idObjeto = wsVision2020.ArchivarDocumentoByteDevuelveIdObjeto(const_strUsuario, const_strClave, const_strArchivadores, const_strGaveta, strId_Carpeta, strNombreArchivo, byteArchivoEnByte);
}
//Paso 3: Subir descripción del archivo (si es que existe)
if (!(strDescripcionDocumento.ToString() == string.Empty && str_idObjeto == string.Empty))
{
valor_retornado = bolInsertar_DescripcionArchivo(strId_Carpeta, str_idObjeto, strDescripcionDocumento);
}
}
catch (Exception ex)
{
return valor_retornado;
}
return valor_retornado;
}
/// <summary>
/// Carga el grid de documento
/// </summary>
/// <param name="lblTotalDocumento">cantidad de registros que posee el grid de documento</param>
/// <param name="grvDocumento">grid para la carga de datos</param>
/// <param name="strLlave">estructura de la llave - ejemplo: Dependencias|Region|Area|Sistema|Estacion|Equipo|Horimetro|Usuario Sistema</param>
/// <param name="strLLavePK">valores de la llave - ejemplo: 1|2|3|1|1|318|sisproap</param>
/// <returns></returns>
///
public Boolean LlenarGridView_Documento(Label lblTotalDocumento, GridView grvDocumento, String strLlave, String strLLavePK)
{
DataSet ListaArchivosDS = new DataSet();
String strDependencia = String.Empty;
try
{
if (strLLavePK.ToString() != "0")
{
//Se construye el campo con los valores de las llaves, se agrega el cambio de la biblioteca verificando si el
// se coloca la validacion, para verificar si la llave que ingresa es de Biblioteca o no
//esto para mantener el PKDEPENDENCIA siempre en 1 para la llave biblioteca
ListaArchivosDS = dsLista_Completa_Documentos_Carpeta(strLlave,
(strLLavePK == (ConfigurationSettings.AppSettings["estructuraLlaveBiblioteca"] + "|" + ConfigurationManager.AppSettings["prmUsuario_VISION2020"].ToString()) ?
ConfigurationSettings.AppSettings["PKBiblioteca"] : Session["PKDEPENDENCIA"].ToString().Trim()) + "|" +
strLLavePK.ToString());
if (ListaArchivosDS.Tables.Count.Equals(0)) //Si el DS viene vacio
{
GlobalBL.InstanciaGlobalBL().sCantidadRegistros = "Documentos(0)";
lblTotalDocumento.Text = "0 Registros encontrados";
}
else
{
Session["CANTIDAD"] = 0;
detalleGridView(ListaArchivosDS, grvDocumento, lblTotalDocumento);
Session["CANTIDAD"] = ListaArchivosDS.Tables[0].Rows.Count.ToString();
GlobalBL.InstanciaGlobalBL().sCantidadRegistros = "Documentos" + "(" + ListaArchivosDS.Tables[0].Rows.Count.ToString() + ")";
}
}
return true;
}
catch (Exception ex)
{
return false; // no se logró conetar al web Service
}
}
/// <summary>
/// Guardar documentos en base a la llave establecida
/// </summary>
/// <param name="strEtiquetaCarpeta">descripcion de la carpeta, lo que se va almacenar</param>
/// <param name="txtNombreDeseadoAchivo">Nombre del archivo</param>
/// <param name="txtDescripcionDocumento">Descripcion del archivo</param>
/// <param name="txtURL">Url: pendiente</param>
/// <param name="afuArchivo">archivo a almacenar</param>
/// <param name="strLlave">la estructura de la llave: ejemplo:"Dependencias|Region|Area|Sistema|Estacion|Equipo|Horimetro|Usuario Sistema"</param>
/// <param name="strLLavePK">valores de la llave:ejemplo: 1|2|3|1|1|318|sisproap</param>
/// TextBox txtURL-
public void GuardarDatos_Documento(string strEtiquetaCarpeta, TextBox txtNombreDeseadoAchivo, TextBox txtDescripcionDocumento, TextBox txtURL, AjaxControlToolkit.AsyncFileUpload afuArchivo, String strLlave, String strLLavePK)
{
Documento Archivar_documento = new Documento();
Documento dtDocumento = new Documento();
bool boolValorRetorno = false;
//Ajustar nombre archivo, por si trae extensión
if (txtNombreDeseadoAchivo.Text.ToString().Trim().IndexOf(".") > 0)
{
txtNombreDeseadoAchivo.Text = txtNombreDeseadoAchivo.Text.Remove(txtNombreDeseadoAchivo.Text.ToString().Trim().IndexOf("."),
txtNombreDeseadoAchivo.Text.ToString().Trim().Length);
}
//Subir el archivo y descripción del archivo
if (afuArchivo.HasFile)
{
boolValorRetorno = Archivar_documento.Archivar_Documento_Byte(
strEtiquetaCarpeta, //ConfigurationManager.AppSettings["prmGaveta_SISPROAP_VISION2020"],
strLlave.ToString(), //"Dependencias|Region|Area|Sistema|Estacion|Equipo|Horimetro|Usuario Sistema"
//Parámetro 2: construir valores de las llaves -------------------------------
/* se coloca la validacion, para verificar si la llave que ingresa es de Biblioteca o no
,esto para mantener el PKDEPENDENCIA siempre en 1 para la llave biblioteca*/
(strLLavePK == (ConfigurationSettings.AppSettings["estructuraLlaveBiblioteca"]) ?
ConfigurationSettings.AppSettings["PKBiblioteca"] : Session["PKDEPENDENCIA"].ToString().Trim()) + "|" +
strLLavePK.ToString(),
//Fin contrucción parámetro llave ---------------------------------------------------
//Parámetro 3: Nombre Archivo
txtNombreDeseadoAchivo.Text.ToString().Trim().Equals("") ? afuArchivo.FileName : (txtNombreDeseadoAchivo.Text.Trim() + ".pdf"),
//Parámetro 4: Archivo en Byte
afuArchivo.FileBytes,
//Parámetro 6: Descripción del archivo
txtDescripcionDocumento.Text);
//PENDIENTE:Subir el archivo con el URL (ruta de INTERNET)
// aqui implementar subir archivo cuando ponen la URL
txtNombreDeseadoAchivo.Text = "";
txtDescripcionDocumento.Text = "";
txtURL.Text = "";
}
txtNombreDeseadoAchivo.Focus();
}
/// <summary>
/// Guarda en base de datos todo lo relacionado al archivo una vez que este fue subido al servidor
/// </summary>
/// <param name="strValoresLlaves"> </param> ejemplo Cedula|Tipoadjunto se dividen con el siguiente caracter "|"
/// <param name="strNombreArchivo"></param> ejemplo 1-1044-0505|LISTACERTIFICACIONLITERAL
/// <returns>Mensaje de el estado de la operacion</returns>
public string Archivar_Documento(string strValoresLlaves, string strNombreArchivo, Byte[] byteArchivoEnByte)
{
string strId_Carpeta = null;
string valor_retornado = "Error al guardar el archivo";
try
{
wsVision2020 = new vision2020serverapionline.wsapi();
//Paso 1: asegurarse que la carpeta exista
if (!(wsVision2020.Existe_Carpeta(const_strArchivadores, const_strGaveta, const_strLlaves, strValoresLlaves)))
{
// Se crea la carpeta y se obtiene el id de la nueva carpeta
strId_Carpeta = wsVision2020.Insertar_Carpeta(const_strUsuario, const_strClave, const_strArchivadores, const_strGaveta, const_strLlaves, strValoresLlaves);
// Se coloca una nota o etiqueta al carpeta, esto es para personalizar el nombre, en este casa
// se le esta asignando el codigo del riesgo.
//wsVision2020.Insertar_Nota_Expediente(const_strUsuario, const_strClave, const_strArchivadores, const_strGaveta, strId_Carpeta, strEtiquetaCarpeta);
}
else
{
// En el caso que si exista la carpeta, solo se solicita el id_carpeta invocando al método Id_Carpeta
strId_Carpeta = Id_Carpeta(const_strLlaves, strValoresLlaves);
}
//Verificar si encontro el id_carpeta
if (strId_Carpeta.ToString().Trim() != "")
{
//Paso 2: Archivar documento en Byte
valor_retornado = wsVision2020.Archivar_DocumentoByte(const_strUsuario, const_strClave, const_strArchivadores, const_strGaveta, const_strLlaves, strValoresLlaves, strNombreArchivo, byteArchivoEnByte);
}
}
catch (Exception ex)
{
throw ex;
//return valor_retornado;
}
return valor_retornado;
}
/// <summary>
/// Este método devuelve la ruta html para ver un documento en especifico
/// </summary>
public string Visor_Documento(string strValoresLlaves, string strCarpeta, string ruta, string strNombreDocumento)
{
wsVision2020 = new vision2020serverapionline.wsapi();
string valor_retornado = "";
string id_Carpeta = "";
string id_Obj = "";
DataSet ds = new DataSet();
bool descargado = true;
string strResultado = string.Empty;
try
{
if (wsVision2020.Existe_Carpeta(const_strArchivadores, const_strGaveta, const_strLlaves, strValoresLlaves))
{
ds = wsVision2020.Buscar_Carpetas(const_strUsuario, const_strClave, const_strArchivadores, const_strGaveta, strIdGaveta, const_strLlaves, strValoresLlaves);
id_Carpeta = ds.Tables[0].Rows[0]["ide_reg"].ToString();
ds = wsVision2020.Lista_De_Documentos(id_Carpeta);
if (ds.Tables[0].Rows.Count > 0)
{
DateTime fecha = Convert.ToDateTime(ds.Tables[0].Rows[0]["Archivado"].ToString());
fecha = fecha.AddDays(-10);
foreach (DataRow row in ds.Tables[0].Rows)
{
if (Convert.ToDateTime(row["Archivado"].ToString()) >= fecha)
{
if (row["des_obj"].ToString().Replace(" ", "_") == strNombreDocumento.Replace(" ", "_"))
{
fecha = Convert.ToDateTime(row["Archivado"].ToString());
id_Obj = row["ide_obj"].ToString();
}
}
}
using (vision2020serverapionline.wsapi wsVision2020Descarga = new vision2020serverapionline.wsapi())
{
strResultado = wsVision2020Descarga.Descargar_Documento(const_strUsuario, const_strClave, const_strArchivadores, const_strGaveta, id_Carpeta, id_Obj, true);
valor_retornado += GetFileName(strResultado.Replace(@"|", "")) + "|";
if (strResultado != string.Empty)
descargado = DescargarArchivo2020(strResultado, ruta, strCarpeta);
}
}
else
{
return "No existe";
}
}
else
{
return "No existe";
}
}
catch (Exception ex)
{
return valor_retornado;
}
return valor_retornado;
}
private string GetFileName(string hrefLink)
{
string[] parts = hrefLink.Split('/');
string fileName = "";
if (parts.Length > 0)
fileName = parts[parts.Length - 1];
else
fileName = hrefLink;
return fileName;
}
private bool DescargarArchivo2020(string url, string ruta, string strCarpeta)
{
bool respuesta = false;
try
{
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
string targetUrl = ConfigurationManager.AppSettings["DocumentosPDF"].ToString() + @"\" + strCarpeta + @"\";// Server.MapPath("../../DocumentosPDF/" + strCarpeta + "/");
//if (Directory.Exists(targetUrl))
//{
// Directory.Delete(targetUrl,true);
//}
Directory.CreateDirectory(targetUrl);
Directory.CreateDirectory(targetUrl + @"\DocumentosREQ\");
string originalFileName = request.RequestUri.ToString().Substring(request.RequestUri.ToString().LastIndexOf("/") + 1);// response.ResponseUri.AbsolutePath.Substring(response.ResponseUri.AbsolutePath.LastIndexOf("/") + 1);
Stream streamWithFileBody = response.GetResponseStream();
using (Stream output = File.OpenWrite(ruta))
{
streamWithFileBody.CopyTo(output);
streamWithFileBody.Close();
}
respuesta = true;
}
catch (Exception ex)
{
throw ex;
}
return respuesta;
}
/// <summary>
/// Este método devuelve la ruta html para ver un documento en especifico
/// </summary>
public string Consultar_Documento(string strValoresLlaves, string strCarpeta, string strNombreDocumento)
{
wsVision2020 = new vision2020serverapionline.wsapi();
string valor_retornado = "";
string id_Carpeta = "";
string id_Obj = "";
DataSet ds = new DataSet();
bool descargado = true;
try
{
if (wsVision2020.Existe_Carpeta(const_strArchivadores, const_strGaveta, const_strLlaves, strValoresLlaves))
{
ds = wsVision2020.Buscar_Carpetas(const_strUsuario, const_strClave, const_strArchivadores, const_strGaveta, strIdGaveta, const_strLlaves, strValoresLlaves);
id_Carpeta = ds.Tables[0].Rows[0]["ide_reg"].ToString();
ds = wsVision2020.Lista_De_Documentos(id_Carpeta);
DateTime fecha = Convert.ToDateTime(ds.Tables[0].Rows[0]["Archivado"].ToString());
fecha = fecha.AddDays(-10);
int nTamanno = 0;
foreach (DataRow row in ds.Tables[0].Rows)
{
if (Convert.ToDateTime(row["Archivado"].ToString()) >= fecha)
{
if (row["des_obj"].ToString().Replace(" ", "_") == strNombreDocumento.Replace(" ", "_"))
{
id_Obj = row["ide_obj"].ToString();
fecha = Convert.ToDateTime(row["Archivado"].ToString());
}
}
}
using (vision2020serverapionline.wsapi wsVision2020Descarga = new vision2020serverapionline.wsapi())
{
valor_retornado = wsVision2020Descarga.Descargar_Documento(const_strUsuario, const_strClave, const_strArchivadores, const_strGaveta, id_Carpeta, id_Obj, false);
}
}
else
{
return "No existe";
}
}
catch (Exception ex)
{
return valor_retornado;
}
return valor_retornado;
}
}