Exemple #1
0
        /// <inheritdoc/>
        public async Task RegisterAsync(RegistrationModel registrationModel, CancellationToken cancellationToken)
        {
            using (var scope = _serviceProvider.CreateScope())
                using (var context = scope.ServiceProvider.GetRequiredService <DatabaseContext>())
                {
                    if (await context.Users
                        .AnyAsync(x => x.Email == registrationModel.Email,
                                  cancellationToken).ConfigureAwait(false))
                    {
                        throw new InvalidDataException("User with the same email or phone number already exist");
                    }

                    var userEntity = UserEntity.CreateEntity(registrationModel,
                                                             _cryptoProvider.EncodeValue(registrationModel.Password));

                    await context.AddAsync(userEntity, cancellationToken).ConfigureAwait(false);

                    await context.SaveChangesAsync(cancellationToken).ConfigureAwait(false);
                }
        }