/// <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);
            }
        }
示例#2
0
        /// <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 }'");
                }
            }
        }