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); }
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); }