public async Task <QuoteValueCriterionSubscriptionResponse> Process()
        {
            decimal currentValue;

            try
            {
                currentValue = await _exchangeRatesProvider.GetAssetValue(_asset);

                var conditionAlreadyApplies = _request.Predicate(currentValue);

                if (conditionAlreadyApplies)
                {
                    return(new QuoteValueCriterionSubscriptionResponse
                    {
                        Success = false,
                        ResultMessage = string.Format(MessageTexts.ConditionAlreadySatisfied, currentValue)
                    });
                }

                var alreadySubscribed = await _subscriptionsManager.AlreadySubscribed(_asset, _request.ChatId, _request.Predicate);

                if (alreadySubscribed)
                {
                    return(new QuoteValueCriterionSubscriptionResponse
                    {
                        Success = true,
                        ResultMessage = MessageTexts.AlreadySubscribed
                    });
                }
            }
            catch (Exception)
            {
                return(new QuoteValueCriterionSubscriptionResponse
                {
                    Success = false,
                    ResultMessage = MessageTexts.ConditionCheckFailed
                });
            }

            try
            {
                await _subscriptionsManager.Subscribe(_asset, _request.ChatId, _request.Predicate);

                return(new QuoteValueCriterionSubscriptionResponse
                {
                    Success = true,
                    ResultMessage = string.Format(MessageTexts.SubscribedSuccessfully, currentValue),
                    CurrentPrice = currentValue
                });
            }
            catch (Exception e)
            {
                return(new QuoteValueCriterionSubscriptionResponse
                {
                    Success = false,
                    ResultMessage = $"{MessageTexts.SubscriptionFailed}. {e.Message}"
                });
            }
        }