public async Task <User> Add(User model)
        {
            var entity = model.ToEntity();

            _authorizationDbContext.Users.Add(entity);
            await _authorizationDbContext.SaveChangesAsync();

            return(entity.ToModel());
        }
        public async Task <User> Add(User user)
        {
            var userEntity = user.ToEntity();

            AuthorizationDbContext.Users.Add(userEntity);
            await AuthorizationDbContext.SaveChangesAsync();

            await EventService.RaiseEventAsync(new EntityAuditEvent <User>(EventTypes.EntityCreatedEvent, user.Id, userEntity.ToModel()));

            return(userEntity.ToModel());
        }
        public async Task Update(User model)
        {
            var user = await _authorizationDbContext.Users
                       .SingleOrDefaultAsync(u =>
                                             u.IdentityProvider.Equals(model.IdentityProvider, StringComparison.OrdinalIgnoreCase) &&
                                             u.SubjectId.Equals(model.SubjectId, StringComparison.OrdinalIgnoreCase) &&
                                             !u.IsDeleted);

            if (user == null)
            {
                throw new NotFoundException <User>($"Could not find {typeof(User).Name} User IDP = {model.IdentityProvider}, SubjectId = {model.SubjectId}");
            }

            model.ToEntity(user);
            _authorizationDbContext.Users.Update(user);
            await _authorizationDbContext.SaveChangesAsync();
        }
        public async Task Update(User user)
        {
            var userEntity = await AuthorizationDbContext.Users
                             .SingleOrDefaultAsync(u =>
                                                   u.IdentityProvider == user.IdentityProvider &&
                                                   u.SubjectId == user.SubjectId &&
                                                   !u.IsDeleted);

            if (userEntity == null)
            {
                throw new NotFoundException <User>(
                          $"Could not find {typeof(User).Name} User IDP = {user.IdentityProvider}, SubjectId = {user.SubjectId}");
            }

            user.ToEntity(userEntity);
            AuthorizationDbContext.Users.Update(userEntity);
            await AuthorizationDbContext.SaveChangesAsync();

            await EventService.RaiseEventAsync(new EntityAuditEvent <User>(EventTypes.EntityUpdatedEvent, user.Id, userEntity.ToModel()));
        }