/// <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); } }
/// <summary> /// Add new or update already registered account in database. /// </summary> /// <param name="account">Account to add or update.</param> public void AddOrUpdate(ComplexUserAccount account) { lock (Locker) { try { using (var dbContext = new ComplexUserContext()) { var storedAcc = dbContext.Objects.FirstOrDefault(acc => acc.Id == account.Id); if (storedAcc == null) { dbContext.Objects.Add(account); $"Added new account '{ account.Name }'".WriteToConsole(); } else { TransferAllProperties(account, storedAcc); storedAcc.PrepareMappedProps(); $"Updated account '{ account.Name }'".WriteToConsole(); } dbContext.SaveChanges(); "Saved account changes".WriteToConsole(); } } catch (Exception ex) { ex.Message.WriteToConsole(ConsoleColor.Red); logger.Error(ex, $"Failed to add or update account '{ account.Name }'"); } } }