in code/src/CoreTemplateStudio/CoreTemplateStudio.Core/Templates/TemplatesRepository.cs [441:495]
public IEnumerable<ITemplateInfo> GetExclusions(ITemplateInfo template, UserSelectionContext context)
{
if (string.IsNullOrEmpty(context.ProjectType))
{
throw new ArgumentNullException(nameof(context.ProjectType));
}
var exclusionsList = new List<ITemplateInfo>();
var exclusions = template.GetExclusionsList();
foreach (var exclusion in exclusions)
{
var exclusionTemplate = Find(t => t.GroupIdentity == exclusion
&& (t.GetProjectTypeList().Contains(context.ProjectType) || t.GetProjectTypeList().Contains(All))
&& IsMatchFrontEnd(t, context.FrontEndFramework)
&& IsMatchBackEnd(t, context.BackEndFramework)
&& IsMatchPropertyBag(t, context.PropertyBag)
&& t.GetPlatform() == context.Platform);
if (exclusionTemplate == null)
{
LogOrAlertException(string.Format(StringRes.ErrorExclusionNotFound, exclusionTemplate, context.FrontEndFramework, context.BackEndFramework, context.Platform));
}
else
{
var templateType = exclusionTemplate.GetTemplateType();
if (!templateType.IsItemTemplate())
{
LogOrAlertException(string.Format(StringRes.ErrorExclusionType, exclusionTemplate.Identity));
}
else if (template.GetRightClickEnabled())
{
LogOrAlertException(string.Format(StringRes.ErrorExclusionRightClick, template.Identity));
}
else if (template.GetDependencyList().Contains(exclusion))
{
LogOrAlertException(string.Format(StringRes.ErrorExclusionAndDependency, template.Identity, exclusion));
}
else if (template.GetRequirementsList().Contains(exclusion))
{
LogOrAlertException(string.Format(StringRes.ErrorExclusionAndRequirement, template.Identity, exclusion));
}
else
{
if (!exclusionsList.Contains(exclusionTemplate))
{
exclusionsList.Add(exclusionTemplate);
}
}
}
}
return exclusionsList;
}