Exemple #1
0
        public bool ExecuteTransaction(PatientDTO patient, string destination, string message)
        {
            bool failedDBCommand        = false;
            bool failedMessengerCommand = false;

            try
            {
                //_dBConnectionInfo = _repository.PrepareAdd(patient);
                try
                {
                    _messengerConnectionInfo = _client.SendTransactionalMessage(destination, message);
                }
                catch
                {
                    failedMessengerCommand = true;
                }
            }
            catch
            {
                try
                {
                    _messengerConnectionInfo = _client.SendTransactionalMessage(destination, message);
                }
                catch
                {
                    failedMessengerCommand = true;
                }
                failedDBCommand = true;
            }
            if (failedDBCommand == true || failedMessengerCommand == true)
            {
                _client.RollbackTransactionalMessage(_messengerConnectionInfo.Connection, _messengerConnectionInfo.Session);
                _repository.RollbackAdd(_dBConnectionInfo.Connection, _dBConnectionInfo.Transaction);
                return(false);
            }
            else
            {
                _client.CommitTransactionalMessage(_messengerConnectionInfo.Connection, _messengerConnectionInfo.Session);
                _repository.CommitAdd(_dBConnectionInfo.Connection, _dBConnectionInfo.Transaction);
                return(true);
            }
        }