Exemple #1
0
        public void UpdateAccount(IAccount account)
        {
            if (account.Id == Account.InvalidId)
            {
                throw new AccountsException(AccountsErrors.InvalidId);
            }

            var newOne = new Account(account);
            var oldOne = accounts1.GetValue(account.Id);

            if (oldOne == null)
            {
                throw new AccountsException(AccountsErrors.OldNotFound);
            }
            if (string.IsNullOrEmpty(newOne.DomainName))
            {
                throw new AccountsException(AccountsErrors.DomainRequred);
            }

            if (newOne.DomainName != oldOne.DomainName)
            {
                if (accounts2.TryAdd(newOne.DomainName, newOne) == false)
                {
                    throw new AccountsException(AccountsErrors.DomainUsed);
                }
                accounts2.Remove(oldOne.DomainName);
            }

            files.IgnoryFileChanges(account.Id);
            newOne.Serialize(files.GetFileName(account.Id));
        }
Exemple #2
0
        public int AddAccount(IAccount account)
        {
            int id     = Interlocked.Increment(ref count);
            var newOne = new Account(id, account);

            if (string.IsNullOrEmpty(newOne.DomainName))
            {
                throw new AccountsException(AccountsErrors.DomainRequred);
            }

            if (accounts2.TryAdd(newOne.DomainName, newOne) == false)
            {
                throw new AccountsException(AccountsErrors.DomainUsed);
            }
            if (accounts1.TryAdd(id, newOne) == false)
            {
                throw new AccountsException(AccountsErrors.IdUsed);
            }

            try
            {
                files.IgnoryFileChanges(id);
                newOne.Serialize(files.GetFileName(id));
            }
            catch
            {
                accounts2.Remove(newOne.DomainName);
                accounts1.Remove(id);
                throw;
            }

            return(id);
        }