public void AddGame(GameManagerNode node) { var game = new Game() { Id = node.Id, Title = node.Name, Publisher = node.Publisher, Year = node.ReleaseDate.HasValue ? node.ReleaseDate.Value.Year : 0, Players = node.Players.HasValue ? node.Players.Value : 0, Position = node.Position }; _context.Games.Add(game); _context.SaveChanges(); if (node.Files.Count > 0) { // Move the files to the correct location and update the BleemSync database to reflect where the files are moved to var outputDirectory = Path.Combine(_baseGamesDirectory, game.Id.ToString()); Directory.CreateDirectory(outputDirectory); PostProcessGameFiles(node.Files, outputDirectory); } _storage.Save(); }
public GameManagerNodeTreeItem(GameManagerNode node) { Id = node.Id.ToString(); Name = node.Name; Type = Enum.GetName(typeof(GameManagerNodeType), node.Type); Parent = node.ParentId == null ? "#" : node.ParentId.ToString(); }
public async Task <ActionResult> AddGame() { var temporaryFiles = new List <GameManagerFile>(); var formModel = await Request.StreamFile(_configuration["TemporaryPath"], temporaryFiles); GameUpload gameUpload = new GameUpload(); var bindingSuccessful = await TryUpdateModelAsync(gameUpload, prefix : "", valueProvider : formModel); if (!bindingSuccessful) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } } if (gameUpload.Cover != null && gameUpload.Cover != "") { var file = new GameManagerFile() { Name = "cover.png", Path = Path.GetTempFileName() }; var splitted = gameUpload.Cover.Split(","); if (splitted.Length > 1) { System.IO.File.WriteAllBytes(file.Path, Convert.FromBase64String(splitted[1])); temporaryFiles.Add(file); } } // Add game to the database var node = new GameManagerNode() { Name = gameUpload.Name, SortName = gameUpload.SortName, Description = gameUpload.Description, ReleaseDate = gameUpload.ReleaseDate, Players = gameUpload.Players, Developer = gameUpload.Developer, Publisher = gameUpload.Publisher, Type = GameManagerNodeType.Game, Files = temporaryFiles }; _gameManagerNodeRepository.Create(node); _storage.Save(); _gameManagerService.AddGame(node); Response.StatusCode = (int)HttpStatusCode.OK; return(Json("Game added!")); }
public void UpdateGame(GameManagerNode node) { var game = _context.Games.Find(node.Id); game.Title = node.Name; game.Publisher = node.Publisher; game.Year = node.ReleaseDate.HasValue ? node.ReleaseDate.Value.Year : 0; game.Players = node.Players.HasValue ? node.Players.Value : 0; game.Position = node.Position; _context.Games.Update(game); _context.SaveChanges(); }
public void DeleteGame(GameManagerNode node) { // Delete files first var gameDirectory = Path.Combine(_baseGamesDirectory, node.Id.ToString()); if (Directory.Exists(gameDirectory)) { Directory.Delete(gameDirectory, true); } var game = _context.Games.Find(node.Id); _context.Games.Remove(game); _context.SaveChanges(); }
public IEnumerable <GameManagerNode> GetGames() { List <GameManagerNode> nodes = new List <GameManagerNode>(); foreach (var game in _context.Games) { var node = new GameManagerNode { Id = game.Id, Name = game.Title, SortName = game.Title, ReleaseDate = new DateTime(game.Year, 1, 1), Players = game.Players, Publisher = game.Publisher, Type = GameManagerNodeType.Game }; string gameDir = Path.Combine(_baseGamesDirectory, game.Id.ToString()); // If user for some reason doesn't have the game files, don't return game if (Directory.Exists(gameDir)) { // For files, iterate what we have on disk instead of looking in the database foreach (var path in Directory.GetFiles(gameDir)) { node.Files.Add(new GameManagerFile { Name = Path.GetFileName(path), Path = Path.GetFullPath(path), Node = node }); } nodes.Add(node); } } return(nodes); }
public void UpdateGame(GameManagerNode node) { UpdateGames(new GameManagerNode[] { node }); }