LANCommander/LANCommander.Server/Services/GameSaveService.cs

51 lines
1.4 KiB
C#
Raw Normal View History

2024-08-04 18:44:33 -05:00
using LANCommander.Server.Data;
using LANCommander.Server.Data.Models;
2023-01-17 17:57:12 -06:00
using LANCommander.Helpers;
2024-08-04 18:44:33 -05:00
using LANCommander.Server.Models;
2023-01-17 17:57:12 -06:00
2024-08-04 18:44:33 -05:00
namespace LANCommander.Server.Services
2023-01-17 17:57:12 -06:00
{
public class GameSaveService : BaseDatabaseService<GameSave>
{
private readonly LANCommanderSettings Settings;
2023-01-17 17:57:12 -06:00
public GameSaveService(DatabaseContext dbContext, IHttpContextAccessor httpContextAccessor) : base(dbContext, httpContextAccessor)
2023-01-17 17:57:12 -06:00
{
Settings = SettingService.GetSettings();
2023-01-17 17:57:12 -06:00
}
public override Task Delete(GameSave entity)
{
FileHelpers.DeleteIfExists(GetSavePath(entity.Id));
return base.Delete(entity);
}
public string GetSavePath(Guid gameId, Guid userId)
{
var save = Get(gs => gs.GameId == gameId && gs.UserId == userId).FirstOrDefault();
if (save == null)
return null;
return GetSavePath(save.Id);
}
public string GetSavePath(Guid id)
{
// Use get with predicate to avoid async
var save = Get(gs => gs.Id == id).FirstOrDefault();
if (save == null)
return null;
2023-01-17 17:57:12 -06:00
return GetSavePath(save);
}
public string GetSavePath(GameSave save)
{
return Path.Combine(Settings.UserSaves.StoragePath, save.UserId.ToString(), save.GameId.ToString(), $"{save.Id}");
2023-01-17 17:57:12 -06:00
}
}
}