コード例 #1
0
        public async Task <IdentityResult> Handle(UpdatePersonalDataCommand request, CancellationToken cancellationToken)
        {
            var result = IdentityResult.Success;

            using (var userManager = _userManagerFactory())
            {
                var user = await userManager.FindByIdAsync(request.UserId);

                if (user == null)
                {
                    return(IdentityResult.Failed());
                }
                if (!IsUserEditable(user.UserName))
                {
                    return(IdentityResult.Failed(new IdentityError {
                        Description = "It is forbidden to edit this user."
                    }));
                }
                if (request.PersonalData?.Email != null && user.Email != request.PersonalData?.Email)
                {
                    user.Email = request.PersonalData.Email;
                    result     = await userManager.UpdateAsync(user);
                }

                var contactAggregate = await _contactAggregateRepository.GetContactByIdAsync(user.MemberId);

                if (contactAggregate != null)
                {
                    contactAggregate.UpdatePersonalDetails(request.PersonalData);

                    await _contactAggregateRepository.SaveAsync(contactAggregate);
                }
            }
            return(result);
        }
        public async Task <ContactAggregate> Handle(UpdateContactCommand request, CancellationToken cancellationToken)
        {
            var contactAggregate = new ContactAggregate(request);
            await _contactAggregateRepository.SaveAsync(contactAggregate);

            return(contactAggregate);
        }
コード例 #3
0
        public async Task <ContactAggregate> Handle(UpdateContactAddressesCommand request, CancellationToken cancellationToken)
        {
            var contactAggregate = await _contactAggregateRepository.GetContactByIdAsync(request.ContactId);

            contactAggregate.UpdateContactAddresses(request.Addresses);
            await _contactAggregateRepository.SaveAsync(contactAggregate);

            return(await _contactAggregateRepository.GetContactByIdAsync(request.ContactId));
        }
コード例 #4
0
        public async Task <ContactAggregate> Handle(CreateContactCommand request, CancellationToken cancellationToken)
        {
            var contactAggregate = new ContactAggregate(request);

            await new NewContactValidator().ValidateAndThrowAsync(contactAggregate.Contact);

            await _contactAggregateRepository.SaveAsync(contactAggregate);

            return(contactAggregate);
        }