public List<BlogPostImportResult> ValidateImport(BlogMLBlog blogPosts)
{
var result = new List<BlogPostImportResult>();
var unsavedUrls = new List<string>();
if (blogPosts != null && blogPosts.Posts != null)
{
foreach (var blogML in blogPosts.Posts)
{
// Validate authors
if (blogML.Authors != null &&
blogML.Authors.Count > 0 &&
(blogPosts.Authors == null || blogPosts.Authors.All(a => a.ID != blogML.Authors[0].Ref)))
{
var failedResult = CreateFailedResult(blogML);
failedResult.ErrorMessage = string.Format(BlogGlobalization.ImportBlogPosts_AuthorByRefNotFound_Message, blogML.Authors[0].Ref);
result.Add(failedResult);
continue;
}
var blogPostModel = MapViewModel(blogML, null, unsavedUrls);
unsavedUrls.Add(blogPostModel.BlogUrl);
BlogPostImportResult blogPost;
if (!ValidateModel(blogPostModel, blogML, out blogPost))
{
result.Add(blogPost);
continue;
}
blogPost = new BlogPostImportResult
{
Title = blogML.PostName ?? blogML.Title,
PageUrl = blogPostModel.BlogUrl,
Success = true,
Id = blogML.ID
};
result.Add(blogPost);
}
// Validate for duplicate IDS
result
.Where(bp => bp.Success)
.GroupBy(bp => bp.Id)
.Where(group => group.Count() > 1)
.ToList()
.ForEach(group => group
.ToList()
.ForEach(
bp =>
{
bp.Success = false;
bp.ErrorMessage = string.Format(BlogGlobalization.ImportBlogPosts_DuplicateId_Message, group.Key);
}));
}
return result;
}