private async Task <CreateSubscriptionResponseDto> CreateSubscriptionAsync(CreateSubscriptionRequestDto request, string userId, string subscriptionId = null)
        {
            subscriptionId ??= Guid.NewGuid().ToString();

            var subscription = new Subscription
            {
                Id             = Guid.NewGuid().ToString(),
                CreatedOn      = DateTime.Now,
                SubscriptionId = subscriptionId,
                UserId         = userId,
                Email          = request.Email,
                Details        = request.Details.Select(x => new SubscriptionDetail {
                    Catalogue = x.Catalogue, Key = x.Key, Operator = x.Operator, Value = x.Value
                })
            };

            var id = await _subscriptionRepository.CreateAsync(subscription);

            _cacheProvider.AddOrUpdateItem(subscriptionId, subscription);

            return(new CreateSubscriptionResponseDto {
                SubscriptionId = subscriptionId
            });
        }