//Register or in Other Words Inserts a New WebHook for a User. Also need to serialize into JSON and encrypt data using ASP.NET Core Protect.
        public override async Task <StoreResult> InsertWebHookAsync(string user, WebHook webHook)
        {
            if (user == null)
            {
                throw new ArgumentNullException(nameof(user));
            }
            if (webHook == null)
            {
                throw new ArgumentNullException(nameof(webHook));
            }

            user = NormalizeKey(user);

            try
            {
                Registration registration = ConvertFromWebHook(user, webHook);
                return(await _webHookRepository.AddOne(registration));
            }
            catch (OptimisticConcurrencyException ocex)
            {
                var message = string.Format(CultureInfo.CurrentCulture, Constants.Constants.ConcurrencyError, "Insert", ocex.Message);
                _logger.Error(message, ocex);
                return(StoreResult.Conflict);
            }
            catch (UpdateException uex)
            {
                var error   = uex.GetBaseException().Message;
                var message = string.Format(CultureInfo.CurrentCulture, Constants.Constants.MongoOperationFailed, "Insert", error);
                _logger.Error(message, uex);
                return(StoreResult.Conflict);
            }
            catch (DbException dbex)
            {
                var message = string.Format(CultureInfo.CurrentCulture, Constants.Constants.MongoOperationFailed, "Insert", dbex.Message);
                _logger.Error(message, dbex);
                return(StoreResult.OperationError);
            }
            catch (Exception ex)
            {
                var message = string.Format(CultureInfo.CurrentCulture, Constants.Constants.OperationFailed, "Insert", ex.Message);
                _logger.Error(message, ex);
                return(StoreResult.InternalError);
            }
        }