Profile Editing - Reworked Cosmetic Selection

This commit is contained in:
Alan Moon 2025-07-11 10:43:40 -07:00
parent 868f6fa067
commit 502dda6436
2 changed files with 46 additions and 5 deletions

View File

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace qtc_net_client_2.ClientModel
{
public class ComboBoxItem
{
public string? Name { get; set; }
public object? Value { get; set; }
public override string ToString()
{
return Name ?? string.Empty;
}
}
}

View File

@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Mvc.TagHelpers;
using qtc_net_client_2.ClientModel;
using QtCNETAPI.Dtos.User;
using QtCNETAPI.Services.ApiService;
using System;
@ -29,34 +30,55 @@ namespace qtc_net_client_2.Forms
// get all owned cosmetics
var boughtItems = await _apiService.GetOwnedStoreItems();
List<ComboBoxItem> items = new List<ComboBoxItem>();
if(boughtItems != null && boughtItems.Success && boughtItems.Data != null)
{
foreach(var item in boughtItems.Data)
items.Add(new ComboBoxItem
{
Name = "(None)",
Value = 0
});
foreach (var item in boughtItems.Data)
{
// get item from the store
var storeItem = await _apiService.GetStoreItem(item.StoreItemId);
if(storeItem != null && storeItem.Success && storeItem.Data != null)
{
cbCosmetic.Items.Add(storeItem.Data.Name);
var cbi = new ComboBoxItem
{
Name = storeItem.Data.Name,
Value = storeItem.Data.Id
};
items.Add(cbi);
}
}
}
cbCosmetic.SelectedIndex = _apiService.CurrentUser.ActiveProfileCosmetic;
cbCosmetic.DataSource = items;
cbCosmetic.SelectedIndex = cbCosmetic.Items.IndexOf(items.FirstOrDefault(e => (int?)e.Value == _apiService.CurrentUser.ActiveProfileCosmetic));
}
private async void btnSave_Click(object sender, EventArgs e)
{
ComboBoxItem? selectedItem = (ComboBoxItem?)cbCosmetic.SelectedItem;
// update user info
UserUpdateInformationDto userUpdateInformationDto = new UserUpdateInformationDto
{
Id = _apiService.CurrentUser.Id,
Username = tbUsername.Text,
Bio = rtxtBio.Text,
DateOfBirth = _apiService.CurrentUser.DateOfBirth,
ProfileCosmeticId = cbCosmetic.SelectedIndex
DateOfBirth = _apiService.CurrentUser.DateOfBirth
};
if (selectedItem != null)
{
int selectedItemId = (int?)selectedItem.Value ?? 0;
userUpdateInformationDto.ProfileCosmeticId = selectedItemId;
}
var res = await _apiService.UpdateUserInformationAsync(userUpdateInformationDto);
if (res.Success)