コード例 #1
0
        public async Task <UserItemDto> UpdateUserAsync(ItemId itemId, UserItemDto dto)
        {
            var users = await _stateManager.GetOrAddAsync <IReliableDictionary <ItemId, UserItem> >(DictionaryName);

            using (var tx = _stateManager.CreateTransaction())
            {
                var current = await users.TryGetValueAsync(tx, itemId);

                if (current.HasValue)
                {
                    UserItem item = null;
                    if (dto.Username != null)
                    {
                        item = current.Value.UpdateUsername(dto.Username);
                    }
                    if (dto.Password != null)
                    {
                        item = item == null?current.Value.UpdatePassword(dto.Password) : item.UpdatePassword(dto.Password);
                    }
                    if (dto.Name != null)
                    {
                        item = item == null?current.Value.UpdateName(dto.Name) : item.UpdateName(dto.Name);
                    }
                    if (dto.Mobile != null)
                    {
                        item = item == null?current.Value.UpdateMobile(dto.Mobile) : item.UpdateMobile(dto.Mobile);
                    }
                    if (dto.MobileConfirmed.HasValue)
                    {
                        item = item == null?current.Value.UpdateMobileConfirmed(dto.MobileConfirmed.Value) : item.UpdateMobileConfirmed(dto.MobileConfirmed.Value);
                    }
                    if (dto.Email != null)
                    {
                        item = item == null?current.Value.UpdateEmail(dto.Email) : item.UpdateEmail(dto.Email);
                    }
                    if (dto.HasAdUser.HasValue)
                    {
                        item = item == null?current.Value.UpdateHasAdUser(dto.HasAdUser.Value) : item.UpdateHasAdUser(dto.HasAdUser.Value);
                    }
                    if (dto.DepartmentId != null)
                    {
                        item = item == null?current.Value.UpdateDepartmentId(dto.DepartmentId) : item.UpdateDepartmentId(dto.DepartmentId);
                    }
                    if (dto.EmailConfirmed.HasValue)
                    {
                        item = item == null?current.Value.UpdateEmailConfirmed(dto.EmailConfirmed.Value) : item.UpdateEmailConfirmed(dto.EmailConfirmed.Value);
                    }
                    if (dto.Avatar != null)
                    {
                        item = item == null?current.Value.UpdateAvatar(dto.Avatar) : item.UpdateAvatar(dto.Avatar);
                    }
                    if (dto.IdCardNo != null)
                    {
                        item = item == null?current.Value.UpdateIdCardNo(dto.IdCardNo) : item.UpdateIdCardNo(dto.IdCardNo);
                    }
                    if (dto.EmployeeNumber != null)
                    {
                        item = item == null?current.Value.UpdateEmployeeNumber(dto.EmployeeNumber) : item.UpdateEmployeeNumber(dto.EmployeeNumber);
                    }
                    if (dto.IsActive.HasValue)
                    {
                        item = item == null?current.Value.UpdateIsActive(dto.IsActive.Value) : item.UpdateIsActive(dto.IsActive.Value);
                    }
                    if (dto.IsLockoutEnabled.HasValue)
                    {
                        item = item == null?current.Value.UpdateIsLockoutEnabled(dto.IsLockoutEnabled.Value) : item.UpdateIsLockoutEnabled(dto.IsLockoutEnabled.Value);
                    }
                    if (item != null)
                    {
                        await users.SetAsync(tx, itemId, item);

                        await tx.CommitAsync();
                        await LogAndPublishUpdateEvent(item);

                        return(_mapper.Map <UserItemDto>(item));
                    }
                }
            }
            return(null);
        }