Ejemplo n.º 1
0
        public void SetPaidStatus(BillDemandPaidApiCommandArgument arg)
        {
            AuthenticationService.Authenticate(arg.SecurityToken);

            if (!AuthenticationService.IsAuthenticated())
            {
                return;
            }

            if (!AuthorizationService.IsAllowedToExecuteCommand(arg.InstanceId, WorkflowCommandType.SetPaidStatus))
            {
                return;
            }

            FireCommandWithWaiting(arg, delegate(BillDemandPaidApiCommandArgument arg1)
            {
                using (var sync = GetWorkflowSync(arg1))
                {
                    WorkflowInitService.RaiseSetPaidStatus(arg1.InstanceId,
                                                           arg1.PaymentDate,
                                                           arg1.DocumentNumber);
                    sync.WaitHandle.WaitOne(4000);
                }
            });
        }
Ejemplo n.º 2
0
        private void FireCommandWithWaiting(BillDemandPaidApiCommandArgument arg, Action <BillDemandPaidApiCommandArgument> action)
        {
            try
            {
                action.Invoke(arg);
            }
            catch (EventDeliveryFailedException)
            {
                using (var sync = GetWorkflowSync(arg))
                {
                    sync.WaitHandle.WaitOne(2000);
                }

                try
                {
                    action.Invoke(arg);
                }
                catch (Exception)
                {
                    throw new FaultException <BaseFault>(new BaseFault((int)ErrorCodes.CommandProccessingError), new FaultReason("Не удалось выполнить команду. Попробуйте провести данную операцию еще раз. Если сообщение будет повторятся, обратитесь к Администратору."));
                }
            }
        }