示例#1
0
        public async Task UpdateUserAsync(UserDataStructure userDataStructure)
        {
            if (userDataStructure?.Id == null)
            {
                throw new BusinessLogicException("Missing id");
            }

            var user = await GetOneOrThrowAsync(userDataStructure.Id.Value);

            user.UpdateUser(userDataStructure.Email,
                            userDataStructure.FirstName,
                            userDataStructure.SecondName,
                            userDataStructure.BirthDate, new Address(userDataStructure.PostalCode, userDataStructure.Street, userDataStructure.City));

            await _usersRepository.UpdateAsync(user);

            var userCratedEvent = new UserChangedEvent(user.Id, user.UserName, user.Email,
                                                       user.Roles.Select(x => x.ToString()), user.FirstName, user.SecondName, user.BirthDate, user.ModifyDate,
                                                       new AddressEventData()
            {
                City       = user.Address.City,
                PostalCode = user.Address.City,
                Street     = user.Address.Street
            });

            await _busPublisher.PublishAsync(userCratedEvent);
        }
示例#2
0
        public async Task AddUserAsync(UserDataStructure userDataStructure)
        {
            var user = (await _usersRepository.GetWithExpressionAsync(x => x.UserName == userDataStructure.UserName)).SingleOrDefault();

            if (user != null)
            {
                throw new BusinessLogicException("User already exists");
            }

            user = _userFactory.CreateUser(userDataStructure);
            ValidatePasswords(userDataStructure.Password, userDataStructure.ConfirmPassword);
            user.SetPassword(userDataStructure.Password);

            await _usersRepository.CreateAsync(user);

            var userCratedEvent = new UserChangedEvent(user.Id, user.UserName, user.Email,
                                                       user.Roles.Select(x => x.ToString()), user.FirstName, user.SecondName, user.BirthDate, user.ModifyDate,
                                                       new AddressEventData()
            {
                City       = user.Address.City,
                PostalCode = user.Address.City,
                Street     = user.Address.Street
            });

            await _busPublisher.PublishAsync(userCratedEvent);
        }
示例#3
0
        public void EditCardUser(User user)
        {
            User prevUser = User;

            User = user;

            UserChangedEvent?.Invoke(this);
        }
示例#4
0
        public void Handle(UserChangedEvent message)
        {
            var viewmodel = (from vm in ElementList where vm.Id == message.User.Id select vm).FirstOrDefault();

            if (viewmodel == null)
            {
                viewmodel = new UserRowViewModel(message.User);
                ElementList.Add(viewmodel);
                ConnectElement(viewmodel);
            }
            else
            {
                viewmodel.ExchangeData(message.User);
                viewmodel.Refresh();
            }
            NotifyOfPropertyChange(() => ItemSelected);
            NotifyOfPropertyChange(() => ItemsSelected);
        }
示例#5
0
        private void GetUserInfo()
        {
            var request = new RestRequest("/2.2/me");

            request.AddParameter("order", "desc");
            request.AddParameter("sort", "reputation");
            request.AddParameter("site", "stackoverflow");
            request.AddParameter("filter", "!40DJoyoFxZjgBkP1(");
            request.AddParameter("access_token", AccessToken);
            request.AddParameter("key", _requestKey);

            var asyncHandle = client.ExecuteAsync <Users>(request, response =>
            {
                Trace.WriteLine(response.Data.Items[0]);

                CurrentUser = response.Data.Items[0];
                // check to make sure someone has subscribed to this.
                UserChangedEvent?.Invoke(this, EventArgs.Empty);

                Spillway.Properties.Settings.Default.Access_Token = this.AccessToken;
                Spillway.Properties.Settings.Default.Save();
                //start fetching the notifications in a background thread!
            });
        }
示例#6
0
        private void HandleApiMessage(UserChangedEvent message)
        {
            Debug.WriteLine("USER UPDATED: " + message.User.Name);

            _users[message.User.ID] = message.User;
        }