/// <summary>МЕТОД Изменяем логи xLog</summary> /// <param name="pUser">Кто создал/изменил протокол</param> /// <param name="pTipLog">Тип лога Создан, Изменён, Удалён</param> public void MET_ChangeLogs(int pUser, string pTipLog) { string _jLog = PROP_xLog; // Если нет логов и это НЕ создание протокола if (string.IsNullOrEmpty(PROP_xLog) && pTipLog != "Создан") { // СОЗДАЕМ первый лог (если изменили протокол вытаскиваем информацию из xDateUp, pDate) PROP_xLog = UserLog.MET_LogAdd("", PROP_pDate < PROP_xDateUp ? PROP_pDate : PROP_xDateUp, "Создан", PROP_xUserUp, "-"); // Если возможно ИЗМЕНЯЛСЯ протокол, добавляем изменение if (PROP_xDateUp > PROP_pDate) { PROP_xLog = UserLog.MET_LogAdd("", PROP_xDateUp, "Изменён", PROP_xUserUp, "-"); } } else { PROP_xLog = UserLog.MET_LogAdd(PROP_xLog, DateTime.Now, pTipLog); } }
/// <summary>МЕТОД Изменяем логи xLog (Изменён, Удалён)</summary> /// <param name="pLog">Строка текущего лога</param> /// <param name="pDate">Дата лога</param> /// <param name="pTip">Тип лога Создан, Изменён, Удалён</param> /// <param name="pUser">Кто изменил/удалил документ</param> /// <param name="pVer">Версия программы (по умолчанию текущее версия)</param> /// <remarks>Работа с json https://www.newtonsoft.com/json/help/html/QueryingLINQtoJSON.htm </remarks> public static string MET_LogAdd(string pLog, DateTime pDate, string pTip = "Изменён", int pUser = 0, string pVer = "") { if (pUser == 0) { pUser = MyGlo.User; } if (pVer == "") { pVer = MyMet.MET_Ver(); } // Если Создан лог if (string.IsNullOrEmpty(pLog)) { return(MET_CreateLogs(pUser, DateTime.Now.ToString("dd.MM.yyyy H:mm"), pVer)); } var _ListLogs = new List <UserLog>(); UserLog _Log; JObject _Json = JObject.Parse(pLog); foreach (var i in _Json["Log"].Children()) { _Log = new UserLog { Cod = (int)i["Cod"], Date = (string)i["Date"], Tip = (string)i["Tip"], User = (int)i["User"], Ver = (string)i["Ver"] }; _ListLogs.Add(_Log); } // Берем последний лог и смотрим тип, кто и когда его менял _Log = _ListLogs.LastOrDefault(); if (_Log != null && _Log.Tip == pTip && _Log.User == pUser && _Log.Ver == MyMet.MET_Ver() && (pDate - DateTime.ParseExact(_Log.Date, "dd.MM.yyyy H:mm", CultureInfo.InvariantCulture)).Hours < 6) { // Если прошло менее 6 часов просто меняем время редактирования у последнего лога _Log.Date = DateTime.Now.ToString("dd.MM.yyyy H:mm"); } else { // Иначе добавляем новый логи _Log = new UserLog { Cod = _ListLogs.Count + 1, Date = pDate.ToString("dd.MM.yyyy H:mm"), Tip = pTip, User = pUser, Ver = MyMet.MET_Ver() }; _ListLogs.Add(_Log); } string _xLog = JsonConvert.SerializeObject(_ListLogs, Formatting.None, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore }); _xLog = "{ \"Log\":" + _xLog + "}"; return(_xLog); }
/// <summary>МЕТОД Изменяем логи xLog</summary> /// <param name="pUser">Кто создал/изменил протокол</param> /// <param name="pTipLog">Тип лога Создан, Изменён, Удалён</param> public void MET_ChangeLogs1(int pUser, string pTipLog) { string _jLog = PROP_xLog; var _ListLogs = new List <UserLog>(); UserLog _Log; // Если нет логов и это НЕ создание протокола if (string.IsNullOrEmpty(_jLog) && pTipLog != "Создан") { // Если изменили протокол (вытаскиваем информацию из xDateUp, pDate) _Log = new UserLog { Cod = 1, Date = PROP_pDate < PROP_xDateUp?PROP_pDate.ToString("dd.MM.yyyy H:mm") : PROP_xDateUp.ToString("dd.MM.yyyy H:mm"), Tip = "Создан", User = PROP_xUserUp, Ver = "" }; _ListLogs.Add(_Log); // Если ВОЗМОЖНО менялся протокол if (PROP_xDateUp > PROP_pDate) { _Log = new UserLog { Cod = 2, Date = PROP_xDateUp.ToString("dd.MM.yyyy H:mm"), Tip = "Изменён", User = PROP_xUserUp, Ver = "" }; _ListLogs.Add(_Log); } } else { // Заполняем старые логи JObject _Json = JObject.Parse(_jLog); foreach (var i in _Json["Log"].Children()) { _Log = new UserLog { Cod = (int)i["Cod"], Date = (string)i["Date"], Tip = (string)i["Tip"], User = (int)i["User"], Ver = (string)i["Ver"] }; _ListLogs.Add(_Log); } } // Берем последний лог и смотрим тип, кто и когда его менял _Log = _ListLogs.LastOrDefault(); if (_Log != null && _Log.Tip == pTipLog && _Log.User == pUser && _Log.Ver == MyMet.MET_Ver() && (DateTime.Now - DateTime.ParseExact(_Log.Date, "dd.MM.yyyy H:mm", CultureInfo.InvariantCulture)).Hours < 6) { // Если прошло менее 6 часов просто меняем время редактирования у последнего лога _Log.Date = DateTime.Now.ToString("dd.MM.yyyy H:mm"); } else { // Иначе добавляем новый логи _Log = new UserLog { Cod = _ListLogs.Count + 1, Date = DateTime.Now.ToString("dd.MM.yyyy H:mm"), Tip = pTipLog, User = pUser, Ver = MyMet.MET_Ver() }; _ListLogs.Add(_Log); } PROP_xLog = JsonConvert.SerializeObject(_ListLogs, Formatting.None, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore }); PROP_xLog = "{ \"Log\":" + PROP_xLog + "}"; }