private WfContent SaveAttachment(string parentPath, Attachment attachment, bool overwrite) { var parent = Node.LoadNode(parentPath); if (parent == null) { throw new ApplicationException("Cannot create content because parent does not exist. Path: " + parentPath); } var fileAttachment = attachment as FileAttachment; var name = fileAttachment.Name; // check existing file var node = Node.LoadNode(RepositoryPath.Combine(parentPath, name)); var contentTypeName = UploadHelper.GetContentType(name, parentPath) ?? "File"; File file; if (node == null) { // file does not exist, create new one file = CreateAttachment.CreateFileContent(contentTypeName, parent, name); if (file == null) { return(null); } } else { // file exists if (overwrite) { // overwrite it, so we open it file = node as File; // node exists and it is not a file -> delete it and create a new one if (file == null) { node.ForceDelete(); file = CreateAttachment.CreateFileContent(contentTypeName, parent, name); if (file == null) { return(null); } } file.Name = name; } else { // do not overwrite it file = CreateAttachment.CreateFileContent(contentTypeName, parent, name); if (file == null) { return(null); } file.AllowIncrementalNaming = true; } } file.DisableObserver(typeof(WorkflowNotificationObserver)); try { // also saves the content ExchangeHelper.SetAttachment(file, fileAttachment); } catch (Exception e) { Logger.WriteException(e); } return(new WfContent(file)); }