Lots of data and model setup
This commit is contained in:
@@ -5,6 +5,9 @@ namespace SVSim.Database.Repositories.Viewer;
|
||||
public interface IViewerRepository
|
||||
{
|
||||
Task<Models.Viewer?> GetViewerBySocialConnection(SocialAccountType accountType, ulong socialId);
|
||||
Task<Models.Viewer?> GetViewerWithSocials(ulong id);
|
||||
Task<Models.Viewer?> GetViewerByShortUdid(ulong shortUdid);
|
||||
Task<Models.Viewer?> GetViewerWithSocials(long id);
|
||||
Task<Models.Viewer?> GetViewerByShortUdid(long shortUdid);
|
||||
|
||||
Task<Models.Viewer> RegisterViewer(string displayName, SocialAccountType socialType,
|
||||
ulong socialAccountIdentifier, ulong? shortUdid = null);
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using SVSim.Database.Enums;
|
||||
using SVSim.Database.Models;
|
||||
using SVSim.Database.Repositories.Card;
|
||||
using SVSim.Database.Repositories.Globals;
|
||||
|
||||
namespace SVSim.Database.Repositories.Viewer;
|
||||
|
||||
@@ -8,6 +10,8 @@ public class ViewerRepository : IViewerRepository
|
||||
{
|
||||
protected readonly SVSimDbContext _dbContext;
|
||||
|
||||
private const int MaxFriends = 20;
|
||||
|
||||
public ViewerRepository(SVSimDbContext dbContext)
|
||||
{
|
||||
_dbContext = dbContext;
|
||||
@@ -22,15 +26,58 @@ public class ViewerRepository : IViewerRepository
|
||||
?.Viewer;
|
||||
}
|
||||
|
||||
public async Task<Models.Viewer?> GetViewerWithSocials(ulong id)
|
||||
public async Task<Models.Viewer?> GetViewerWithSocials(long id)
|
||||
{
|
||||
return await _dbContext.Set<Models.Viewer>().AsNoTracking().Include(viewer => viewer.SocialAccountConnections)
|
||||
.FirstOrDefaultAsync(viewer => viewer.Id == id);
|
||||
}
|
||||
|
||||
public async Task<Models.Viewer?> GetViewerByShortUdid(ulong shortUdid)
|
||||
public async Task<Models.Viewer?> GetViewerByShortUdid(long shortUdid)
|
||||
{
|
||||
return await _dbContext.Set<Models.Viewer>().AsNoTracking().Include(viewer => viewer.MissionData)
|
||||
.Include(viewer => viewer.Info).FirstOrDefaultAsync(viewer => viewer.ShortUdid == shortUdid);
|
||||
}
|
||||
|
||||
public async Task<Models.Viewer> RegisterViewer(string displayName, SocialAccountType socialType,
|
||||
ulong socialAccountIdentifier, ulong? shortUdid = null)
|
||||
{
|
||||
Models.Viewer viewer = new Models.Viewer
|
||||
{
|
||||
DisplayName = displayName
|
||||
};
|
||||
GameConfiguration gameConfig = await new GlobalsRepository(_dbContext).GetGameConfiguration("default");
|
||||
|
||||
viewer.SocialAccountConnections.Add(new SocialAccountConnection
|
||||
{
|
||||
AccountId = socialAccountIdentifier,
|
||||
AccountType = socialType
|
||||
});
|
||||
|
||||
viewer.Info.MaxFriends = gameConfig.MaxFriends;
|
||||
viewer.Info.CountryCode = "KOR";
|
||||
viewer.Info.BirthDate = DateTime.UtcNow;
|
||||
viewer.Currency.Crystals = gameConfig.DefaultCrystals;
|
||||
viewer.Currency.Rupees = gameConfig.DefaultRupees;
|
||||
viewer.Currency.RedEther = gameConfig.DefaultEther;
|
||||
viewer.MissionData.TutorialState = 100; // finishes tutorial for now
|
||||
|
||||
List<ClassEntry> classes = await _dbContext.Set<ClassEntry>().ToListAsync();
|
||||
viewer.Classes = classes.Select(ce => new ViewerClassData
|
||||
{
|
||||
Class = ce,
|
||||
Exp = 0,
|
||||
Level = 0,
|
||||
LeaderSkin = ce.DefaultLeaderSkin
|
||||
}).ToList();
|
||||
|
||||
viewer.Sleeves.Add(gameConfig.DefaultSleeve);
|
||||
viewer.Degrees.Add(gameConfig.DefaultDegree);
|
||||
viewer.Emblems.Add(gameConfig.DefaultEmblem);
|
||||
viewer.MyPageBackgrounds.Add(gameConfig.DefaultMyPageBackground);
|
||||
viewer.LeaderSkins.AddRange(viewer.Classes.Select(vcd => vcd.LeaderSkin));
|
||||
|
||||
_dbContext.Set<Models.Viewer>().Add(viewer);
|
||||
await _dbContext.SaveChangesAsync();
|
||||
return viewer;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user