private static void ExportData() { using (var db = new InstagraphMeContext()) { Console.WriteLine(ExportData(db)); } }
public static string ImportPictures(InstagraphMeContext db, string jsonString) { var deserializedPictures = JsonConvert.DeserializeObject <Picture[]>(jsonString); StringBuilder sb = new StringBuilder(); var pictures = new List <Picture>(); foreach (var picture in deserializedPictures) { bool isValid = !String.IsNullOrWhiteSpace(picture.Path) && picture.Size > 0; bool pictureExists = db.Pictures.Any(p => p.Path == picture.Path) && pictures.Any(p => p.Path == picture.Path); if (!isValid || pictureExists) { sb.AppendLine(errorMsg); continue; } pictures.Add(picture); sb.AppendLine(string.Format(successMsg, $"Picture {picture.Path}")); } db.Pictures.AddRange(pictures); db.SaveChanges(); return(sb.ToString().TrimEnd()); }
private static void ResetDatabase() { using (var db = new InstagraphMeContext()) { db.Database.EnsureDeleted(); db.Database.EnsureCreated(); Console.WriteLine(ImportData(db)); } }
private static string ExportData(InstagraphMeContext db) { StringBuilder sb = new StringBuilder(); //sb.Append(Serializer.GetUncommentedPosts(db)); sb.Append(Serializer.GetPopularUsers(db)); return(sb.ToString().Trim()); }
public static string ImportComments(InstagraphMeContext db, string xmlString) { var xDoc = XDocument.Parse(xmlString); var comments = new List <Comment>(); StringBuilder sb = new StringBuilder(); var elements = xDoc.Root.Elements(); foreach (var e in elements) { string userNameX = e.Element("user")?.Value; bool isValidUser = db.Users.Any(u => u.Username == userNameX); string postIdX = e.Element("post")?.Attribute("id").Value; int postId = -1; bool isInt = Int32.TryParse(postIdX, out postId); bool isValidPost = db.Posts.Any(p => p.Id == postId); string content = e.Element("content").Value; bool isValidCaption = string.IsNullOrWhiteSpace(content); if (!isValidUser || !isValidPost || isValidCaption) { sb.AppendLine(errorMsg); continue; } var user = db.Users.Where(u => u.Username == userNameX).SingleOrDefault(); var post = db.Posts.Where(p => p.Id == postId).SingleOrDefault(); comments.Add(new Comment() { Post = post, User = user, Content = content, }); sb.AppendLine(string.Format(successMsg, $"Comment {content}.")); } db.Comments.AddRange(comments); db.SaveChanges(); return(sb.ToString().TrimEnd()); }
public static string ImportData(InstagraphMeContext db) { StringBuilder sb = new StringBuilder(); var picturesJson = File.ReadAllText("Import/pictures.json"); //sb.AppendLine(Deserializer.ImportPictures(db, picturesJson)); var userJson = File.ReadAllText("Import/users.json"); //sb.Append(Deserializer.ImportUsers(db, userJson)); var followersJson = File.ReadAllText("Import/users_followers.json"); //sb.Append(Deserializer.ImportedFollowers(db, followersJson)); var postsXml = File.ReadAllText("Import/posts.xml"); //sb.Append(Deserializer.ImportPosts(db, postsXml)); var commentsXml = File.ReadAllText("Import/comments.xml"); sb.Append(Deserializer.ImportComments(db, commentsXml)); return(sb.ToString().Trim()); }
public static string GetUncommentedPosts(InstagraphMeContext db) { var posts = db.Posts.Where(p => p.Comments.Count == 0) .OrderBy(p => p.Id) .Select(p => new { Id = p.Id, Picture = p.Picture.Path, User = p.User.Username }).ToArray(); var counter = posts.Length; var json = JsonConvert.SerializeObject(posts, Formatting.Indented); File.WriteAllText("Export/UncommentedPosts.json", json); return($"{counter} posts are not commented"); }
public static string ImportPosts(InstagraphMeContext db, string xmlString) { var xDoc = XDocument.Parse(xmlString); var posts = new List <Post>(); StringBuilder sb = new StringBuilder(); var elements = xDoc.Root.Elements(); foreach (var e in elements) { string userNameX = e.Element("user").Value; bool isValidUser = db.Users.Any(u => u.Username == userNameX); string picturePathX = e.Element("picture").Value; bool isValidPath = db.Pictures.Any(p => p.Path == picturePathX); string captionsX = e.Element("caption").Value; bool isValidCaption = string.IsNullOrWhiteSpace(captionsX); if (!isValidUser || !isValidPath || isValidCaption) { sb.AppendLine(errorMsg); continue; } var user = db.Users.Where(u => u.Username == userNameX).SingleOrDefault(); var picture = db.Pictures.Where(p => p.Path == picturePathX).SingleOrDefault(); posts.Add(new Post() { User = user, Picture = picture, Caption = captionsX, }); sb.AppendLine(string.Format(successMsg, $"Post {captionsX}.")); } db.Posts.AddRange(posts); db.SaveChanges(); return(sb.ToString().TrimEnd()); }
public static string ImportUsers(InstagraphMeContext db, string jsonString) { var deserializedUsers = JsonConvert.DeserializeObject <UserDto[]>(jsonString); StringBuilder sb = new StringBuilder(); var users = new List <User>(); foreach (var userDto in deserializedUsers) { bool isValid = !String.IsNullOrWhiteSpace(userDto.UserName) && userDto.UserName.Length <= 30 && !String.IsNullOrWhiteSpace(userDto.Password) && userDto.Password.Length <= 20 && !String.IsNullOrWhiteSpace(userDto.ProfilePicture); bool isValidPath = db.Pictures.Any(p => p.Path == userDto.ProfilePicture); bool userExists = users.Any(u => u.Username == userDto.UserName); if (!isValid || !isValidPath || userExists) { sb.AppendLine(errorMsg); continue; } var picture = db.Pictures.Where(p => p.Path == userDto.ProfilePicture).SingleOrDefault(); users.Add(new User() { Username = userDto.UserName, Password = userDto.Password, ProfilePicture = picture }); sb.AppendLine(string.Format(successMsg, $"User {userDto.UserName}")); } db.Users.AddRange(users); db.SaveChanges(); return(sb.ToString().TrimEnd()); }
public static string ImportedFollowers(InstagraphMeContext db, string jsonString) { var deserializeUsersFollowers = JsonConvert.DeserializeObject <FollowerDto[]>(jsonString); var usersFollowers = new List <UserFollower>(); StringBuilder sb = new StringBuilder(); foreach (var uf in deserializeUsersFollowers) { bool isValid = db.Users.Any(u => u.Username == uf.User) && db.Users.Any(u => u.Username == uf.Follower); bool isExistsDb = db.UsersFollowers.Any(fu => fu.User.Username == uf.User && fu.Follower.Username == uf.Follower); bool isExistsLocal = usersFollowers.Any(fu => fu.User.Username == uf.User && fu.Follower.Username == uf.Follower); if (!isValid || uf.User == uf.Follower || isExistsDb || isExistsLocal) { sb.AppendLine(errorMsg); continue; } var user = db.Users.Where(u => u.Username == uf.User).SingleOrDefault(); var follower = db.Users.Where(u => u.Username == uf.Follower).SingleOrDefault(); var userFollower = new UserFollower() { User = user, Follower = follower }; usersFollowers.Add(userFollower); sb.AppendLine(string.Format(successMsg, $"Follower {user.Username} to User {follower.Username}.")); } db.UsersFollowers.AddRange(usersFollowers); db.SaveChanges(); return(sb.ToString().TrimEnd()); }
public static string GetPopularUsers(InstagraphMeContext db) { return(""); }