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
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 4
0
        public async Task SentGroupByNone(string userName, ReportsSendAsEmailView emailData)
        {
            var groupByNone = _reportService.GroupByNone(userName, emailData);

            await SendReportWithGroupingAsync(emailData, groupByNone);
        }