/
softailor
/
gridient
Обзор
Документация
Войти
/
softailor
/
gridient
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/Gridient.Core/Mapping/FieldValueMapper.cs
143 строки
5 KB
Jenkins
Auto add
18 фев 2026, 10:19
18 фев 2026, 10:19
1e6c4f8
Код
Авторство
О чём код?
using Gridient.Core.Models; namespace Gridient.Core.Mapping; public static class FieldValueMapper { /// <summary> /// Маппинг FieldValue в SimpleFieldValue /// </summary> public static SimpleFieldValue MapToSimpleFieldValue(FieldValue source) { if (source == null) throw new ArgumentNullException(nameof(source)); return new SimpleFieldValue { FieldName = source.FieldName, FieldType = source.FieldType ?? Enums.FieldType.Text, FieldValue = source.Value }; } /// <summary> /// Маппинг массива FieldValue в массив SimpleFieldValue /// </summary> public static SimpleFieldValue[] MapToSimpleFieldValueArray(FieldValue[] sources) { if (sources == null) return Array.Empty<SimpleFieldValue>(); return sources.Select(MapToSimpleFieldValue).ToArray(); } /// <summary> /// Маппинг SimpleFieldValue в FieldValue /// </summary> public static FieldValue MapFromSimpleFieldValue(SimpleFieldValue source) { if (source == null) throw new ArgumentNullException(nameof(source)); return new FieldValue { FieldName = source.FieldName, FieldType = source.FieldType, Value = source.FieldValue }; } /// <summary> /// Маппинг массива SimpleFieldValue в массив FieldValue /// </summary> public static FieldValue[] MapFromSimpleFieldValueArray(SimpleFieldValue[] sources) { if (sources == null) return Array.Empty<FieldValue>(); return sources.Select(MapFromSimpleFieldValue).ToArray(); } /// <summary> /// Маппинг FieldValue в ViewFieldValue (просто каст, так как ViewFieldValue наследуется от FieldValue) /// </summary> public static ViewFieldValue MapToViewFieldValue(FieldValue source) { if (source == null) throw new ArgumentNullException(nameof(source)); // ViewFieldValue наследуется от FieldValue, поэтому создаем новый экземпляр с копированием свойств return new ViewFieldValue { Id = source.Id, ItemId = source.ItemId, ListId = source.ListId, FieldId = source.FieldId, LookupId = source.LookupId, Value = source.Value, FieldName = source.FieldName, FieldTitle = source.FieldTitle, FieldType = source.FieldType, FieldGroupId = source.FieldGroupId, FieldSortOrder = source.FieldSortOrder, FieldOptions = source.FieldOptions, IsDecimal = source.IsDecimal, IsTimeAdded = source.IsTimeAdded, Field = source.Field }; } /// <summary> /// Маппинг массива FieldValue в массив ViewFieldValue /// </summary> public static ViewFieldValue[] MapToViewFieldValueArray(FieldValue[] sources) { if (sources == null) return Array.Empty<ViewFieldValue>(); return sources.Select(MapToViewFieldValue).ToArray(); } /// <summary> /// Дженерик маппинг FieldValue[] в T[] где T : FieldValue /// </summary> public static T[] MapToGenericArray<T>(FieldValue[] sources) where T : FieldValue { if (sources == null) return Array.Empty<T>(); return sources.Select(source => { // Если T это ViewFieldValue, используем специальный метод if (typeof(T) == typeof(ViewFieldValue)) { return (T)(object)MapToViewFieldValue(source); } // Если T это FieldValue, просто возвращаем как есть if (typeof(T) == typeof(FieldValue)) { return (T)(object)source; } // Для других типов создаем новый экземпляр T и копируем свойства var result = Activator.CreateInstance<T>(); result.Id = source.Id; result.ItemId = source.ItemId; result.ListId = source.ListId; result.FieldId = source.FieldId; result.LookupId = source.LookupId; result.Value = source.Value; result.FieldName = source.FieldName; result.FieldTitle = source.FieldTitle; result.FieldType = source.FieldType; result.FieldGroupId = source.FieldGroupId; result.FieldSortOrder = source.FieldSortOrder; result.FieldOptions = source.FieldOptions; result.IsDecimal = source.IsDecimal; result.IsTimeAdded = source.IsTimeAdded; result.Field = source.Field; return result; }).ToArray(); } }