private void SendEmailAdmin(IList <Book> booksLate, BookStatsDTO status) { var htmlTable = "<TABLE border=1 cellpadding=3 cellspacing=0><TR bgcolor='#ffff00'><TD><b>LIVRO</b></TD><TD><b>DIAS DE <BR>ATRASO</b></TD><TD><b>TOTAL <br>INTERESSADOS</b></TD><TD><b>DOADOR</b></TD><TD><b>FACILITADOR</b></TD><TD><b>ANOTAÇÕES</b></TD></TR>"; foreach (var book in booksLate) { var notes = book.FacilitatorNotes?.Replace("\n", "<BR>"); var whatsappLink = GetWhatsappLink(book.User.Phone); htmlTable += string.Format("<TR><TD>{0}<BR>{1}</TD><TD>{2}</TD><TD>{3}</TD><TD>{4}<BR>{5}<BR>{6}<BR>{7}</TD><TD>{8}<BR>{9}<BR>{10}<BR>{11}</TD><TD>{12}</TD></TR>", book.Title, book.Status, book.DaysLate(), book.TotalInterested(), book.User.Name, book.User.Email, whatsappLink, book.User.Linkedin, book.UserFacilitator.Name, book.UserFacilitator.Email, book.UserFacilitator.Phone, book.UserFacilitator.Linkedin, notes); } htmlTable += "</TABLE>"; var emailSubject = "SHAREBOOK - STATUS DO DIA."; var vm = new { htmlTable, totalWaitingApproval = status.TotalWaitingApproval, totalLate = booksLate.Count, totalOk = status.TotalOk }; var emailBodyHTML = _emailTemplate.GenerateHtmlFromTemplateAsync("LateDonationNotification", vm).Result; _emailService.SendToAdmins(emailBodyHTML, emailSubject).Wait(); }
public BookStatsDTO GetStats() { var groupedStatus = _repository.Get() .GroupBy(b => b.Status) .Select(g => new { Status = g.Key, Total = g.Count() }) .ToList(); var status = new BookStatsDTO(); status.TotalWaitingApproval = groupedStatus.Where(g => g.Status == BookStatus.WaitingApproval).Any() ? groupedStatus.Where(g => g.Status == BookStatus.WaitingApproval).FirstOrDefault().Total : 0; status.TotalOk = groupedStatus .Where(g => g.Status == BookStatus.WaitingSend || g.Status == BookStatus.Sent || g.Status == BookStatus.Received) .Sum(g => g.Total); return(status); }