public void Update(IMenuItemUpdatable fields, out List <UpdatedField> updated) { fields.ThrowIfNull(nameof(fields)); updated = new List <UpdatedField>(); if (Name != fields.Name) { updated.Add(new UpdatedField { FieldName = nameof(Name), OldValue = Name, NewValue = fields.Name }); Name = fields.Name; } if (GroupName != fields.GroupName) { updated.Add(new UpdatedField { FieldName = nameof(GroupName), OldValue = GroupName, NewValue = fields.GroupName }); GroupName = fields.GroupName; } if (IconName != fields.IconName) { updated.Add(new UpdatedField { FieldName = nameof(IconName), OldValue = IconName, NewValue = fields.IconName }); IconName = fields.IconName; } if (SortOrder != fields.SortOrder) { updated.Add(new UpdatedField { FieldName = nameof(SortOrder), OldValue = SortOrder, NewValue = fields.SortOrder }); SortOrder = fields.SortOrder; } if (IsVisible != fields.IsVisible) { updated.Add(new UpdatedField { FieldName = nameof(IsVisible), OldValue = IsVisible, NewValue = fields.IsVisible }); IsVisible = fields.IsVisible; } if (fields.FormTables != null && fields.FormTables.Any()) { if (fields.FormTables.Length != FormTables.Count) { updated.Add(new UpdatedField { FieldName = nameof(FormTables), OldValue = $"[ {string.Join(", ", FormTables.Select(o => $"'{o.FormId}'"))} ]", NewValue = $"[ {string.Join(", ", fields.FormTables.Select(formId => $"'{formId}'"))} ]" }); // repository에서 처리 } } if (updated.Any()) { UpdatedDate = DateTimeOffset.Now; Validate(); } }