/// <summary> /// Método para eliminar los archivos del repositorio SharePoint. /// </summary> /// <param name="lstArchivosSHP">lista que contiene los ID de los archivos</param> /// <param name="listName">nombre del directorio dentro del cual se buscan los archivos</param> /// <param name="hayError">parámetro para capturar los errores del procedimiento</param> /// <returns>Indicador con el resultado de la operación</returns> public ProcessResult <Object> EliminaArchivoSharePoint(List <int> lstArchivosSHP, string listName, ref string hayError) { ProcessResult <Object> resultado = new ProcessResult <Object>(); string siteUrl = string.Empty; siteUrl = RetornaSiteUrlSharePoint(); try { Dictionary <string, string> termsArray = new Dictionary <string, string>(); using (ClientContext clientContext = new ClientContext(siteUrl)) { #region Logueo clientContext.Credentials = RetornaCredencialesServer(); #endregion foreach (int idFile in lstArchivosSHP) { CamlQuery query = new CamlQuery(); query.ViewXml = string.Format(@" <View Scope='Recursive'> <Query> <Where> <Eq><FieldRef Name='ID'/><Value Type='Number'>" + idFile + @"</Value></Eq> </Where> <RowLimit>1</RowLimit> </Query> </View>", idFile); List list = clientContext.Web.Lists.GetByTitle(listName); ListItemCollection listItems = list.GetItems(query); clientContext.Load(listItems); clientContext.ExecuteQuery(); if (listItems.Count > 0) { ListItem item = listItems[0]; item.DeleteObject(); } } clientContext.ExecuteQuery(); } resultado.Result = 1; } catch (Exception ex) { hayError = ex.Message; LogBL.grabarLogError(ex);//GRC16062015 resultado.Result = -1; resultado.IsSuccess = false; resultado.Exception = new ApplicationLayerException <SharePointService>(ex); } return(resultado); }
/// <summary> /// Retorna el arreglo de bytes del documento SharePoint /// </summary> /// <param name="hayError">Cadena para ver si hay errores al retornar el documento.</param> /// <param name="idItem">Código del Archivo en el SharePoint</param> /// <param name="siteUrl">URL del Site SharePoint</param> /// <param name="listName">Lista de biblioteca.</param> /// <returns>Indicador con el resultado de la operación</returns> public ProcessResult <Object> DescargaArchivoPorId(ref string hayError, long idItem, string listName) { ProcessResult <Object> resultado = new ProcessResult <Object>(); hayError = string.Empty; MemoryStream memorySt = null; string siteUrl = string.Empty; siteUrl = RetornaSiteUrlSharePoint(); try { using (ClientContext context = new ClientContext(siteUrl)) { context.Credentials = RetornaCredencialesServer(); CamlQuery query = new CamlQuery(); query.ViewXml = string.Format(@" <View Scope='Recursive'> <Query> <Where> <Eq><FieldRef Name='ID'/><Value Type='Number'>" + idItem + @"</Value></Eq> </Where> <RowLimit>1</RowLimit> </Query> </View>", idItem); List list = context.Web.Lists.GetByTitle(listName); ListItemCollection listItems = list.GetItems(query); context.Load(listItems); context.ExecuteQuery(); if (listItems.Count == 1) { ListItem item = listItems.First(); Microsoft.SharePoint.Client.File file = item.File; ClientResult <Stream> data = file.OpenBinaryStream(); ////Load the Stream data for the file context.Load(file); context.ExecuteQuery(); if (data != null) { using (memorySt = new MemoryStream()) { data.Value.CopyTo(memorySt); } } resultado.Result = memorySt.ToArray(); } else { memorySt = null; } } } catch (Exception ex) { hayError = ex.Message; LogBL.grabarLogError(ex);//GRC16062015 resultado.Result = null; resultado.IsSuccess = false; resultado.Exception = new ApplicationLayerException <SharePointService>(ex); } return(resultado); }
/// <summary> /// Registra un nuevo archivo en el servidor de SharePoint /// </summary> /// <param name="hayError">variable que contiene el mensaje de error al registrar</param> /// <param name="listName">biblioteca de donde se encontrará el archivo</param> /// <param name="folderName">nombre de carpeta del archivo</param> /// <param name="fileName">nombre del archivo</param> /// <param name="myFile">stream del archivo</param> /// <param name="prmSiteURL">URL del servidor SharePoint</param> /// <param name="prmCredenciales">Credenciales de acceso al servidor SharePoint</param> /// <returns>Indicador con el resultado de la operación</returns> public ProcessResult <Object> RegistraArchivoSharePoint(ref string hayError, string listName, string folderName, string fileName, MemoryStream myFile, string prmSiteURL = null, NetworkCredential prmCredenciales = null) { ProcessResult <Object> resultado = new ProcessResult <Object>(); string siteUrl = string.Empty; if (string.IsNullOrEmpty(prmSiteURL)) { siteUrl = RetornaSiteUrlSharePoint(); } else { siteUrl = prmSiteURL; } try { using (ClientContext clientContext = new ClientContext(siteUrl)) { Web webSite = clientContext.Web; #region Logeo if (prmCredenciales == null) { clientContext.Credentials = RetornaCredencialesServer(); } else { clientContext.Credentials = prmCredenciales; } #endregion #region CreacionListaPrincipal /*-------------------Verificamos si la Lista ya existe.GRC.---------------------*/ List existeLista = null; ListCollection lstCollection = clientContext.Web.Lists; IEnumerable <List> misLitas = clientContext.LoadQuery(lstCollection.Include(list => list.Title)); clientContext.ExecuteQuery(); existeLista = misLitas.FirstOrDefault(lista => lista.Title.ToLower() == listName.ToLower()); if (existeLista == null) { ListCreationInformation creationInfo = new ListCreationInformation(); creationInfo.Title = listName; creationInfo.TemplateType = (int)ListTemplateType.DocumentLibrary; List listGeneral = webSite.Lists.Add(creationInfo); listGeneral.Description = DatosConstantes.ArchivosContrato.DescripcionBibliotecaSHP; listGeneral.Update(); clientContext.ExecuteQuery(); } #endregion #region crearDirectorio var folder = CreateCarpeta(clientContext.Web, listName, folderName); #endregion #region listaDirectorio List listaSitio = clientContext.Web.Lists.GetByTitle(listName); clientContext.Load(listaSitio); clientContext.Load(listaSitio.RootFolder); clientContext.ExecuteQuery(); var serverRelativeURLFile = listaSitio.RootFolder.ServerRelativeUrl.ToString() + (string.IsNullOrEmpty(folderName) ? "" : "/" + folderName) + "/" + fileName; #endregion #region GenerarBytesSHP Stream stmMyFile; byte[] newFile = myFile.ToArray(); stmMyFile = new MemoryStream(newFile); #endregion #region CopiarStreamArchivo Microsoft.SharePoint.Client.File.SaveBinaryDirect(clientContext, serverRelativeURLFile, stmMyFile, true); #endregion #region LeerNuevoArchivo clientContext.Load(webSite); clientContext.ExecuteQuery(); // cargamos el archivo guardado Microsoft.SharePoint.Client.File getNewFile = webSite.GetFileByServerRelativeUrl(serverRelativeURLFile); clientContext.Load(getNewFile); #endregion #region CargarDatos ListItem myItem = getNewFile.ListItemAllFields; clientContext.Load(myItem); clientContext.Load(myItem.File); clientContext.ExecuteQuery(); resultado.Result = myItem.Id; #endregion } } catch (Exception ex) { hayError = ex.Message; LogBL.grabarLogError(ex); resultado.Result = -1; resultado.IsSuccess = false; resultado.Exception = new ApplicationLayerException <SharePointService>(ex); } return(resultado); }