예제 #1
0
        /// <summary>
        /// Method builds a set of EDTTransactionMessage objects based on Guidance Message Counts and
        /// whether the XML passed schema validate, and binds these new objects to the EDTTransaction.
        /// </summary>
        /// <param name="cmePackage"></param>
        private void PopulateEDTTranactionMessages(CMEPackage cmePackage)
        {
            if (cmePackage == null)
            {
                throw new ArgumentNullException("cmePackage");
            }

            // Retrieve Guidance Message Counts for EDT Transaction Messages
            var requiredGuidanceMessageCount = cmePackage.GuidanceMessages.Count(gm => gm.LevelID == (int)GuidanceLevel.Required && !gm.Voided);
            var warningGuidanceMessageCount  = cmePackage.GuidanceMessages.Count(gm => gm.LevelID == (int)GuidanceLevel.Warning && !gm.Voided);
            var advisoryGuidanceMessageCount = cmePackage.GuidanceMessages.Count(gm => gm.LevelID == (int)GuidanceLevel.Advisory && !gm.Voided);

            // Add RequiredSummary EDT Transaction Message
            if (requiredGuidanceMessageCount > 0)
            {
                var messageText = "Found " + requiredGuidanceMessageCount + " Required Guidance Messages.";
                if (!cmePackage.IsValidXMLAgainstSchema)
                {
                    messageText = "XML did not pass schema validation. " + messageText;
                }

                var requiredEDTTransactionMessage = new EDTTransactionMessage
                {
                    EDTTransaction = cmePackage.EDTTransaction,
                    TypeID         = (int)EDTTransactionMessageType.Required,
                    Message        = messageText
                };
                requiredEDTTransactionMessage.SetCommonFields(currentUserID: Repository.ContextAccountID, creating: true);
                cmePackage.EDTTransactionMessages.Add(requiredEDTTransactionMessage);
            }

            // Add WarningSummary EDT Transaction Message
            if (cmePackage.GuidanceMessages.Count(gm => gm.LevelID == (int)GuidanceLevel.Warning && !gm.Voided) > 0)
            {
                var warningEDTTransactionMessage = new EDTTransactionMessage
                {
                    EDTTransaction = cmePackage.EDTTransaction,
                    TypeID         = (int)EDTTransactionMessageType.Warning,
                    Message        = "Found " + requiredGuidanceMessageCount + " Warning Guidance Messages."
                };
                warningEDTTransactionMessage.SetCommonFields(currentUserID: Repository.ContextAccountID, creating: true);
                cmePackage.EDTTransactionMessages.Add(warningEDTTransactionMessage);
            }

            // Add AdvisorySummary EDT Transaction Message
            if (cmePackage.GuidanceMessages.Count(gm => gm.LevelID == (int)GuidanceLevel.Advisory && !gm.Voided) > 0)
            {
                var advisoryEDTTransactionMessage = new EDTTransactionMessage
                {
                    EDTTransaction = cmePackage.EDTTransaction,
                    TypeID         = (int)EDTTransactionMessageType.Advisory,
                    Message        = "Found " + requiredGuidanceMessageCount + " Advisory Guidance Messages."
                };
                advisoryEDTTransactionMessage.SetCommonFields(currentUserID: Repository.ContextAccountID, creating: true);
                cmePackage.EDTTransactionMessages.Add(advisoryEDTTransactionMessage);
            }
        }
예제 #2
0
        public void WriteMessage(string message, EDTTransactionMessageType type)
        {
            EDTTransactionMessage entry = new EDTTransactionMessage();

            entry.TypeID         = (int)type;
            entry.EDTTransaction = Transaction;
            entry.Message        = message;
            Repository.EDTTransactionMessages.Save(entry);

            WriteActivity(message, type: type);
        }