public static string crearDocumento(ISession session, string carpetaId_objetivo, Documento doc_atributos, string filePath) { try { String nombrefichero = doc_atributos.numEmpleado + ".pdf"; IItemEnumerable<IQueryResult> results = session.Query("SELECT cmis:objectId FROM cmis:folder WHERE cmis:name='" + carpetaId_objetivo + "' AND cmis:objectTypeId ='cmis:folder'", false); Folder carpetaObjetivo = null; foreach (IQueryResult query in results) { foreach (IPropertyData prop in query.Properties) { String queryName = prop.QueryName; Object value = prop.FirstValue; ICmisObject obj = session.GetObject((string)value); if (obj is IFolder) carpetaObjetivo = (Folder)obj; else throw new Exception("CREAR DOCUMENTO: ERROR :: No se puede subir el archivo " + nombrefichero + " .La carpeta objetivo no es de tipo 'Folder'. Por favor, revisar el id de objeto que se pasa por parámetros"); } } Dictionary<String, Object> properties = new Dictionary<string, object>(); properties.Add(PropertyIds.ObjectTypeId, "D:iaflacaixa:Product"); //properties.Add(PropertyIds.ObjectTypeId, "cmis:document"); properties.Add(PropertyIds.Name, nombrefichero); properties.Add(PropertyIds.ContentStreamMimeType, "application/pdf"); properties.Add("iaflacaixa:numEmpleado", System.Convert.ToInt32(doc_atributos.numEmpleado)); properties.Add("iaflacaixa:DNI", doc_atributos.dni); properties.Add("iaflacaixa:nombre", doc_atributos.nombre_presona); properties.Add("iaflacaixa:apellidos", doc_atributos.apellidos); byte[] fichero = File.ReadAllBytes(filePath); Stream stream = new MemoryStream(fichero); ContentStream contentStream = new ContentStream(); contentStream.Length = fichero.Length; contentStream.FileName = nombrefichero; contentStream.MimeType = "application/pdf"; contentStream.Stream = stream; IDocument newdoc = carpetaObjetivo.CreateDocument(properties, contentStream,VersioningState.Major); }catch(Exception ex) { return ("ERROR en Crear Documento:"+ex.Message+"\n"+ex.StackTrace); } return "OK"; }
public ActionResult SubirDocumentacion(String nombre_presona, String apellidos, String numEmpleado, String dni, HttpPostedFileBase file) { //Primero lo subimos al directorio temporal del servidor string filePath = Path.Combine(Path.GetTempPath(), file.FileName); System.IO.File.WriteAllBytes(filePath, ReadData(file.InputStream)); string log = string.Empty; Documento doc = new Documento(); doc.nombre_presona=nombre_presona; doc.numEmpleado=numEmpleado; doc.apellidos=apellidos; doc.dni = dni; log = CMIS_Factory.crearDocumento(ses,"flacaixa", doc, filePath); //Una vez que lo tenemos en el directorio temportal, lo subimos a alfresco return Json(log); }
public static List<Documento> GetAllDocumentsByFolder(string username, string password, string url_cmis_atompub,string folder) { List<Documento> resultado = new List<Documento>(); ISession session = LoginRepository( username, password, url_cmis_atompub); /*IOperationContext folderOpCtx = session.CreateOperationContext(); folderOpCtx.FilterString="cmis:name, cmis:path"; folderOpCtx.IncludeAcls = false; folderOpCtx.IncludeAllowableActions = false; folderOpCtx.IncludePolicies = false; folderOpCtx.IncludeRelationships = DotCMIS.Enums.IncludeRelationshipsFlag.None; folderOpCtx.IncludePathSegments = false; folderOpCtx.OrderBy = null; folderOpCtx.CacheEnabled = true;*/ IItemEnumerable<IQueryResult> results = session.Query("SELECT cmis:objectId FROM cmis:folder WHERE cmis:name='" + folder + "' AND cmis:objectTypeId ='cmis:folder'", false); foreach(IQueryResult query in results) { foreach (IPropertyData prop in query.Properties) { String queryName = prop.QueryName; Object value = prop.FirstValue; ICmisObject carpeta_buscada = session.GetObject((string)value); IFolder carpetilla = null; if (carpeta_buscada is IFolder) { carpetilla = (Folder)carpeta_buscada; IItemEnumerable<ICmisObject> docs = carpetilla.GetChildren(); foreach(ICmisObject obj in docs) { Documento doc = new Documento(); IProperty propdni = null; IProperty propnombre = null; IProperty propapellidos = null; IProperty propidempleado = null; try { propdni = obj.Properties.Where(x => x.LocalName.Equals("DNI")).First<IProperty>(); propnombre = obj.Properties.Where(x => x.LocalName.Equals("nombre")).First<IProperty>(); propapellidos = obj.Properties.Where(x => x.LocalName.Equals("apellidos")).First<IProperty>(); propidempleado = obj.Properties.Where(x => x.LocalName.Equals("numEmpleado")).First<IProperty>(); } catch (Exception ex ) { doc.dni = ""; doc.apellidos = ""; doc.nombre_presona = ""; doc.numEmpleado = ""; } if (propdni != null && propdni.FirstValue != null) { doc.dni = propdni.Value.ToString(); } if (propnombre != null && propnombre.FirstValue != null) { doc.nombre_presona = propnombre.Value.ToString(); } if (propapellidos != null && propapellidos.FirstValue !=null) { doc.apellidos = propapellidos.Value.ToString(); } if (propidempleado != null && propidempleado.FirstValue != null) { doc.numEmpleado = propidempleado.Value.ToString(); } doc.iddocumento = obj.Id; String [] param= {"//"}; doc.documento = ip_server+"/alfresco/d/a/" + obj.Id.Replace("workspace://","workspace/")+ "/" + obj.Name; doc.url_visualizar = ip_server+"/alfresco/d/d/" + obj.Id.Replace("workspace://", "workspace/") + "/" + obj.Name; resultado.Add(doc); } } } } return resultado; }