我需要每周数据并与我的表中的现有用户匹配

时间:2018-09-20 13:47:00

标签: c#-4.0

我的代码是

公共无效SendLoginReportWeekly()         {             尝试             {

            var currentTime = DateTime.Now;
            DateTime today = DateTime.Today;
            if (today.DayOfWeek == DayOfWeek.Thursday)
            {
                var fileName = string.Format("Login_Report_{0}.xls", currentTime.ToString("yyyyMMdd"));

                string reportsPath = ConfigurationManager.AppSettings["LoginReportPathWeekly"];

                if (!Directory.Exists(reportsPath))
                    Directory.CreateDirectory(reportsPath);

                string reportsFullPath = Path.Combine(reportsPath, fileName);

                if (File.Exists(reportsFullPath))
                    return;

                var logins = securityODataService.Container.UsageLog.Where(x => x.Action == "SignInExternalTokenSuccess" && x.CreatedOn >= currentTime.AddDays(-7).Date && x.CreatedOn < currentTime.Date)
                   .ToList();

                var users = userService.All().Where(x => !x.IsDeleted).Select(x => new { x.UserName, x.Name, x.Designation, Branch = x.Branch.Name, LoggedInDateTime = new DateTime() }).ToList();

                var report = users.Select(x => new
                {
                    x.UserName,
                    x.Name,
                    x.Designation,
                    x.Branch,
                    LoggedInDateTime = logins.Where(y => y.Username == x.UserName).FirstOrDefault() == null ? "" : logins.Where(y => y.Username == x.UserName).FirstOrDefault().CreatedOn.ToLocalTime().ToString("dd MMM yyyy HH:mm")
                }).Where(x => x.LoggedInDateTime != "").OrderBy(x => x.LoggedInDateTime).ToList();

                DataTable dataTable = fileService.ConvertToDataTable(report);

                fileService.SaveExcelData(reportsFullPath, "Login Report", dataTable);

                var recipients = ConfigurationManager.AppSettings["LoginReportRecipients"].Split(',').ToList();

                string subject = string.Format("Ascent Login Report - {0}", currentTime.AddDays(-7).ToString("dd MMM yyyy"));
                string body = string.Format("Hi,<br /><br />Please find the attached login report for {0}.", currentTime.AddDays(-7).ToString("dd MMM yyyy"));

                emailService.Send(recipients, subject, body, reportsFullPath);
            }
        }
        catch (Exception ex)
        {
            logger.Error(ex.Message, ex);
        }
    }

我正在使用另一种方法来处理每日数据,我在9月19日获得19条记录,但在我的每周报告中,我仅获得3条记录。 请查看我的代码,请让我知道我要怎么做

0 个答案:

没有答案