/// <summary>
            /// Invoked before request has been processed by <see cref="IRequestHandler"/>.
            /// </summary>
            /// <param name="request">The incoming request message.</param>
            public void OnExecuting(Request request)
            {
                ThrowIf.Null(request, "request");

                Type            requestType        = request.GetType();
                RetailOperation operation          = RequestTypeToOperationMap[requestType];
                var             checkAccessRequest = new CheckAccessServiceRequest(operation);

                request.RequestContext.Execute <NullResponse>(checkAccessRequest);
            }
            private static void OnSearchJournalTransactionsExecuting(SearchJournalTransactionsServiceRequest request)
            {
                if (!string.IsNullOrWhiteSpace(request.Criteria.CustomerAccountNumber) ||
                    !string.IsNullOrWhiteSpace(request.Criteria.CustomerFirstName) ||
                    !string.IsNullOrWhiteSpace(request.Criteria.CustomerLastName))
                {
                    request.RequestContext.Execute <NullResponse>(new CheckAccessServiceRequest(RetailOperation.CustomerTransactions));
                }

                var checkAccessServiceRequest = new CheckAccessServiceRequest(RetailOperation.ShowJournal);

                request.RequestContext.Execute <NullResponse>(checkAccessServiceRequest);
            }