public async Task <SaveResult> SaveAsync(UserRegistrationProcess process)
        {
            if (process == null)
            {
                throw new ArgumentNullException(nameof(process));
            }

            var eventsData = process.GetPendingEvents().Select(_eventSerializer.ToEventData);

            try
            {
                await _connection.AppendToStreamAsync(
                    StreamBy(process.UserId),
                    process.Version == 0
                    ?ExpectedVersion.NoStream
                    : process.Version - 1,
                    eventsData);

                return(SaveResult.Success);
            }
            catch (WrongExpectedVersionException)
            {
                return(SaveResult.WrongExpextedVersion);
            }
        }
Esempio n. 2
0
        public Task <Option <UserRegistrationProcess> > GetAsync(Guid userId)
        {
            var streamId = StreamBy(userId);
            var events   = _eventStoreStub.GetByStreamId(streamId);
            var result   = new UserRegistrationProcess(events);

            return(Task.FromResult(result.Some()));
        }
Esempio n. 3
0
        public Task <SaveResult> SaveAsync(UserRegistrationProcess process)
        {
            var streamId = StreamBy(process.UserId);
            var result   = _eventStoreStub.Save(
                streamId,
                process.GetPendingEvents(),
                process.Version);

            return(Task.FromResult(result));
        }
Esempio n. 4
0
        public async Task <Guid> StartRegistrationAsync(UserRegistrationForm registrationForm)
        {
            if (registrationForm == null)
            {
                throw new ArgumentNullException(nameof(registrationForm));
            }

            var userRegistrationProcess = new UserRegistrationProcess(registrationForm);
            await _userRegistrationProcessRepository.SaveAsync(userRegistrationProcess);

            return(userRegistrationProcess.UserId);
        }