From c6c372ffd385dc083e29322ee1cf03ff2853a67e Mon Sep 17 00:00:00 2001 From: Pat Hartl Date: Sat, 25 Jan 2025 12:45:33 -0600 Subject: [PATCH] Get playsessions on import as separate request --- .../ImportService.cs | 20 +++++++- LANCommander.SDK/Client.cs | 3 ++ .../Services/PlaySessionService.cs | 48 +++++++++++++++++++ 3 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 LANCommander.SDK/Services/PlaySessionService.cs diff --git a/LANCommander.Launcher.Services/ImportService.cs b/LANCommander.Launcher.Services/ImportService.cs index fc9acbd4..863afb52 100644 --- a/LANCommander.Launcher.Services/ImportService.cs +++ b/LANCommander.Launcher.Services/ImportService.cs @@ -249,7 +249,7 @@ namespace LANCommander.Launcher.Services }) .ImportAsync(); - await DatabaseContext.BulkImport() + /*await DatabaseContext.BulkImport() .SetTarget(localGame.PlaySessions) .UseSource(game.PlaySessions) .Include(p => p.Game) @@ -261,7 +261,7 @@ namespace LANCommander.Launcher.Services t.UserId = s.UserId; }) .AsNoRemove() - .ImportAsync(); + .ImportAsync();*/ var importedMedia = await DatabaseContext.BulkImport() .SetTarget(localGame.Media) @@ -319,6 +319,22 @@ namespace LANCommander.Launcher.Services } #endregion + + var playSessions = await Client.PlaySessions.GetAsync(localGame.Id); + + await DatabaseContext.BulkImport() + .SetTarget(localGame.PlaySessions) + .UseSource(playSessions) + .Include(p => p.Game) + .Assign((t, s) => + { + t.Game = localGame; + t.Start = s.Start; + t.End = s.End; + t.UserId = s.UserId; + }) + .AsNoRemove() + .ImportAsync(); localGame = await GameService.UpdateAsync(localGame); diff --git a/LANCommander.SDK/Client.cs b/LANCommander.SDK/Client.cs index f6f978ff..b14931b4 100644 --- a/LANCommander.SDK/Client.cs +++ b/LANCommander.SDK/Client.cs @@ -44,6 +44,7 @@ namespace LANCommander.SDK public readonly IssueService Issues; public readonly LobbyService Lobbies; public readonly ServerService Servers; + public readonly PlaySessionService PlaySessions; private Settings _Settings { get; set; } public Settings Settings @@ -75,6 +76,7 @@ namespace LANCommander.SDK Issues = new IssueService(this); Lobbies = new LobbyService(this); Servers = new ServerService(this); + PlaySessions = new PlaySessionService(this); BaseCmdlet.Client = this; @@ -99,6 +101,7 @@ namespace LANCommander.SDK Issues = new IssueService(this); Lobbies = new LobbyService(this, logger); Servers = new ServerService(this, logger); + PlaySessions = new PlaySessionService(this, logger); BaseCmdlet.Client = this; diff --git a/LANCommander.SDK/Services/PlaySessionService.cs b/LANCommander.SDK/Services/PlaySessionService.cs new file mode 100644 index 00000000..e68d7b5c --- /dev/null +++ b/LANCommander.SDK/Services/PlaySessionService.cs @@ -0,0 +1,48 @@ +using LANCommander.SDK.Enums; +using LANCommander.SDK.Extensions; +using LANCommander.SDK.Helpers; +using LANCommander.SDK.Models; +using LANCommander.SDK.PowerShell; +using Microsoft.Extensions.Logging; +using RestSharp; +using Semver; +using SharpCompress.Common; +using SharpCompress.Readers; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace LANCommander.SDK.Services +{ + public class PlaySessionService + { + private readonly ILogger Logger; + private Client Client { get; set; } + + public PlaySessionService(Client client) + { + Client = client; + } + + public PlaySessionService(Client client, ILogger logger) + { + Client = client; + Logger = logger; + } + + public async Task> GetAsync() + { + return await Client.GetRequestAsync>("/api/PlaySessions"); + } + + public async Task> GetAsync(Guid gameId) + { + return await Client.PostRequestAsync>($"/api/PlaySessions/{gameId}"); + } + } +}