using InABox.Core;
using InABox.Database;
namespace PRS.Shared;
///
/// Updating Wpf and Timebench fields to use Platform.DesktopVersion and Platform.MobileVersion
///
public class Update_7_14 : DatabaseUpdateScript
{
public override VersionNumber Version => new (7, 14);
public override bool Update()
{
Logger.Send(LogType.Information, "", "Converting User.Wpf, User.Timebench -> User.Platform.DesktopVersion, User.Platform.MobileVersion");
Logger.Send(LogType.Information, "", "Loading Wpf, Timebench properties");
var props = DbFactory.NewProvider(Logger.Main).Query(new Filter(x => x.Name).InList("Wpf", "TimeBench"))
.Rows.Select(x => x.ToObject()).ToArray();
DatabaseSchema.Load(props);
var columns = Columns.None().Add(x => x.ID);
columns.Add("Wpf", "TimeBench");
var users = DbFactory.NewProvider(Logger.Main).Query(
new Filter().All(),
columns).ToObjects().ToList();
foreach(var user in users)
{
if(user.UserProperties.Dictionary.TryGetValue("Wpf", out var wpf))
{
user.Platform.DesktopVersion = wpf?.Value?.ToString() ?? "";
}
if (user.UserProperties.Dictionary.TryGetValue("TimeBench", out var timebench))
{
user.Platform.MobileVersion = timebench?.Value?.ToString() ?? "";
}
}
DbFactory.NewProvider(Logger.Main).Save(users);
Logger.Send(LogType.Information, "", "Finished updating user versions");
return true;
}
}