mirror of
https://github.com/tribufu/ServerManagers
synced 2026-05-06 15:17:34 +00:00
source code checkin
This commit is contained in:
parent
5f8fb2c825
commit
7e57b72e35
675 changed files with 168433 additions and 0 deletions
77
src/ConanData/DataContainerSync.cs
Normal file
77
src/ConanData/DataContainerSync.cs
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
using ConanData.DataAccess;
|
||||
using ConanData.Database;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Headers;
|
||||
|
||||
namespace ConanData
|
||||
{
|
||||
/// <summary>
|
||||
/// The container for the Game Server data.
|
||||
/// </summary>
|
||||
public partial class DataContainer
|
||||
{
|
||||
/// <summary>
|
||||
/// Instantiates the LDataContainer and parses all the user data files
|
||||
/// </summary>
|
||||
public static DataContainer Create(string dataFile)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(dataFile) || !File.Exists(dataFile))
|
||||
return new DataContainer();
|
||||
|
||||
var connectionString = $"Data Source={dataFile};Version=3;Read Only=True;";
|
||||
var connection = Connection.CreateConnection(connectionString, true);
|
||||
|
||||
var accountDataAccess = new AccountDataAccess(connection);
|
||||
var accountData = accountDataAccess.FetchDataSetAll();
|
||||
|
||||
var charactersDataAccess = new CharactersDataAccess(connection);
|
||||
var charactersData = charactersDataAccess.FetchDataSetAll();
|
||||
|
||||
var guildsDataAccess = new GuildsDataAccess(connection);
|
||||
var guildsData = guildsDataAccess.FetchDataSetAll();
|
||||
|
||||
connection.DeregisterConnection();
|
||||
|
||||
var container = new DataContainer();
|
||||
|
||||
foreach (var character in charactersData.Characters)
|
||||
{
|
||||
var account = accountData.Account.FirstOrDefault(a => a.AccountId == character.AccountId);
|
||||
container.Players.Add(Parser.ParsePlayer(account, character));
|
||||
}
|
||||
|
||||
foreach (var guild in guildsData.Guilds)
|
||||
{
|
||||
container.Guilds.Add(Parser.ParseGuild(guild));
|
||||
}
|
||||
|
||||
container.LinkPlayerGuild();
|
||||
|
||||
return container;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Instantiates the DataContainer and parses the characters table
|
||||
/// </summary>
|
||||
/// <returns>The async task context containing the resulting container.</returns>
|
||||
public static int GetOnlinePlayerCount(string dataFile)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(dataFile) || !File.Exists(dataFile))
|
||||
return 0;
|
||||
|
||||
var connectionString = $"Data Source={dataFile};Version=3;Read Only=True;";
|
||||
var connection = Connection.CreateConnection(connectionString, true);
|
||||
|
||||
var accountDataAccess = new AccountDataAccess(connection);
|
||||
var accountData = accountDataAccess.FetchDataSetOnlineOnly();
|
||||
|
||||
int result = accountData?.Account.Count ?? 0;
|
||||
connection.DeregisterConnection();
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue