public void AddUserLog(UserSearchLogModel userLog, string wordSearched) { _dbContext.SearchLogs .Add( new SearchLog() { SearchDate = userLog.SearchDate, UserIP = userLog.UserIP, WordSearched = wordSearched }); _dbContext.SaveChanges(); }
public List <UserSearchLogModel> GetUserLogs(string userIP) { List <UserSearchLogModel> userLogs = new List <UserSearchLogModel>(); string query = "SELECT UserLog.Id, UserIP, UserLog.WordSearched, UserLog.SearchDate, Words.Word AS 'Anagram' " + "FROM UserLog " + "LEFT JOIN CachedWords ON(CachedWords.Word = UserLog.WordSearched) " + "LEFT JOIN Words ON(Words.Id = CachedWords.Id) " + "WHERE UserLog.UserIP = @UserIP"; using (SqlConnection connection = new SqlConnection(_connection.ConnectionString)) { SqlCommand command = new SqlCommand(query, connection); connection.Open(); command.Parameters.Add("@UserIp", SqlDbType.NVarChar); command.Parameters["@UserIP"].Value = userIP; SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { int searchId = reader.GetInt32(0); string anagram = (!reader.IsDBNull(4)) ? reader.GetString(4) : ""; if (userLogs.Where(log => log.SeachId == searchId).Count() > 0) { userLogs.Single(log => log.SeachId == searchId).Anagrams.Add(anagram); } else { string userIp = reader.GetString(1); string wordSearched = reader.GetString(2); DateTime searchDate = reader.GetDateTime(3); UserSearchLogModel userLog = new UserSearchLogModel(userIP, wordSearched, searchId); userLog.Anagrams.Add(anagram); userLog.SearchDate = searchDate; userLogs.Add(userLog); } } reader.Close(); connection.Close(); } return(userLogs); }
public void AddUserLog(UserSearchLogModel userLog, string word) { string query = "INSERT INTO UserLog (UserIP, WordSearched) VALUES (@UserIP, @WordSearched);"; using (SqlConnection connection = new SqlConnection(_connection.ConnectionString)) { SqlCommand command = new SqlCommand(query, connection); connection.Open(); command.Parameters.Add("@UserIp", SqlDbType.NVarChar); command.Parameters["@UserIP"].Value = userLog.UserIP; command.Parameters.Add("@WordSearched", SqlDbType.NVarChar); command.Parameters["@WordSearched"].Value = userLog.WordSearched; command.ExecuteNonQuery(); connection.Close(); } }
public ActionResult Index(string word) { _anagramsModel = new AnagramsViewModel(); if (word != null) { _anagramsModel.Word = word; string ip = HttpContext.Connection.RemoteIpAddress.ToString(); UserSearchLogModel userLog = new UserSearchLogModel(ip, word, null) { UserIP = ip, SearchDate = DateTime.Now }; _usersRepository.AddUserLog(userLog, word); try { _anagramsModel.Anagrams = _anagramsService.GetAnagrams(word, ip); } catch (Exception ex) { _anagramsModel.ErrorMessage = ex.Message; } CookieOptions cookieOptions = new CookieOptions(); cookieOptions.Expires = DateTime.Now.AddMinutes(10); string searchHistory = Request.Cookies["searchHistory"]; if (searchHistory == null) { searchHistory += $"{word}"; } else { searchHistory += $",{word}"; } Response.Cookies.Append("searchHistory", searchHistory, cookieOptions); } return(View(_anagramsModel)); }