Exemplo n.º 1
0
        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));
        }