diff --git a/.gitignore b/.gitignore index d6a197ac..5d65988d 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,6 @@ riderModule.iml /.idea/.idea.ProjectLighthouse/.idea/dataSources.local.xml *.sln.DotSettings.user /ProjectLighthouse/r/* -/ProjectLighthouse/logs/* \ No newline at end of file +/ProjectLighthouse/logs/* +/ProjectLighthouse/ProjectLighthouse.csproj.user +.vs/ \ No newline at end of file diff --git a/ProjectLighthouse/Controllers/UserController.cs b/ProjectLighthouse/Controllers/UserController.cs index 265d9126..1dc7ecb0 100644 --- a/ProjectLighthouse/Controllers/UserController.cs +++ b/ProjectLighthouse/Controllers/UserController.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using System.Text.Json; using System.Xml; using LBPUnion.ProjectLighthouse.Types; using LBPUnion.ProjectLighthouse.Types.Profiles; @@ -129,5 +130,25 @@ namespace LBPUnion.ProjectLighthouse.Controllers if (this.database.ChangeTracker.HasChanges()) await this.database.SaveChangesAsync(); // save the user to the database if we changed anything return this.Ok(); } + + [HttpPost("update_my_pins")] + public async Task UpdateMyPins() + { + User user = await this.database.UserFromRequest(this.Request); + if (user == null) return this.StatusCode(403, ""); + + string pinsString = await new System.IO.StreamReader(this.Request.Body).ReadToEndAsync(); + Pins pinJson = JsonSerializer.Deserialize(pinsString); + + // Sometimes the update gets called periodically as pin progress updates via playing, + // may not affect equipped profile pins however, so check before setting it. + string currentPins = user.Pins; + string newPins = string.Join(",", pinJson.ProfilePins); + if (!String.Equals(currentPins,newPins)) { + user.Pins = newPins; + await this.database.SaveChangesAsync(); + } + return this.Ok("[{\"StatusCode\":200}]"); + } } } \ No newline at end of file diff --git a/ProjectLighthouse/Types/Profiles/Pins.cs b/ProjectLighthouse/Types/Profiles/Pins.cs new file mode 100644 index 00000000..101ebf94 --- /dev/null +++ b/ProjectLighthouse/Types/Profiles/Pins.cs @@ -0,0 +1,14 @@ +using System.Text.Json.Serialization; +namespace LBPUnion.ProjectLighthouse.Types.Profiles +{ + public class Pins + { + [JsonPropertyName("progress")] + public long[] Progress { get; set; } + [JsonPropertyName("awards")] + public long[] Awards { get; set; } + [JsonPropertyName("profile_pins")] + public long[] ProfilePins { get; set; } + } +} +