Exemplo n.º 1
0
        public async Task <ActionResult> Delete(int id)
        {
            try
            {
                var game = await _context.Games.Include(x => x.Categories).Include(x => x.Dlcs).Include(x => x.Screenshots).FirstOrDefaultAsync(x => x.Id == id);

                if (game == null)
                {
                    return(Ok());
                }
                _context.Games.Remove(game);
                await _context.SaveChangesAsync();

                Filerectory.DeleteFile(game.BoxArtLocalPath);
                Filerectory.DeleteFile(game.CiaLocalPath);
                game.Dlcs.ForEach(x =>
                {
                    Filerectory.DeleteFile(x.LocalPath);
                });
                game.Screenshots.ForEach(x =>
                {
                    Filerectory.DeleteFile(x.LocalPath);
                });
                return(Ok());
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex.ToInfo()));
            }
        }
Exemplo n.º 2
0
        private static void CreateDbIfNotExists(IHost host)
        {
            Filerectory.CreateDirectory("../Database");
            using (var scope = host.Services.CreateScope())
            {
                var services = scope.ServiceProvider;

                try
                {
                    var context = services.GetRequiredService <QrCo3dsContext>();
                    context.Database.Migrate();
                }
                catch (Exception ex)
                {
                    var logger = services.GetRequiredService <ILogger <Program> >();
                    logger.LogError(ex, "An error occurred creating the DB.");
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// New Redlof
        /// </summary>
        /// <param name="source">The path of the file or directory to move.</param>
        /// <param name="dest">The path to the new location for sourceDirName . If sourceDirName is a file, then destDirName must also be a file name.</param>
        static void Main(string source, string dest)
        {
            try
            {
                if (string.IsNullOrEmpty(source))
                {
                    Console.WriteLine("Where is --source?");
                    return;
                }
                if (string.IsNullOrEmpty(dest))
                {
                    Console.WriteLine("Where is --dest?");
                    return;
                }
                var directories = GetDirectories(source);
                var files       = Directory.GetFiles(source).ToList();
                files.AddRange(directories.SelectMany(x => Directory.GetFiles(x)));
                files.ForEach(x =>
                {
                    try
                    {
                        var file          = new FileInfo(x);
                        var lastWriteTime = file.LastWriteTime;
                        var year          = lastWriteTime.Year;

                        var path = Path.Combine(dest, year.ToString(), lastWriteTime.ToString("yyyy-MM"));
                        Filerectory.CreateDirectory(path);
                        File.Move(x, Path.Combine(path, file.Name));

                        Console.Write($"\r{files.IndexOf(x) + 1}/{files.Count()}");
                    }
                    catch (Exception ex)
                    {
                        Catch(ex);
                    }
                });
            }
            catch (Exception ex)
            {
                Catch(ex);
            }
        }
Exemplo n.º 4
0
        public async Task <ActionResult <GameInfo> > Put(int id, [FromForm] GameRequest value)
        {
            try
            {
                var game = await _context.Games.FirstOrDefaultAsync(x => x.Id == id);

                if (game == null)
                {
                    return(BadRequest(new ExceptionInfo("That game doesn't exist.", $"GameId: {id}")));
                }

                var data   = JsonConvert.DeserializeObject <GameInfo>(value.Json);
                var folder = data.Name;
                Path.GetInvalidFileNameChars().ToList().ForEach(x =>
                {
                    folder = folder.Replace(x, '-');
                });

                var boxArt    = value.BoxArtFile;
                var cia       = value.CiaFile;
                var directory = Path.Combine(Paths.Attachment, folder);

                Filerectory.CreateDirectory(directory);

                if (boxArt != null)
                {
                    Filerectory.DeleteFile(game.BoxArtLocalPath);
                    var path = Path.Combine(directory, boxArt.FileName);
                    using (var stream = System.IO.File.Create(path))
                    {
                        await boxArt.CopyToAsync(stream);
                    }
                    game.BoxArtLocalPath = path;
                }

                if (cia != null)
                {
                    Filerectory.DeleteFile(game.CiaLocalPath);
                    var path = Path.Combine(directory, cia.FileName);
                    using (var stream = System.IO.File.Create(path))
                    {
                        await cia.CopyToAsync(stream);
                    }
                    game.CiaLocalPath = path;
                }

                game.Developer       = data.Developer;
                game.GameplayUrl     = data.GameplayUrl;
                game.IsLegit         = data.IsLegit;
                game.Name            = data.Name;
                game.NumberOfPlayers = data.NumberOfPlayers;
                game.Publisher       = data.Publisher;
                game.Region          = data.Region;
                game.ReleaseDate     = data.ReleaseDate;
                game.TagName         = string.IsNullOrEmpty(data.TagName) ? data.Name : data.TagName;

                await _context.SaveChangesAsync();

                return(game);
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex.ToInfo()));
            }
        }
Exemplo n.º 5
0
        public async Task <ActionResult <GameInfo> > Post([FromForm] GameRequest value)
        {
            try
            {
                var data   = JsonConvert.DeserializeObject <GameInfo>(value.Json);
                var folder = data.Name;
                Path.GetInvalidFileNameChars().ToList().ForEach(x =>
                {
                    folder = folder.Replace(x, '-');
                });

                var boxArt    = value.BoxArtFile;
                var cia       = value.CiaFile;
                var directory = Path.Combine(Paths.Attachment, folder);

                Filerectory.CreateDirectory(directory);

                if (boxArt != null)
                {
                    var path = Path.Combine(directory, boxArt.FileName);
                    using (var stream = System.IO.File.Create(path))
                    {
                        await boxArt.CopyToAsync(stream);
                    }
                    data.BoxArtLocalPath = path;
                }

                if (cia != null)
                {
                    var path = Path.Combine(directory, cia.FileName);
                    using (var stream = System.IO.File.Create(path))
                    {
                        await cia.CopyToAsync(stream);
                    }
                    data.CiaLocalPath = path;
                }

                var game = new GameInfo
                {
                    BoxArtLocalPath = data.BoxArtLocalPath,
                    Categories      = data.Categories.Select(x =>
                    {
                        return(new CategoryInfo
                        {
                            Name = x.Name,
                        });
                    }).ToList(),
                    CiaLocalPath    = data.CiaLocalPath,
                    Developer       = data.Developer,
                    GameplayUrl     = data.GameplayUrl,
                    IsLegit         = data.IsLegit,
                    Name            = data.Name,
                    NumberOfPlayers = data.NumberOfPlayers,
                    Publisher       = data.Publisher,
                    Region          = data.Region,
                    ReleaseDate     = data.ReleaseDate,
                    TagName         = string.IsNullOrEmpty(data.TagName) ? data.Name : data.TagName,
                };

                await _context.Games.AddAsync(game);

                await _context.SaveChangesAsync();

                return(game);
            }
            catch (Exception ex)
            {
                return(StatusCode(500, ex.ToInfo()));
            }
        }