示例#1
0
        public async Task <Account> CreateAsync(CreateAccount create, Action <CreateAccountOptions>?setOpts = null)
        {
            var balance = AccountBalance.Zero(create.Currency);
            var acc     = new Account(create.Id, balance, true);

            try
            {
                await _repo.CreateAsync(acc);

                return(acc);
            }
            catch (AccountUniqException)
            {
                var options = new CreateAccountOptions();
                setOpts?.Invoke(options);
                if (!options.IngoreOnDuplicate)
                {
                    var info = new Dictionary <string, string>()
                    {
                        ["Id"] = create.Id.ToString()
                    };
                    throw new WPayException(AccountErrors.AlreadyExist, info);
                }
                return(acc);
            }
        }