diff --git a/ProjectLighthouse/Controllers/UserController.cs b/ProjectLighthouse/Controllers/UserController.cs index 265d9126..afd7c542 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,26 @@ 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(); } + + // Profile only right now + [HttpPost("update_my_pins")] + public async Task UpdateMyPins() + { + User user = await this.database.UserFromRequest(this.Request); + if (user == null) return this.StatusCode(403, ""); + + string pinsText = await new System.IO.StreamReader(this.Request.Body).ReadToEndAsync(); + Pins pinData = JsonSerializer.Deserialize(pinsText); + + // 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(",", pinData.profile_pins); + 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..eedaaebe --- /dev/null +++ b/ProjectLighthouse/Types/Profiles/Pins.cs @@ -0,0 +1,12 @@ +using LBPUnion.ProjectLighthouse.Serialization; + +namespace LBPUnion.ProjectLighthouse.Types.Profiles +{ + public class Pins + { + public long[] progress { get; set; } + public long[] awards { get; set; } + public long[] profile_pins { get; set; } + } +} +