using LiteDB; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.BL.Enumerations; using Tango.BL.ValueObjects; namespace Tango.BL.Entities { public class ActionLog : ActionLogBase { private ActionLogDifference _differenceObject; private static JsonSerializerSettings _settings; static ActionLog() { _settings = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All, }; } [NotMapped] [JsonIgnore] [BsonIgnore] public ActionLogType ActionType { get { return (ActionLogType)Type; } set { Type = value.ToInt32(); RaisePropertyChanged(nameof(ActionType)); } } [NotMapped] [JsonIgnore] [BsonIgnore] public ActionLogDifference DifferenceObject { get { if (_differenceObject == null ) { if (Difference != null) { try { _differenceObject = JsonConvert.DeserializeObject(Difference, _settings); } catch { _differenceObject = new ActionLogDifference(); } } else { _differenceObject = new ActionLogDifference(); } } return _differenceObject; } set { _differenceObject = value; if (_differenceObject != null) { Difference = JsonConvert.SerializeObject(_differenceObject, _settings); } } } } }