/// <summary> /// Saves the default account settings. /// </summary> /// <param name="settings">The settings.</param> public void SaveDefaultAccountSettings(DefaultAccountSettings settings) { Validate.NotNull(settings, nameof(settings)); var value = JsonConvert.SerializeObject(settings); var setting = Setting.Create(DefaultAccountSettingsKey, value); _settingRepository.Save(setting); }
/// <summary> /// Resets a trading account to its starting state. /// </summary> /// <param name="userId">The unique identifier of the user who owns the trading account.</param> /// <param name="accountId">The unique identifier of the account to reset.</param> public void ResetAccount(Guid userId, Guid accountId) { Validate.NotEmpty(userId, nameof(userId)); Validate.NotEmpty(accountId, nameof(accountId)); DefaultAccountSettings settings = _settingService.GetDefaultAccountSettings(); Account account = GetAccount(userId, accountId); account.Reset(settings.InitialBalance, "Account reset"); _accountRepository.Reset(account); }
/// <summary> /// Opens the new trading account. /// </summary> /// <param name="userId">The unique identifier of the user who owns the trading account.</param> /// <param name="name">The account name.</param> /// <returns>The identifier of the newly created account.</returns> public Guid CreateAccount(Guid userId, string name) { Validate.NotEmpty(userId, nameof(userId)); Validate.NotNullOrWhitespace(name, nameof(name)); DefaultAccountSettings settings = _settingService.GetDefaultAccountSettings(); Account account = Account.CreateNew(userId, name, settings.InitialBalance); _accountRepository.Save(account); return(account.Id); }
/// <summary> /// Gets the default account settings. /// </summary> /// <returns></returns> public DefaultAccountSettings GetDefaultAccountSettings() { if (_defaultAccountSettings == null) { var setting = _settingRepository.GetByKey(DefaultAccountSettingsKey); if (setting == null) { // No settings found - Create the application default settings. _defaultAccountSettings = new DefaultAccountSettings { InitialBalance = 1000000 }; SaveDefaultAccountSettings(_defaultAccountSettings); } else { _defaultAccountSettings = JsonConvert.DeserializeObject <DefaultAccountSettings>(setting.Value); } } return(_defaultAccountSettings); }