Exemplo n.º 1
0
        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));
        }