private static void AddUserToGame(User user, IEnumerable<XElement> gameNodes, DiabloEntities context) { foreach (var gameNode in gameNodes) { string gameName = gameNode.Element("game-name").Value; Game game = context.Games.FirstOrDefault(g => g.Name == gameName); if (!user.UsersGames.Any(ug => ug.Game.Name == gameName)) { XElement characterNode = gameNode.Element("character"); string characterName = characterNode.Attribute("name").Value; decimal cash = decimal.Parse(characterNode.Attribute("cash").Value); int level = int.Parse(characterNode.Attribute("level").Value); DateTime joinDate = DateTime.Parse(gameNode.Element("joined-on").Value); Character character = context.Characters.FirstOrDefault(c => c.Name == characterName); UsersGame userGame = new UsersGame() { Cash = cash, JoinedOn = joinDate, Level = level, Character = character, Game = game, User = user, }; context.UsersGames.Add(userGame); context.SaveChanges(); Console.WriteLine("User {0} successfully added to game {1}", user.Username, gameName); } } }
public static void Main() { var context = new DiabloEntities(); var characterNames = context.Characters.Select(c => c.Name); foreach (var characterName in characterNames) { Console.WriteLine(characterName); } }
private static User CreateUserIfNotExist(XElement userNode, DiabloEntities context) { User user = null; string username = userNode.Attribute("username").Value; user = context.Users.FirstOrDefault(u => u.Username == username); if (user != null) { Console.WriteLine("User {0} already exists", username); } else { string newUserUsername = userNode.Attribute("username").Value; string ipAddress = userNode.Attribute("ip-address").Value; DateTime registrationDate = DateTime.Parse(userNode.Attribute("registration-date").Value); bool isDeleted = userNode.Attribute("is-deleted").Value == "1"; string firstName = null; if (userNode.Attribute("first-name") != null) { firstName = userNode.Attribute("first-name").Value; } string lastName = null; if (userNode.Attribute("last-name") != null) { lastName = userNode.Attribute("last-name").Value; } string email = null; if (userNode.Attribute("email") != null) { email = userNode.Attribute("email").Value; } user = new User() { Username = newUserUsername, IpAddress = ipAddress, RegistrationDate = registrationDate, IsDeleted = isDeleted, FirstName = firstName, LastName = lastName, Email = email }; context.Users.Add(user); context.SaveChanges(); Console.WriteLine("Successfully added user {0}", newUserUsername); } return user; }
public static void Main() { var context = new DiabloEntities(); var finishedGames = context.Games .OrderBy(g => g.Name) .ThenBy(g => g.Duration) .Where(g => g.IsFinished) .Select(g => new { GameName = g.Name, GameDuration = g.Duration, Users = g.UsersGames .Select(ug => new { Username = ug.User.Username, IpAddress = ug.User.IpAddress }) }); var xmlGames = new XElement("games"); foreach (var finishedGame in finishedGames) { var xmlGame = new XElement("game"); var xmlGameName = new XAttribute("name", finishedGame.GameName); xmlGame.Add(xmlGameName); if (finishedGame.GameDuration != null) { var xmlGameDuration = new XAttribute("duration", finishedGame.GameDuration); xmlGame.Add(xmlGameDuration); } var xmlUsers = new XElement("users"); foreach (var user in finishedGame.Users) { var xmlUser = new XElement("user"); var xmlUsernameAttribute = new XAttribute("username", user.Username); var xmlUserIpAttribute = new XAttribute("ip-address", user.IpAddress); xmlUser.Add(xmlUsernameAttribute); xmlUser.Add(xmlUserIpAttribute); xmlUsers.Add(xmlUser); } xmlGame.Add(xmlUsers); xmlGames.Add(xmlGame); } var xmlDoc = new XDocument(xmlGames); xmlDoc.Save(@"..\..\finished-games.xml"); Console.WriteLine("Finished games exported to finished-games.xml"); }
public static void Main() { var context = new DiabloEntities(); var xmlDoc = XDocument.Load(@"..\..\users-and-games.xml"); var userNodes = xmlDoc.XPathSelectElements("/users/user"); foreach (var userNode in userNodes) { User user = CreateUserIfNotExist(userNode, context); var gameNodes = userNode.XPathSelectElements("games/game"); AddUserToGame(user, gameNodes, context); } }
public static void Main() { var context = new DiabloEntities(); var characters = context.Characters .OrderBy(c => c.Name) .Select(c => new { Name = c.Name, PlayedBy = c.UsersGames .Select(ug => ug.User.Username) }); var jsSerializer = new JavaScriptSerializer(); var jsonLeagues = jsSerializer.Serialize(characters.ToList()); File.WriteAllText(@"..\..\characters.json", jsonLeagues); Console.WriteLine("File characters.json exported."); }