private async Task SendReportWithGroupingAsync <T>(ReportsSendAsEmailView emailData, IReportsGrandGridView <T> groupedList) { var fileByte = CreateReportFileByteUpdateFileNameContentType(emailData, groupedList, out var contentType); #region Create and send message with file Attachment. // Create builder for message body var builder = new BodyBuilder { TextBody = emailData.Comment ?? string.Empty, }; // Add file to message body builder.Attachments.Add(fileName, fileByte); var multipart = builder.ToMessageBody(); var emailSender = new EmailSender(_configuration); emailSender.CreateSimpleMessage(emailData.ToEmail, multipart, emailData.Subject ?? fileName, emailData.CcEmails, emailData.BccEmails); await emailSender.SendMessageAsync(); #endregion }
public async Task <IActionResult> SentReport([FromBody] ReportsSendAsEmailView reportsGridData) { try { var userName = this.GetUserNameWithImpersonation(); switch (reportsGridData.GroupById) { case (int)ReportsGroupBy.Project: { await _service.SentGroupByProjects(userName, reportsGridData); break; } case (int)ReportsGroupBy.User: { await _service.SentGroupByUsers(userName, reportsGridData); break; } case (int)ReportsGroupBy.Date: { await _service.SentGroupByDates(userName, reportsGridData); break; } case (int)ReportsGroupBy.Client: { await _service.SentGroupByClients(userName, reportsGridData); break; } default: { await _service.SentGroupByNone(userName, reportsGridData); break; } } return(Ok()); } catch (Exception e) { _logger.LogWarning($"PostReportsGrid method with parameters ({reportsGridData});\n {e}"); var errors = ExceptionsChecker.CheckProjectsException(e); return(BadRequest(errors)); } }
public async Task SentGroupByClients(string userName, ReportsSendAsEmailView emailData) { var groupByClients = _reportService.GroupByProjects(userName, emailData); await SendReportWithGroupingAsync(emailData, groupByClients); }
public async Task SentGroupByNone(string userName, ReportsSendAsEmailView emailData) { var groupByNone = _reportService.GroupByNone(userName, emailData); await SendReportWithGroupingAsync(emailData, groupByNone); }