示例#1
0
        public override string Export()
        {
            using (Container = new ArticleContext())
            {
                TransactionHelper.AddTransaction(Container, ActionType.Export, null, _currentUser);
                Container.SaveChanges();
            }

            var all    = GetAll(new QueryParams <Article>(0, 999, c => c.ArticleId));
            var allXml = all.Select(c => new XmlArticle {
                Article = c
            }).OrderBy(c => c.Article.ArticleId).ToList();

            using (var stream = XmlArticle.Serialize(allXml.GetType(), allXml))
            {
                stream.Position = 0;
                var document        = new XDocument(new XElement("Articles"));
                var anotherDocument = XDocument.Load(stream);
                foreach (var xNode in anotherDocument.Root.Elements().Select(c => c.Elements().First()))
                {
                    document.Root.Add(xNode);
                }
                return(document.ToString());
            }
        }
示例#2
0
        public string Export(int articleId)
        {
            Article article = null;

            using (Container = new ArticleContext())
            {
                article = Container.Articles.FirstOrNothing(c => c.ArticleId == articleId).Bind(Mapper.Map <Entities.Article, Article>).GetOrDefault(null);
                TransactionHelper.AddTransaction(Container, ActionType.Export, null, _currentUser);
                Container.SaveChanges();
            }

            var xmlAricle = new XmlArticle
            {
                Article = article
            };

            using (var stream = XmlArticle.Serialize(xmlAricle.GetType(), xmlAricle))
            {
                stream.Position = 0;
                var document        = new XDocument(new XElement("Articles"));
                var anotherDocument = XDocument.Load(stream);
                document.Root.Add(anotherDocument.Root.Elements().First());
                return(document.ToString());
            }
        }
示例#3
0
        public int Save(Article entity, bool now = true)
        {
            var xmlArticle = new XmlArticle
            {
                Article = entity
            };
            var duplicated = Document.Root.Elements().FirstOrDefault(c => c.Attribute("Link").Value == entity.Link);

            if (duplicated != null)
            {
                if (now)
                {
                    throw new Exception("Найдена статья с таким же источником. Статья не сохранена.");
                }
                else
                {
                    _builder.Append("Найдена повторяющиеся статья для \"{0}\". Статья не сохранена.".Fmt(duplicated.Attribute("ArticleName").Value));
                }
            }

            xmlArticle.Article.GroupId      = xmlArticle.Article.ArticleGroup.GroupId;
            xmlArticle.Article.CreationDate = DateTime.Now;

            using (var stream = xmlArticle.Serialize())
            {
                stream.Position = 0;
                var currentDocument = XDocument.Load(stream);
                if (currentDocument.Root != null)
                {
                    var element = currentDocument.Root.Elements().First();
                    if (duplicated != null)
                    {
                        return(-1);
                    }
                    else
                    {
                        AppendElement(element, "ArticleId", "ImageId");
                        if (now)
                        {
                            Document.Save(Path);
                        }
                        var id = int.Parse(element.Attribute("ArticleId").Value);
                        entity.ArticleId = id;
                        return(id);
                    }
                }
                return(-1);
            }
        }