public IEnumerable GetLayoutTemplates()

in code/src/CoreTemplateStudio/CoreTemplateStudio.Core/Templates/TemplatesRepository.cs [246:292]


        public IEnumerable<LayoutInfo> GetLayoutTemplates(UserSelectionContext context)
        {
            if (string.IsNullOrEmpty(context.ProjectType))
            {
                throw new ArgumentNullException(nameof(context.ProjectType));
            }

            var projectTemplates = GetTemplates(TemplateType.Project, context);

            foreach (var projectTemplate in projectTemplates)
            {
                var layout = projectTemplate?
                .GetLayout()
                .Where(l => l.ProjectType == null || l.ProjectType.GetMultiValue().Contains(context.ProjectType));

                if (layout != null)
                {
                    foreach (var item in layout)
                    {
                        var template = Find(t => t.GroupIdentity == item.TemplateGroupIdentity
                                                                && (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 (template == null)
                        {
                            LogOrAlertException(string.Format(StringRes.ErrorLayoutNotFound, item.TemplateGroupIdentity, context.FrontEndFramework, context.BackEndFramework, context.Platform));
                        }
                        else
                        {
                            var templateType = template.GetTemplateType();
                            if (!templateType.IsItemTemplate())
                            {
                                LogOrAlertException(string.Format(StringRes.ErrorLayoutType, template.Identity));
                            }
                            else
                            {
                                var templateInfo = GetTemplateInfo(template, context);
                                yield return new LayoutInfo() { Layout = item, Template = templateInfo };
                            }
                        }
                    }
                }
            }
        }