/// <summary> /// Заполнить поля информацией /// </summary> /// <param name="UserId">ID пользователя</param> /// <param name="tables">обьект класса UsersTables с открытым подключением</param> /// <returns>this</returns> public UserFromTable FillWithInfo(int UserId, UsersTables tables) { name = tables.Get_UserName(UserId); pass = tables.Get_UserPassword(UserId); userType = tables.Get_UserTypeStr(UserId); userRole = tables.Get_UserRoleName(UserId); timeConnection = tables.Get_TimeConnect(UserId); orgName = tables.Get_UserOrgName(UserId); id = UserId; return(this); }
/// <summary> /// Заполнить поля информацией /// </summary> /// <param name="UserId">ID пользователя</param> /// <param name="tables">обьект класса UsersTables с открытым подключением</param> /// <returns>this</returns> public UserFromTable FillWithInfo(int UserId, UsersTables tables) { name = tables.Get_UserName(UserId); pass = tables.Get_UserPassword(UserId); userType = tables.Get_UserTypeStr(UserId); userRole = tables.Get_UserRoleName(UserId); timeConnection = tables.Get_TimeConnect(UserId); orgName = tables.Get_UserOrgName(UserId); id = UserId; return this; }
/// <summary> /// Получает всю исторю для группы выбранных пользователей с выполнением некоторых условий /// </summary> /// <param name="usersIds">Массив ID пользователей</param> /// <param name="from">Дата с</param> /// <param name="to">Дата по</param> /// <param name="actionIdIns">ID типа действия</param> /// <param name="searchString">Строка, которая должна встречаться в логе</param> /// <returns>DataTable, который можно напрямую использовать как источник данных.</returns> public DataTable GetAllHistorysForUsers(List <int> usersIds, DateTime from, DateTime to, int actionIdIns, string searchString) { Exception noValues = new Exception("Нет значений для Журнала"); DataTable UsersHistoryData = new DataTable("UsersHistoryData"); string userName; UsersTables userTable = new UsersTables(connectionString, CurrentLanguage, sqlDb); DataRow dr; List <List <KeyValuePair <string, string> > > gettedIdList = new List <List <KeyValuePair <string, string> > >(); List <string> gettedDateTimes = new List <string>(); UsersHistoryData.Columns.Add(new DataColumn("USER_ID", typeof(int))); UsersHistoryData.Columns.Add(new DataColumn("ACTION_ID", typeof(int))); UsersHistoryData.Columns.Add(new DataColumn("TABLE_ID", typeof(int))); UsersHistoryData.Columns.Add(new DataColumn("Дата и время", typeof(DateTime))); UsersHistoryData.Columns.Add(new DataColumn("Пользователь", typeof(string))); UsersHistoryData.Columns.Add(new DataColumn("Описание", typeof(string))); int tableId = -1; int actionId = -1; string description; DateTime date = new DateTime(); foreach (int userId in usersIds) { //userTable.OpenConnection(); userName = userTable.Get_UserName(userId); //userTable.CloseConnection(); gettedIdList = sqlDb.GetHistoryActionIdAndTableId(userId, from, to, actionIdIns); tableId = -1; actionId = -1; foreach (List <KeyValuePair <string, string> > record in gettedIdList) { foreach (KeyValuePair <string, string> oneValue in record) { if (oneValue.Key == "ACTION_ID") { actionId = Convert.ToInt32(oneValue.Value); } if (oneValue.Key == "TABLE_ID") { tableId = Convert.ToInt32(oneValue.Value); } if (oneValue.Key == "ACTION_DATE") { date = DateTime.Parse(oneValue.Value); } } if (actionId <= 0 || tableId <= 0) { throw noValues; } dr = UsersHistoryData.NewRow(); dr["Дата и время"] = date;//дата dr["Пользователь"] = userName; description = GetActionString(actionId) + ". " + GetHistoryNote(userId, actionId, tableId, date) + "."; if (searchString != "")//очень плохой способ. Если будет тормозить - переделать на выборку из базы или еще чего... { //if (description.Contains(searchString)) if (description.ToLower().Contains(searchString.ToLower())) { //description = Regex.Replace(description, searchString, "&lbb&rb&lbFONT COLOR=RED&rb" + searchString + "&lb&slFONT&rb&lb&slb&rb", RegexOptions.IgnoreCase); description = description.Replace(searchString, "&lbb&rb&lbFONT COLOR=RED&rb" + searchString + "&lb&slFONT&rb&lb&slb&rb"); description = description.Replace(searchString.ToLower(), "&lbb&rb&lbFONT COLOR=RED&rb" + searchString.ToLower() + "&lb&slFONT&rb&lb&slb&rb"); String s = searchString.Substring(0, 1).ToUpper() + searchString.Substring(1); description = description.Replace(s, "&lbb&rb&lbFONT COLOR=RED&rb" + s + "&lb&slFONT&rb&lb&slb&rb"); } else { continue; } } dr["Описание"] = description; dr["USER_ID"] = userId; dr["ACTION_ID"] = actionId; dr["TABLE_ID"] = tableId; UsersHistoryData.Rows.Add(dr); } } UsersHistoryData.DefaultView.Sort = "Дата и время DESC"; return(UsersHistoryData); }
/// <summary> /// Получает всю исторю для группы выбранных пользователей с выполнением некоторых условий /// </summary> /// <param name="usersIds">Массив ID пользователей</param> /// <param name="from">Дата с</param> /// <param name="to">Дата по</param> /// <param name="actionIdIns">ID типа действия</param> /// <param name="searchString">Строка, которая должна встречаться в логе</param> /// <returns>DataTable, который можно напрямую использовать как источник данных.</returns> public DataTable GetAllHistorysForUsers(List<int> usersIds, DateTime from, DateTime to, int actionIdIns, string searchString) { Exception noValues = new Exception("Нет значений для Журнала"); DataTable UsersHistoryData = new DataTable("UsersHistoryData"); string userName; UsersTables userTable = new UsersTables(connectionString, CurrentLanguage, sqlDb); DataRow dr; List<List<KeyValuePair<string, string>>> gettedIdList = new List<List<KeyValuePair<string, string>>>(); List<string> gettedDateTimes = new List<string>(); UsersHistoryData.Columns.Add(new DataColumn("USER_ID", typeof(int))); UsersHistoryData.Columns.Add(new DataColumn("ACTION_ID", typeof(int))); UsersHistoryData.Columns.Add(new DataColumn("TABLE_ID", typeof(int))); UsersHistoryData.Columns.Add(new DataColumn("Дата и время", typeof(DateTime))); UsersHistoryData.Columns.Add(new DataColumn("Пользователь", typeof(string))); UsersHistoryData.Columns.Add(new DataColumn("Описание", typeof(string))); int tableId = -1; int actionId = -1; string description; DateTime date = new DateTime(); foreach (int userId in usersIds) { //userTable.OpenConnection(); userName = userTable.Get_UserName(userId); //userTable.CloseConnection(); gettedIdList = sqlDb.GetHistoryActionIdAndTableId(userId, from, to, actionIdIns); tableId = -1; actionId = -1; foreach (List<KeyValuePair<string, string>> record in gettedIdList) { foreach (KeyValuePair<string, string> oneValue in record) { if (oneValue.Key == "ACTION_ID") actionId = Convert.ToInt32(oneValue.Value); if (oneValue.Key == "TABLE_ID") tableId = Convert.ToInt32(oneValue.Value); if (oneValue.Key == "ACTION_DATE") date = DateTime.Parse(oneValue.Value); } if (actionId <= 0 || tableId <= 0) throw noValues; dr = UsersHistoryData.NewRow(); dr["Дата и время"] = date;//дата dr["Пользователь"] = userName; description = GetActionString(actionId) + ". " + GetHistoryNote(userId, actionId, tableId, date) + "."; if (searchString != "")//очень плохой способ. Если будет тормозить - переделать на выборку из базы или еще чего... { //if (description.Contains(searchString)) if (description.ToLower().Contains(searchString.ToLower())) { //description = Regex.Replace(description, searchString, "&lbb&rb&lbFONT COLOR=RED&rb" + searchString + "&lb&slFONT&rb&lb&slb&rb", RegexOptions.IgnoreCase); description = description.Replace(searchString, "&lbb&rb&lbFONT COLOR=RED&rb" + searchString + "&lb&slFONT&rb&lb&slb&rb"); description = description.Replace(searchString.ToLower(), "&lbb&rb&lbFONT COLOR=RED&rb" + searchString.ToLower() + "&lb&slFONT&rb&lb&slb&rb"); String s=searchString.Substring(0,1).ToUpper()+searchString.Substring(1); description = description.Replace(s, "&lbb&rb&lbFONT COLOR=RED&rb" + s + "&lb&slFONT&rb&lb&slb&rb"); } else continue; } dr["Описание"] = description; dr["USER_ID"] = userId; dr["ACTION_ID"] = actionId; dr["TABLE_ID"] = tableId; UsersHistoryData.Rows.Add(dr); } } UsersHistoryData.DefaultView.Sort = "Дата и время DESC"; return UsersHistoryData; }