示例#1
0
        /// <summary>
        /// Waits for AdvancePayBehaviors.LoggingEvent to be populated with a LoggingCompleteAdvancePayRolloverRequestedEvent that has a matching guid.  If that event was successful an advance pay rollover
        /// request is written to the Advance Pay table.
        /// </summary>
        public RequestAdvancePayRolloverResponse CreateAdvancePayRolloverRequestAsyc(RequestAdvancePayRolloverRequest request)
        {
            var advancePayRequestedEvent = new AdvancePayRolloverRequestedEvent(request);

            return(CreateAdvancePayRolloverRequestAsyc(request, advancePayRequestedEvent));
        }
示例#2
0
        /// <summary>
        /// Waits for AdvancePayBehaviors.LoggingEvent to be populated with a LoggingCompleteAdvancePayRolloverRequestedEvent that has a matching guid.  If that event was successful an advance pay rollover
        /// request is written to the Advance Pay table.
        /// </summary>
        public RequestAdvancePayRolloverResponse CreateAdvancePayRolloverRequestAsyc(RequestAdvancePayRolloverRequest request, AdvancePayRolloverRequestedEvent rolloverRequestedEvent)
        {
            var requestLogged = false;
            var response      = new RequestAdvancePayRolloverResponse();
            var guid          = Guid.Empty;

            // loop until logging event gets filled with a LoggingCompleteAdvancePayRolloverRequestedEvent.
            while (LoggingEvent == null || guid != LoggingEvent.EventGuid)
            {
                if (requestLogged)
                {
                    continue;
                }

                guid = rolloverRequestedEvent.EventGuid;
                _eventAggregator.Publish(rolloverRequestedEvent);
                requestLogged = true;

                Thread.Sleep(10);
            }

            if (LoggingEvent.IsSuccessful)
            {
                try
                {
                    WriteAdvancePayRolloverRequest(request);
                    response.SubmitRolloverRequestSuccess = true;
                    response.ReasonForFailure             = string.Empty;
                }
                catch (Exception ex)
                {
                    response.SubmitRolloverRequestSuccess = false;
                    response.ReasonForFailure             = ex.Message;
                    response.Exception     = new ExceptionInfo(ex);
                    response.ExceptionType = ExceptionType.Business;
                }
            }
            else
            {
                response.SubmitRolloverRequestSuccess = false;
                response.ReasonForFailure             = UnableToLogMessage;
                response.Exception     = new ExceptionInfo(LoggingEvent.Exception);
                response.ExceptionType = ExceptionType.Business;
            }

            return(response);
        }