Esempio n. 1
0
        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!"));
        }
        private GameManagerFile CreateCueSheet(FileInfo sourceFileInfo, GameManagerFile sourceFile)
        {
            var managerFile = new GameManagerFile();
            var sb          = new StringBuilder();

            sb.AppendLine($"FILE \"{sourceFileInfo.Name}\" BINARY");
            sb.AppendLine("  TRACK 01 MODE2/2352");
            sb.AppendLine("    INDEX 01 00:00:00");

            var cueSheetFileName = Path.ChangeExtension(sourceFile.Name, ".cue");

            File.WriteAllText(
                Path.Combine(
                    sourceFileInfo.Directory.FullName,
                    cueSheetFileName),
                sb.ToString());

            managerFile.Name   = cueSheetFileName;
            managerFile.Path   = sourceFile.Path;
            managerFile.NodeId = sourceFile.NodeId;

            return(managerFile);
        }