public List <UserLogReport> GenerateUserLogReport() { bool added = false; List <UserLogReport> userLogReports = new List <UserLogReport>(); var tempUserLogReport = userLogRepository.GetUserLogReport(); foreach (var tempUserLog in tempUserLogReport) { added = false; UserLogReport reportToAdd = new UserLogReport(); reportToAdd.UserIp = tempUserLog.UserIp; reportToAdd.SearchTime = tempUserLog.SearchTime; reportToAdd.Word = tempUserLog.Word; foreach (var logReport in userLogReports) { if (logReport.UserIp == reportToAdd.UserIp && logReport.SearchTime == reportToAdd.SearchTime) { logReport.Anagrams.Add(tempUserLog.Anagrams[0]); added = true; break; } } if (!added) { reportToAdd.Anagrams = tempUserLog.Anagrams; userLogReports.Add(reportToAdd); } } return(userLogReports); }
public List <UserLogReport> GetUserLogReport() { bool added = false; List <UserLogReport> userLogReports = new List <UserLogReport>(); using (var context = new MainAppDatabaseContext()) { var tempUserLogReport = context.UserLog.Join(context.CachedWords, log => log.Word, cache => cache.Word, (log, cache) => new { log, cache }) .Join(context.Words, o => o.cache.AnagramId, w => w.Id, (o, w) => new { o, w }) .Select(r => new UserLogReport { UserIp = r.o.log.UserIp, SearchTime = r.o.log.SearchTime, Word = r.o.log.Word, Anagrams = new List <string>() { r.w.Word } }); foreach (var tempUserLog in tempUserLogReport) { added = false; UserLogReport reportToAdd = new UserLogReport(); reportToAdd.UserIp = tempUserLog.UserIp; reportToAdd.SearchTime = tempUserLog.SearchTime; reportToAdd.Word = tempUserLog.Word; foreach (var logReport in userLogReports) { if (logReport.UserIp == reportToAdd.UserIp && logReport.SearchTime == reportToAdd.SearchTime) { logReport.Anagrams.Add(tempUserLog.Anagrams[0]); added = true; break; } } if (!added) { reportToAdd.Anagrams = tempUserLog.Anagrams; userLogReports.Add(reportToAdd); } } } return(userLogReports); }
public IList <UserLogReport> GetUserLogReport() { bool added = false; List <UserLogReport> userLogReports = new List <UserLogReport>(); List <string> anagrams = new List <string>(); string query = "SELECT UserLog.UserIp, UserLog.SearchTime, UserLog.Word, Words.Word as Anagram " + "FROM((UserLog " + "INNER JOIN CachedWords ON UserLog.Word = CachedWords.Word) " + "INNER JOIN Words ON CachedWords.AnagramId = Words.Id)"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); SqlCommand selectLogs = new SqlCommand(query, connection); using (SqlDataReader reader = selectLogs.ExecuteReader()) { while (reader.Read()) { added = false; UserLogReport report = new UserLogReport(); report.UserIp = reader.GetString(0); report.SearchTime = reader.GetDateTime(1); report.Word = reader.GetString(2); foreach (var logReport in userLogReports) { if (logReport.UserIp == report.UserIp && logReport.SearchTime == report.SearchTime) { logReport.Anagrams.Add(reader.GetString(3)); added = true; break; } } if (!added) { report.Anagrams = new List <string> { reader.GetString(3) }; userLogReports.Add(report); } } } connection.Close(); } return(userLogReports); }