Example #1
0
        private IBlazorSitecoreField CreateComplexSitecoreField <T>(KeyValuePair <string, BlazorField> field) where T : class
        {
            if (field.Value == null)
            {
                return(null);
            }

            BlazorSitecoreField <T> sitecoreField = null;

            T fieldValue = default;

            try
            {
                switch (field.Value.Type)
                {
                case FieldTypes.MultiListField:

                    BlazorFieldValueMultiList fieldValueMultiList = new BlazorFieldValueMultiList()
                    {
                        Values = new List <BlazorFieldValueMultiListItem>()
                    };


                    foreach (var item in field.Value.Values)
                    {
                        if (item == null || string.IsNullOrWhiteSpace(item.ToString()))
                        {
                            continue;
                        }

                        BlazorFieldValueMultiListItem multiListItem = Json.Deserialize <BlazorFieldValueMultiListItem>(item.ToString());

                        var model = CreateComponentModel(multiListItem.Fields);

                        if (!model.hasModel)
                        {
                            continue;
                        }

                        multiListItem.SitecoreFields = model.model;

                        fieldValueMultiList.Values.Add(multiListItem);
                    }


                    fieldValue = fieldValueMultiList as T;


                    break;

                default:
                    break;
                }


                sitecoreField = new BlazorSitecoreField <T>
                {
                    FieldName = field.Key,
                    Value     = fieldValue,
                    Editable  = field.Value?.Editable,
                    Type      = field.Value?.Type
                };
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error cretaing complex field {fieldValue.GetType()}. Error { ex.Message}");
            }

            return(sitecoreField);
        }
Example #2
0
        private IBlazorItemField CreateComplexBlazorItemField <T>(KeyValuePair <string, BlazorRouteField> blazorRouteField) where T : class
        {
            if (blazorRouteField.Value == null)
            {
                return(null);
            }

            BlazorItemField <T> blazorItemField = null;

            T fieldValue = default;

            try
            {
                switch (blazorRouteField.Value.Type)
                {
                case FieldTypes.MultiListField:

                    BlazorFieldValueMultiList fieldValueMultiList = new BlazorFieldValueMultiList()
                    {
                        Values = new List <BlazorFieldValueMultiListItem>()
                    };


                    foreach (var item in blazorRouteField.Value.Values)
                    {
                        if (item == null || string.IsNullOrWhiteSpace(item.ToString()))
                        {
                            continue;
                        }

                        BlazorFieldValueMultiListItem multiListItem = new BlazorFieldValueMultiListItem()
                        {
                            Id  = item.Id,
                            Url = item.Url
                        };


                        var fields = CreateBlazorItemFields(item.Fields);

                        multiListItem.BlazorItemFields = fields;

                        fieldValueMultiList.Values.Add(multiListItem);
                    }


                    fieldValue = fieldValueMultiList as T;
                    break;

                default:
                    break;
                }


                blazorItemField = new BlazorItemField <T>
                {
                    FieldName = blazorRouteField.Key,
                    Value     = fieldValue,
                    Editable  = blazorRouteField.Value?.Editable,
                    Type      = blazorRouteField.Value?.Type
                };
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error creating complex field {fieldValue?.GetType()}. Error { ex.Message}");
            }

            return(blazorItemField);
        }