Я хочу еженедельные данные и сопоставить с моим существующим пользователем из моей таблицы - PullRequest
0 голосов
/ 20 сентября 2018

Мой код:

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 записи.Пожалуйста, просмотрите мой код и, пожалуйста, дайте мне знать, что не так, я иду

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...