Мой код:
public void SendLoginReportWeekly () {try {
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);
}
}
Я использую еще один метод для ежедневных данных в ежедневных данных. Я получаю 19 записей для даты 19 сентябряно в моем еженедельном отчете я получаю только 3 записи.Пожалуйста, просмотрите мой код и, пожалуйста, дайте мне знать, что не так, я иду