Beispiel #1
0
        public async Task <bool> SendMessageWithPurpose <TModel>(MailModel model, EmailPurpose emailPurpose,
                                                                 TModel templateModel)
            where TModel : class
        {
            try
            {
                var result = await _email
                             .To(model.ToEmail)
                             .Subject(model.Subject)
                             .UsingTemplateFromFile(_templateStorageService.GetPathByKey(emailPurpose.ToString()), templateModel)
                             .SendAsync();

                if (!result.Successful)
                {
                    _logger.LogError("Failed to send an email.\n{Errors}",
                                     string.Join(Environment.NewLine, result.ErrorMessages));
                }

                return(result.Successful);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"{DateTime.Now}: Failed to send email with purpose {emailPurpose.ToString()} ❌! ({ex.Message})");
                return(false);
            }
        }
        public ReportExporterResponse GenerateReportForExport(UserActivityDto userActivity, ReportFormatType formatType)
        {
            try
            {
                //If using Professional version, put your serial key below.
                SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
                // Continue to use the component in a Trial mode when free limit is reached.
                SpreadsheetInfo.FreeLimitReached += (sender, e) => e.FreeLimitReachedAction = FreeLimitReachedAction.ContinueAsTrial;
                var worklogs      = userActivity.WorkLogItems;
                int numberOfItems = worklogs.Count;

                var stringPath = _readOnlyTemplateStorageService.GetPathByKey(ReportType.ActivitiesReport.ToString());
                // Load an Excel template. xls
                var workbook = ExcelFile.Load(stringPath);

                // Get template sheet.
                var worksheet = workbook.Worksheets[0];

                // Find cells with placeholder text and set their values.
                int row, column;
                if (worksheet.Cells.FindText("Name#", out row, out column))
                {
                    worksheet.Cells[row, column].Value = userActivity.UserName;
                }
                if (worksheet.Cells.FindText("Surname#", out row, out column))
                {
                    worksheet.Cells[row, column].Value = userActivity.UserSurname;
                }
                if (worksheet.Cells.FindText("Project name#", out row, out column))
                {
                    worksheet.Cells[row, column].Value = userActivity.ProjectName;
                }
                if (worksheet.Cells.FindText("Email#", out row, out column))
                {
                    worksheet.Cells[row, column].Value = userActivity.UserEmail;
                }

                // Copy template row.
                row = 16;
                worksheet.Rows.InsertCopy(row + 1, numberOfItems, worksheet.Rows[row]);

                // Fill copied rows with sample data.
                for (int i = 0; i < numberOfItems; i++)
                {
                    var currentRow = worksheet.Rows[row + i];
                    currentRow.Cells[0].SetValue(worklogs[i].StartDate.DateTime.Date.ToShortDateString());
                    currentRow.Cells[1].SetValue(worklogs[i].Description);
                    currentRow.Cells[2].SetValue(worklogs[i].StartDate.DateTime.ToShortTimeString());
                    currentRow.Cells[3].SetValue(worklogs[i].ActivityType.ToString());
                    currentRow.Cells[4].SetValue(new TimeSpan(worklogs[i].TimeSpent).TotalHours);
                }

                worksheet.Rows[11].Cells[4].SetValue(new TimeSpan(userActivity.TotalWorkLogInSeconds).TotalHours);
                worksheet.Calculate();
                // Save the modified Excel template to output file.
                var saveOptions = GetFormatOptions(formatType);

                using var stream = new MemoryStream();
                workbook.Save(stream, saveOptions.Item2);
                return(new ReportExporterResponse
                {
                    FileContentType = saveOptions.Item2.ContentType,
                    FileName =
                        $"Worklog_{userActivity.UserName}_{userActivity.UserSurname}_{DateTime.UtcNow}.{saveOptions.Item1.ToLower()}",
                    FileBytes = stream.ToArray(),
                });
            }
            catch (Exception e)
            {
                _logger.LogError(e, "An error occured while creating report");
                Console.WriteLine(e);
                throw;
            }
        }
        public ReportExporterResponse GenerateReportForExport(UserActivityDto userActivity, ReportFormatType formatType)
        {
            // If using Professional version, put your serial key below.
            SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
            var worklogs      = userActivity.WorkLogItems;
            int numberOfItems = worklogs.Count;

            var stringPath = _readOnlyTemplateStorageService.GetPathByKey(ReportType.ActivitiesReport.ToString());
            // Load an Excel template. xls
            var workbook = ExcelFile.Load(stringPath);

            // Get template sheet.
            var worksheet = workbook.Worksheets[0];

            // Find cells with placeholder text and set their values.
            int row, column;

            if (worksheet.Cells.FindText("[Name#]", out row, out column))
            {
                worksheet.Cells[row, column].Value = userActivity.UserName;
            }
            if (worksheet.Cells.FindText("[Surname#]", out row, out column))
            {
                worksheet.Cells[row, column].Value = userActivity.UserSurname;
            }
            if (worksheet.Cells.FindText("[Project name#]", out row, out column))
            {
                worksheet.Cells[row, column].Value = userActivity.ProjectName;
            }
            if (worksheet.Cells.FindText("[Email#]", out row, out column))
            {
                worksheet.Cells[row, column].Value = userActivity.UserEmail;
            }

            // Copy template row.
            row = 17;
            worksheet.Rows.InsertCopy(row + 1, numberOfItems - 1, worksheet.Rows[row]);


            // Fill copied rows with sample data.
            var random = new Random();

            for (int i = 0; i < numberOfItems; i++)
            {
                var currentRow = worksheet.Rows[row + i];
                currentRow.Cells[1].SetValue(worklogs[i].StartDate.DateTime.ToLongDateString());
                currentRow.Cells[2].SetValue(worklogs[i].Description);
                currentRow.Cells[3].SetValue(worklogs[i].ActivityType.ToString());
                currentRow.Cells[4].SetValue(worklogs[i].TimeSpent.ToString(@"dd\.hh\:mm\:ss"));
            }

            worksheet.Rows[12].Cells[4].SetValue(userActivity.TotalWorkLogInSeconds);
            worksheet.Calculate();
            // Save the modified Excel template to output file.

            var saveOptions = GetFormatOptions(formatType);

            using var stream = new MemoryStream();
            workbook.Save(stream, saveOptions.Item2);
            return(new ReportExporterResponse
            {
                FileContentType = saveOptions.Item2.ContentType,
                FileName =
                    $"Worklog_{userActivity.UserName}_{userActivity.UserSurname}_{DateTime.UtcNow}.{saveOptions.Item1.ToLower()}",
                FileBytes = stream.ToArray()
            });
        }