/// <summary> /// Initialize the service. /// </summary> public void Initialize() { try { using (var context = new ComplexUserContext()) { foreach (ComplexUserAccount userAccount in context.Objects.ToList()) { var state = new AccountStateModel { AccountModel = userAccount, Address = string.Empty, OnlineStatus = AccountOnlineStatus.Offline }; accountStates.Add(new ComplexAccountState(state)); } StartUpdateCycle(); string message = $"Initialized {nameof(AccountStateService)}"; //message.WriteToConsole(); logger.Info(message); } } catch (Exception ex) { string message = $"Failed to initialize {nameof(AccountStateService)}"; message.WriteToConsole(); logger.Error(ex, message); } }
public ComplexAccountState(AccountStateModel stateModel) { //StateModel = stateModel ?? throw new ArgumentNullException(nameof(stateModel)); Address = stateModel?.Address ?? throw new ArgumentNullException(nameof(stateModel)); OnlineStatus = stateModel.OnlineStatus; ComplexAccount = stateModel.AccountModel is ComplexUserAccount complexAcc ? complexAcc : stateModel.AccountModel.ToComplex(); }
/// <summary> /// Преобразовать сложную серверную модель в простую для отправки юзеру. /// </summary> /// <param name="complexModel"></param> /// <returns></returns> public static AccountStateModel ToSimple(this ComplexAccountState complexModel) { var simpleModel = new AccountStateModel { Address = complexModel.Address, OnlineStatus = complexModel.OnlineStatus, AccountModel = complexModel.ComplexAccount.ToSimpleModel() }; return(simpleModel); }
private void CacheNewState(UserAccountModel accountModel, string address) { accountModel.LastLogInTime = DateTime.Now; var newState = new AccountStateModel { Address = address, AccountModel = accountModel, OnlineStatus = AccountOnlineStatus.Offline }; var complexState = new ComplexAccountState(newState); complexState.ClientAuth.ClientToken = CreateNewToken(); complexState.ClientAuth.ServerToken = CreateNewToken(); accountStates.Add(complexState); }