private async Task SendConfirmationEmail(List <int> teamIds) { var viewDataDictionary = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary()); IQueryable <Team> teams = TeamRepository.AllIncluding(t => t.Division, t => t.CompetitionLevel, t => t.Members, t => t.Gender, t => t.Manager).Where(t => teamIds.Contains(t.Id)); List <TransactionHistory> transactionHistory = TransactionHistoryRepository.All.ToList(); foreach (var team in teams) { var teamViewModel = Mapper.Map <RegisteredTeamViewModel>(team); viewDataDictionary.Model = new TeamRegisteredViewModel { EmailAddress = team.Manager.Email, FirstName = team.Manager.FirstName, LastName = team.Manager.LastName, Members = Mapper.Map <IList <RegisteredParticipantViewModel> >(team.Members), Team = teamViewModel, DateRegistered = transactionHistory.SingleOrDefault(t => t.TransactionId == team.PaymentTransactionId).TransactionDate }; var message = await EmailViewRenderer.RenderAsync("TeamRegistered", viewDataDictionary); await EmailSender.SendEmailAsync(team.Manager.Email, $"{AppSettings.TournamentName} Confirmation - {team.Name}", message); } }
public async Task <IActionResult> IncompleteTeamReport() { List <Team> teams = await TeamRepository.AllIncluding(t => t.Members, t => t.Manager, t => t.Division, t => t.CompetitionLevel, t => t.Gender, t => t.PromotionalCode).Where(t => !t.IsDeleted && t.PaymentTransactionId == null).ToListAsync(); MemoryStream memoryStream = new MemoryStream(); XLWorkbook workbook = new XLWorkbook(); AddIncompleteTeamReport(workbook, teams); workbook.SaveAs(memoryStream); memoryStream.Seek(0, SeekOrigin.Begin); return(File(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "IncompleteTeams.xlsx")); }