private static CommunicationSendRequest GetSendRequest(CustomerCommunicationUseCase useCase, string message)
        {
            var sendRequest = new CommunicationSendRequest()
            {
                UseCase    = useCase,
                PersonId   = JObject.Parse(message).SelectToken(useCase.PersonIdPath).ToObject <int>(),
                Parameters = new List <KeyValuePair <string, string> >()
            };

            var templateParams = useCase.TemplateMessageParameters;

            var jmessage = JObject.Parse(message);

            if (templateParams != null)
            {
                foreach (var templateParamsKey in templateParams)
                {
                    var value = jmessage.SelectToken(templateParamsKey.Value).ToString();
                    if (templateParamsKey.Key.ToLower().Contains("amount"))
                    {
                        value = value.FormatCurrency();
                    }
                    sendRequest.Parameters.Add(new KeyValuePair <string, string>(templateParamsKey.Key, value));
                }
            }

            return(sendRequest);
        }
        private static bool ApplyFilter(CustomerCommunicationUseCase useCase, string message)
        {
            var filter = useCase.Filter;

            var jmessage = JObject.Parse(message);

            var predicate = jmessage.SelectToken(filter.Predicate).ToString();

            return(predicate.ToLower() == filter.Value.ToLower());
        }