/// <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); } }