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())); } }
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."); } } }
/// <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); } }
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())); } }
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())); } }