public static IEnumerable <object> GetLogObjects(bool todayOnly) { var dataContext = new LogDataContext(); return(dataContext.Logs .Where(log => log.MisparIshi != null && (!todayOnly || (log.TimeCreated.HasValue && log.TimeCreated.Value.Date == DateTime.Today))) .GroupBy(log => log.MisparIshi) .Select(log => new { MisparIshi = log.Key, Count = log.Count() }) .Join(dataContext.PersonLogs, logGroup => logGroup.MisparIshi, person => person.MisparIshi, (logGroup, person) => new { Name = person.GivenName + " " + person.Surname, Count = logGroup.Count, Tafkid = person.JobTitle, Darga = person.Darga, }) .OrderByDescending(personLogs => personLogs.Count) .ToList()); }
private static Log getLog( LogDataContext dataContext, string id, string source) { var logFromDB = dataContext.Logs.Where(log => log.ID.Equals(id)).FirstOrDefault(); if (logFromDB != null) { return(logFromDB); } var misparIshi = CurrentMisparIshi.GetCurrentMisparIshi(); var newLog = new Log(); newLog.TimeCreated = DateTime.Now; newLog.ID = id; newLog.MailSent = 0; newLog.MorePressed = 0; newLog.RequestsMade = 0; newLog.SeeAllPressed = 0; newLog.Shared = false; newLog.MisparIshi = misparIshi; newLog.GivenName = getGivenNameForMisparIshi(misparIshi); newLog.Source = source; dataContext.Logs.InsertOnSubmit(newLog); return(newLog); }
public static IEnumerable <object> ReportBug(string report) { var bugReport = new BugReport(); bugReport.Report = report; bugReport.ReporterMisparIshi = CurrentMisparIshi.GetCurrentMisparIshi(); bugReport.TimeReported = DateTime.Now; var dataContext = new LogDataContext(); dataContext.BugReports.InsertOnSubmit(bugReport); dataContext.SubmitChanges(); return(new object[] { new { Success = "Yes" } }); // TODO(Josh): Figure out why this isn't working and fix it. /*try * { * Microsoft.Office.Interop.Outlook.Application app = * new Microsoft.Office.Interop.Outlook.Application(); * Microsoft.Office.Interop.Outlook.MailItem mailItem = * app.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem); * mailItem.Subject = "מערכת אנשים - Bug report"; * mailItem.To = "*****@*****.**"; * mailItem.Body = report; * mailItem.Send(); * return new object[] { new { Success = "Yes" } }; * } * catch (Exception exception) * { * return new object[] { new { exception } }; * }*/ }
public LogsResponse ListLogsLogic(int?pageOffset, int?pageSize, string?levelFilter) { using (var context = new LogDataContext()) { var orderedLogs = context.Logs.OrderByDescending(log => log.logged); int count = context.Logs.Count(); LogsResponse logsResponse = new LogsResponse { count = count }; if (pageOffset != null && pageSize != null) { if (count > pageSize + pageOffset) { logsResponse.logs = levelFilter != null?orderedLogs.Where(item => levelFilter != null && item.level == levelFilter).Skip(pageOffset.Value).Take(pageSize.Value).ToList() : orderedLogs.Skip(pageOffset.Value).Take(pageSize.Value).ToList(); return(logsResponse); } else { logsResponse.logs = new List <Log>(); return(logsResponse); } } else { logsResponse.logs = levelFilter != null?orderedLogs.Where(item => levelFilter != null && item.level == levelFilter).ToList() : orderedLogs.ToList(); return(logsResponse); } } }
private async Task <bool> LogItemAsync(LogItem logItem) { LogDataContext logDataContext = new LogDataContext(logItem.LogType, _storageAccount); bool response = await logDataContext.LogActivity(logItem); return(response); }
public void Stop() { stopwatch.Stop(); queryTime.Elapsed = stopwatch.ElapsedMilliseconds; var dataContext = new LogDataContext(); dataContext.QueryTimes.InsertOnSubmit(queryTime); dataContext.SubmitChanges(); }
[ValidateAntiForgeryToken] //与Html.AntiForgeryToken辅助器方法联合工作,防止Cross-Site-Request Forgery(CSRF,跨网站请求伪造) public async Task <ActionResult> Login(LoginModel details, string returnUrl = "/Home/Index") { //如果验证模型无误 if (ModelState.IsValid) { //根据用户名和密码查找用户,返回结果 AppUser user = await UserManager.FindAsync(details.LoginName, details.LoginPassword); //用户不存在,登录失败 if (user == null) { ModelState.AddModelError("LoginPassword", "用户不存在或密码错误"); } //用户存在,登录成功 else { //创建一个标识该用户的ClaimsIdentity对象,由用户管理器(AppUserManager)的CreateIdentityAsync方法创建得到 ClaimsIdentity ident = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie); //让已认证的Cookie失效 AuthManager.SignOut(); //SignOut()签出用户,意味着使标识已认证用户的Cookie失效 //创建一个新的Cookie AuthManager.SignIn(new AuthenticationProperties { IsPersistent = false //该属性设为TRUE表示该认证Cookie在浏览器中是持久化的,表明用户在开始新会话时不必再次验证 }, ident); //SignIn(options,identity)签入用户,意味着创建用来标识已认证请求的Cookie //如果是管理员 if (user.UserName == "XgHao") { return(RedirectToAction("AllTreasure", "Admin")); } //增加登录日志 using (var db = new LogDataContext()) { db.LogLogin.InsertOnSubmit(new LogLogin { LoginerID = user.Id, LoginIP = new Identity().GetIPAttribution(HttpContext.Request.UserHostAddress), LoginTime = DateTime.Now, LoginUID = Guid.NewGuid() }); db.SubmitChanges(); } //重定向到原来的页面 return(Redirect(returnUrl)); } } ViewBag.returnUrl = returnUrl; return(View(details)); }
public static int GetUsageOnDaysBeforeToday( this LogDataContext dataContext, int daysBeforeToday, bool showUsersInsteadOfUsages) { var targetDate = DateTime.Today.AddDays(daysBeforeToday * -1); return(dataContext.Logs .Where(log => log.TimeCreated.Value.Date == targetDate) .GroupBy(log => showUsersInsteadOfUsages ? log.MisparIshi : log.ID) .Count()); }
public void TrimLogs() { using (var context = new LogDataContext()) { var records = context.Logs.AsEnumerable().OrderByDescending(item => DateTime.Parse(item.logged)) .Skip(7500); foreach (var log in records) { context.Remove(log); } context.SaveChanges(); } }
public static IEnumerable <object> GetAllBugReports() { var dataContext = new LogDataContext(); return(dataContext .BugReports .OrderByDescending(bugReport => bugReport.TimeReported) .ToList() .Select(bugReport => new { reporter = bugReport.ReporterMisparIshi, report = bugReport.Report, whenCreated = bugReport.TimeReported.ToString("dd.MM @ HH:mm"), })); }
public static void Log(LogData logData) { if (logData.SessionId == null || logData.LogType == null) { return; } var dataContext = new LogDataContext(); if (CurrentMisparIshi.IsSuperAdmin()) { return; } var log = getLog(dataContext, logData.SessionId, logData.Source); switch (logData.LogType.ToLower()) { case "mail": log.MailSent++; break; case "request": log.RequestsMade++; if (logData.Query != null) { var request = new Request(); request.ID = logData.SessionId; request.Request1 = logData.Query; request.Time = DateTime.Now; dataContext.Requests.InsertOnSubmit(request); } break; case "morepressed": log.MorePressed++; break; case "seeallpressed": log.SeeAllPressed++; break; case "shared": log.Shared = true; break; } dataContext.SubmitChanges(); }
public static ILoggerConfigurator UseSqlServer(this ILoggerConfigurator configurator, string connectionString) { if (string.IsNullOrEmpty(connectionString)) { throw new ArgumentException(nameof(connectionString)); } LogDataContext context = new LogDataContext(connectionString); ILogRepository logRepository = new LogRepository(context); ILoggerProvider provider = new SqlServerProvider(logRepository); configurator.SetProvider(provider); return(configurator); }
public static void WriteAdminChange(string description) { if (!CurrentMisparIshi.IsAdmin()) { return; } var message = String.Format( "The admin {0} made the following change: {1}.", CurrentMisparIshi.GetCurrentMisparIshi(), description); var newAdminChange = new AdminChange(); newAdminChange.Description = message; newAdminChange.TimeAdded = DateTime.Now; var dataContext = new LogDataContext(); dataContext.AdminChanges.InsertOnSubmit(newAdminChange); dataContext.SubmitChanges(); }
public static IEnumerable <object> GetUsageForLastDays( int numberOfDaysToShow, bool showUsersInsteadOfUsages) { if (numberOfDaysToShow < 1) { numberOfDaysToShow = 20; } var dataContext = new LogDataContext(); var usageOnDays = new object[numberOfDaysToShow]; for (var i = 0; i < numberOfDaysToShow; i++) { var usages = dataContext.GetUsageOnDaysBeforeToday( i, showUsersInsteadOfUsages); usageOnDays[i] = new { usages }; } return(usageOnDays.Reverse()); }
public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter) { if (!IsEnabled(logLevel)) { return; } var optionsBuilder = new DbContextOptionsBuilder <LogDataContext>(); optionsBuilder.UseSqlServer(_connectionsString); using (var context = new LogDataContext(optionsBuilder.Options)) { context.LogMessages.Add(new LogMessage { LogLevel = (int)logLevel, Timestamp = DateTime.UtcNow, Stacktrace = exception?.StackTrace, Source = LogSource.Service.ToString(), Message = formatter(state, exception) }); context.SaveChanges(); } }
public LogRepository(LogDataContext context) { _context = context; }
/// <summary> /// Constructor for Controller /// </summary> /// <param name="logDataContext">API Data Context</param> /// <param name="logger">ILoggerFactory</param> public LogMessageApiController(LogDataContext logDataContext, ILoggerFactory logger) { _logger = logger.CreateLogger <LogMessageApiController>(); _dbContext = logDataContext; _dbContext.Database.EnsureCreated(); }
/// <summary> /// Initializes a new instance of the <see cref="AppSettingRepository"/> class. /// </summary> /// <param name="context">The context.</param> /// <exception cref="System.ArgumentNullException">context</exception> public AppSettingRepository(LogDataContext context) { _context = context ?? throw new ArgumentNullException(nameof(context)); }
public ActionResult TreasureInfo(string TreasureUID = "") { //获取当前用户id string id = CurrentUser.Id; if (!string.IsNullOrEmpty(TreasureUID)) { Guid Treasureguid = Guid.Parse(TreasureUID); #region 增加一次浏览量 //判断当前用户,当前物品的浏览记录是否已经存在 using (var db = new LogDataContext()) { var logbrowse = db.LogBrowse.Where(b => (b.TreasureID == TreasureUID && b.BrowserID == id)).FirstOrDefault(); //不存在记录,则增加一条 if (logbrowse == null) { db.LogBrowse.InsertOnSubmit(new LogBrowse { BLogUID = Guid.NewGuid(), BrowserID = id, TreasureID = TreasureUID, BrowserTime = DateTime.Now }); //物品浏览量加一 var trea = repository.Treasures.Where(t => t.TreasureUID == Treasureguid).FirstOrDefault(); trea.BrowseNum++; repository.SaveTreasure(trea); } //若存在则修改访问时间 else { logbrowse.BrowserTime = DateTime.Now; } db.SubmitChanges(); } #endregion Treasure treasure = repository.Treasures.Where(t => t.TreasureUID == Treasureguid).FirstOrDefault(); var imgs = treasure.DetailPic.Split('|'); if (treasure != null) { //判断是否已经收藏 bool isFavarite = false; using (var db = new FavoriteDataContext()) { var fav = db.Favorite.Where(f => (f.UserID == id && f.TreasureID == TreasureUID)).FirstOrDefault(); //若不为空,即存在记录,则说明已经收藏 if (fav != null) { isFavarite = true; } } //获取浏览记录 List <BrowseLog> browses = new List <BrowseLog>(); using (var db = new LogDataContext()) { var logBrowses = db.LogBrowse.Where(b => b.TreasureID == TreasureUID).OrderByDescending(b => b.BrowserTime).Take(6); foreach (var log in logBrowses) { var user = UserManager.FindById(log.BrowserID); if (user != null) { browses.Add(new BrowseLog { Browser = new BasicUserInfo { HeadImg = user.HeadPortrait, UserID = user.Id, Gender = user.Gender, UserName = user.UserName }, BrowserTime = log.BrowserTime }); } } } //生成推荐信息 int DisRecommend = 0; int Recommend = 0; // 1.首先找出当前用户完成的订单 using (var db = new LogDealDataContext()) { var logs = db.LogDeal.Where(l => ((l.TraderRecipientID == id || l.TraderSponsorID == id) && (l.DealStatus == "交易成功"))); using (var db2 = new EvaluationDataContext()) { //遍历所有完成的订单 foreach (var log in logs) { var eva = db2.Evaluation.Where(e => e.DLogUID == log.DLogUID.ToString()).FirstOrDefault(); //本次交易用户是接收人,则需要发起人的评价 if (log.TraderRecipientID == id) { //推荐 if (eva.IsRecommendSToR == true) { Recommend++; } else if (eva.IsRecommendSToR == false) { DisRecommend++; } } else { if (eva.IsRecommendRToS == true) { Recommend++; } else if (eva.IsRecommendRToS == false) { DisRecommend++; } } } } } //定义一个视图模型 TreaInfo treaInfo = new TreaInfo { HolderInfo = GetLoginUserInfo(treasure.HolderID), LoginUserInfo = CurrentUser, treasureInfo = treasure, //108是生成图片路径的固定的长度 DetailImgs = imgs.Where(t => t.Length == 108), IsFavorite = isFavarite, CurrenUser = new BasicUserInfo { HeadImg = CurrentUser.HeadPortrait }, browseLogs = browses.AsEnumerable(), DisRecommend = DisRecommend, Recommend = Recommend }; return(View(treaInfo)); } } return(View("List")); }
public ActionResult Index() { //新建视图 IndexViewModel model = new IndexViewModel(); var Alltreasure = repository.Treasures.Where(t => t.DLogUID == null).ToList().AsEnumerable(); #region 随便看看 //判断数量,决定要显示的物品数量 int cnt = Alltreasure.Count() < 50 ? 4 : Alltreasure.Count() / 10; cnt = cnt > Alltreasure.Count() ? Alltreasure.Count() : cnt; List <Treasure> treasureRandom = new List <Treasure>(); for (int i = 0; i < cnt; i++) { var r = new Random(Guid.NewGuid().GetHashCode()); int res = r.Next(0, Alltreasure.Count()); treasureRandom.Add(Alltreasure.ElementAt(res)); } List <TreasureAndHolderInfo> treasuresRandomList = new List <TreasureAndHolderInfo>(); //去掉重复元素,然后遍历 foreach (var trea in treasureRandom.Distinct()) { //获取物品所属人对象 var holder = UserManager.FindById(trea.HolderID); //是否被收藏 bool IsFavorite = false; using (var db = new FavoriteDataContext()) { var log = db.Favorite.Where(f => (f.TreasureID == trea.TreasureUID.ToString() && f.UserID == CurrentUser.Id)).FirstOrDefault(); if (log != null) { IsFavorite = true; } } if (holder != null) { var detail = trea.DetailPic.Split('|'); trea.DetailPic = detail.Last(); treasuresRandomList.Add(new TreasureAndHolderInfo { Holder = holder, Treasure = trea, IsFavorite = IsFavorite }); } } model.RandomTrea = treasuresRandomList.AsEnumerable(); #endregion #region 每日推荐 using (var db = new LogDataContext()) { //获取当前用户的浏览记录 var log = db.LogBrowse.Where(b => b.BrowserID == CurrentUser.Id).Select(b => b.TreasureID).ToList(); //获取用户浏览过的物品类型集合 var treas = repository.Treasures.Where(t => log.Contains(t.TreasureUID.ToString())).ToList(); var types = treas.Select(t => t.TreasureType); //获取这些这些类型的浏览量 List <TreasureTypeCnt> treasuretypecnt = new List <TreasureTypeCnt>(); int AllCnt = 0; foreach (var type in types) { int Typecnt = treas.Where(t => t.TreasureType == type).Count(); TreasureTypeCnt treasureTypeCnt = new TreasureTypeCnt { }; treasureTypeCnt.type = type; treasureTypeCnt.cnt = Typecnt; treasuretypecnt.Add(treasureTypeCnt); AllCnt += Typecnt; } //排序 treasuretypecnt.OrderBy(t => t.cnt); //根据排序后的类型,进行推荐相同类型的物品 List <Treasure> trea = new List <Treasure>(); foreach (var ty in treasuretypecnt) { int TreaCnt = ty.cnt * 5 / AllCnt; var tr = repository.Treasures.Where(t => t.TreasureType == ty.type).Take(TreaCnt); trea.AddRange(tr); } //去掉重复元素,然后遍历 List <TreasureAndHolderInfo> RecommandTrea = new List <TreasureAndHolderInfo>(); foreach (var Rtrea in trea.Distinct()) { //获取物品所属人对象 var holder = UserManager.FindById(Rtrea.HolderID); //是否被收藏 bool IsFavorite = false; using (var db2 = new FavoriteDataContext()) { var log2 = db2.Favorite.Where(f => (f.TreasureID == Rtrea.TreasureUID.ToString() && f.UserID == CurrentUser.Id)).FirstOrDefault(); if (log2 != null) { IsFavorite = true; } } if (holder != null) { var detail = Rtrea.DetailPic.Split('|'); Rtrea.DetailPic = detail.Last(); RecommandTrea.Add(new TreasureAndHolderInfo { Holder = holder, Treasure = Rtrea, IsFavorite = IsFavorite }); } } model.RecommandTrea = RecommandTrea.AsEnumerable(); } #endregion #region 最新物品 int cnt2 = Alltreasure.Count() > 6 ? 6 : Alltreasure.Count(); Alltreasure.OrderBy(t => t.UploadTime); List <Treasure> treasuresNew = Alltreasure.Take(cnt2).ToList(); List <TreasureAndHolderInfo> treasuresNewList = new List <TreasureAndHolderInfo>(); foreach (var trea in treasuresNew) { //获取物品所属人 var holder = UserManager.FindById(trea.HolderID); //是否被收藏 bool IsFavorite = false; using (var db = new FavoriteDataContext()) { //获取七天内的收藏记录 var FavoriteTrea = db.Favorite.Where(f => (SqlMethods.DateDiffDay(f.FavoriteTime, DateTime.Now) <= 7)).Select(f => f.TreasureID); var Treas = repository.Treasures.Where(t => FavoriteTrea.Contains(t.TreasureUID.ToString())); //生成视图模型 List <TreasureFavoriteCnt> treafavos = new List <TreasureFavoriteCnt>(); foreach (var favo in FavoriteTrea.Distinct()) { var favorecnt = Treas.Where(t => t.TreasureUID == Guid.Parse(favo)).Count(); treafavos.Add(new TreasureFavoriteCnt { cnt = favorecnt, treauid = favo }); } //排序 treafavos.OrderBy(t => t.cnt); var log = db.Favorite.Where(f => (f.TreasureID == trea.TreasureUID.ToString() && f.UserID == CurrentUser.Id)).FirstOrDefault(); if (log != null) { IsFavorite = true; } } if (holder != null) { treasuresNewList.Add(new TreasureAndHolderInfo { Holder = holder, Treasure = trea, IsFavorite = IsFavorite }); } } model.NewestTrea = treasuresNewList.AsEnumerable(); #endregion #region 最近热门 var treaHot = repository.Treasures.Where(t => t.DLogUID == null).OrderBy(t => t.BrowseNum); int cnt3 = treaHot.Count() > 6 ? 6 : treaHot.Count(); var treaHotList = treaHot.Take(cnt3); List <TreasureAndHolderInfo> treasuresHotList = new List <TreasureAndHolderInfo>(); foreach (var trea in treaHotList) { var holder = UserManager.FindById(trea.HolderID); bool isFavorite = false; using (var db = new FavoriteDataContext()) { var log = db.Favorite.Where(f => (f.TreasureID == trea.TreasureUID.ToString() && f.UserID == CurrentUser.Id)).FirstOrDefault(); if (log != null) { isFavorite = true; } } if (holder != null) { treasuresHotList.Add(new TreasureAndHolderInfo { Holder = holder, Treasure = trea, IsFavorite = isFavorite }); } } model.HotTrea = treasuresHotList.AsEnumerable(); #endregion #region 数据 model.TreasureCnt = repository.Treasures.Count(); using (var db = new LogDealDataContext()) { var deallog = db.LogDeal.Where(l => (l.DealStatus == "交易中" || l.DealStatus == "待确认")); model.DealingCnt = deallog.Count(); } using (var db = new EvaluationDataContext()) { var Evaluation = db.Evaluation; model.EvaluationCnt = Evaluation.Count(); } using (var db = new AspNetUserDataContext()) { var user = db.AspNetUsers; model.UserCnt = user.Count(); } #endregion return(View(model)); }
public async Task <List <LogByUserTableEntity> > GetLogsByUserAsync(string logType, string userName, int amount) { LogDataContext logDataContext = new LogDataContext(logType, _storageAccount); return(await logDataContext.GetLogsByUserTask(userName, amount)); }
public async Task <List <LogByActivityTableEntity> > GetLogsByActivityAsync(string logType, string activity, int amount) { LogDataContext logDataContext = new LogDataContext(logType, _storageAccount); return(await logDataContext.GetLogsByActivityTask(activity, amount)); }
public async Task <List <LogByIPAddressTableEntity> > GetLogsByIPAddressAsync(string logType, string ipAddress, int amount) { LogDataContext logDataContext = new LogDataContext(logType, _storageAccount); return(await logDataContext.GetLogsByIPTask(ipAddress, amount)); }
/// <summary> /// Initializes a new instance of the <see cref="LogManagementRepository"/> class. /// </summary> public LogManagementRepository() { _context = new LogDataContext(); }
public LoggingRepository(LogDataContext dbContext) { _context = dbContext; }