Ejemplo n.º 1
0
        /// <summary>
        /// Creates an artifact for a given rule, ensuring the available attributes are populated on the artifact
        /// </summary>
        /// <param name="rule"></param>
        public void CreateArtifact(mcs_artifactrule rule)
        {
            var newArtifact = new mcs_artifact()
            {
                mcs_name                 = rule.mcs_name,
                mcs_ArtifactRuleId       = rule.ToEntityReference(),
                [ArtifactLookupName]     = _entityTarget.ToEntityReference(),
                mcs_ArtifactType         = rule.mcs_ArtifactType,
                mcs_CommentsInstructions = rule.mcs_CommentsInstructions,
                mcs_ReviewStatus         = new OptionSetValue(100000002) // Pending Review
            };

            // add portal Account, Contact, Incident lookups to Artifact
            if (AccountId != Guid.Empty)
            {
                newArtifact.mcs_AccountId = new EntityReference("account", AccountId);
            }
            if (ContactId != Guid.Empty)
            {
                newArtifact.mcs_Contactid = new EntityReference("contact", ContactId);
            }
            if (IncidentId != Guid.Empty)
            {
                newArtifact.mcs_CaseId = new EntityReference("incident", IncidentId);
            }

            // Set Association field based on Rule Specifier Lookup and or Specifier
            newArtifact.mcs_Association = GetArtifactAssociationByRule(rule);

            newArtifact.EntityState = EntityState.Created;
            _orgService.Create(newArtifact);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Conditionally checks specifier and specifier lookup fields to determine the association value for a given artifact rule and entity target
        /// </summary>
        /// <param name="rule"></param>
        /// <returns></returns>
        public string GetArtifactAssociationByRule(mcs_artifactrule rule)
        {
            string association = null;

            if (rule.mcs_SpecifierLookup == null && rule.mcs_Specifier != null)
            {
                association = (rule.mcs_Specifier.StartsWith("\"") && rule.mcs_Specifier.EndsWith("\"")) ?
                              rule.mcs_Specifier.Replace("\"", "") : (string)_entityTarget[rule.mcs_Specifier];
            }
            else if (rule.mcs_SpecifierLookup != null && _entityTarget.Contains(rule.mcs_SpecifierLookup))
            {
                // if lookup specified, retrieve string field for Association
                var lookup          = (EntityReference)_entityTarget[rule.mcs_SpecifierLookup];
                var specifierEntity = _orgService.Retrieve(lookup.LogicalName, lookup.Id, new ColumnSet(new string[] { rule.mcs_Specifier }));
                association = (string)specifierEntity[rule.mcs_Specifier];
            }

            return(association);
        }