예제 #1
0
        private Guid?GetLastTransactionId()
        {
            using (IUnitOfWork uow = Manager.CreateUnitOfWork())
            {
                uow.MapperFactory = this.mapperFactory;

                CommunicationPackageRepository repo = new CommunicationPackageRepository(uow);
                return(repo.GetLastReceivedTransacionId(repo.GetDatabaseId()));
            }
        }
예제 #2
0
        /// <summary>
        /// Executes the communication package.
        /// </summary>
        /// <param name="communicationPackage">The communication package to execute.</param>
        /// <returns>
        ///     <c>true</c> if execution succeeded; otherwise, <c>false</c>
        /// </returns>
        public override bool ExecutePackage(ICommunicationPackage communicationPackage)
        {
            SessionManager.VolatileElements.DeferredTransactionId = communicationPackage.XmlData.DeferredTransactionId;
            SessionManager.VolatileElements.LocalTransactionId    = this.LocalTransactionId;

            try
            {
                XDocument commPkg = XDocument.Parse(communicationPackage.XmlData.Content);
                var       commercialDocumentIdElement = commPkg.Root.Element("id");
                if (commercialDocumentIdElement == null || commercialDocumentIdElement.Value.Length == 0)
                {
                    throw new InvalidDataException("Invalid xml data.");
                }
                Guid commercialDocumentId = new Guid(commercialDocumentIdElement.Value);
                var  pkgRepo = new CommunicationPackageRepository(this.UnitOfWork);
                this.repository.UnrelateCommercialDocument(commercialDocumentId, this.LocalTransactionId, communicationPackage.XmlData.DeferredTransactionId, pkgRepo.GetDatabaseId());
                return(true);
            }
            catch (SqlException e)
            {
                this.Log.Error("UnrelateCommercialDocument:ExecutePackage " + e.ToString());
                return(false);
            }
        }