private void EmployeeDocumentExpiryJob(EmailService emailService) { List <ExpiredDocuments> expireds = new List <ExpiredDocuments>(); var expiryDate = DateTime.Today.AddDays(10).Date; var passportDetails = from ed in UnitOfWork.EmployeeDetailsRepository.Get() where ed.PassportExpiryDate < expiryDate select new ExpiredDocuments { DocumentName = "Passport", EmployeeName = ed.EmployeeName, ExpiryDate = ed.PassportExpiryDate }; expireds.Add(passportDetails?.FirstOrDefault()); var data = UnitOfWork.EmployeeDetailsRepository.Get(); var residentDetails = from ed in UnitOfWork.EmployeeDetailsRepository.Get() where ed.ResidentExpiryDate < expiryDate select new ExpiredDocuments { DocumentName = "Resident", EmployeeName = ed.EmployeeName, ExpiryDate = ed.PassportExpiryDate }; expireds.Add(residentDetails?.FirstOrDefault()); var contractDetails = from ed in UnitOfWork.EmployeeDetailsRepository.Get() where ed.ContractEndDate < expiryDate select new ExpiredDocuments { DocumentName = "Contract", EmployeeName = ed.EmployeeName, ExpiryDate = ed.PassportExpiryDate }; expireds.Add(contractDetails?.FirstOrDefault()); var userDocuments = from ef in UnitOfWork.EmployeeFileUploadsRepository.Get() join dt in UnitOfWork.DocumentTypeRepository.Get() on ef.DocumentId equals dt.DocumentId join ed in UnitOfWork.EmployeeDetailsRepository.Get() on ef.EmployeeReferenceNo equals ed.EmployeeReferenceNo where ef.ExpiryDate != null && ef.ExpiryDate < expiryDate select new ExpiredDocuments() { DocumentName = dt.DocumentName, EmployeeName = ed.EmployeeName, ExpiryDate = ef.ExpiryDate }; if (userDocuments != null) { expireds.AddRange(userDocuments); } if (expireds != default(List <ExpiredDocuments>)) { string strBody = EmailTemplateHelper.UserDocumentDetails(expireds) .Replace("[APPLICATIONLINK]", "https://aris-amt.com"); emailService.Send(strManagerMails, "", "Employee Document Expiry Reminder", strBody); } else { Console.WriteLine("No mails to send"); } }