public async Task SendJoinMail(SendJoinMailRequest request, CancellationToken cancellationToken = default) { const string subject = "Successvol automatisch ingeschreven Fit2Go"; string content = CreateMailContent(request); await SendMail(request.User, subject, content, cancellationToken); }
private async Task ProcessUser( UserOption user, DateTimeOffset date, IEnumerable <DateTimeOffset> lessonTimes, ILogger log, CancellationToken cancellationToken = default) { var lessonRequest = new GetLessonsRequest(user, date, date.AddDays(1), _options.LocationId); GetLessonsResponse lessonResponse = await _client.GetLessons(lessonRequest, cancellationToken); List <Lesson> lessonsToJoin = lessonResponse.Lessons // Use OrdinalIgnoreCase and keyword "vrij" since the descriptions aren't consistent .Where(l => l.Description.Contains("vrij", StringComparison.OrdinalIgnoreCase) && lessonTimes.Contains(l.LessonStartTime)) .ToList(); if (lessonsToJoin.Count > 0) { var success = new List <Lesson>(); var failed = new List <Lesson>(); foreach (Lesson lesson in lessonsToJoin) { try { var joinRequest = new JoinLessonRequest(user, lesson.Id); JoinLessonResponse joinResponse = await _client.JoinLesson(joinRequest, cancellationToken); if (!joinResponse.Warning) { success.Add(lesson); } else { failed.Add(lesson); } } catch (Exception ex) { log.LogError(ex, "Something went wrong while joining a lesson. {User} {LessonId}", user.User, lesson.Id); failed.Add(lesson); } } if (success.Count > 0) { var mailRequest = new SendJoinMailRequest(user, success, failed); await _emailClient.SendJoinMail(mailRequest, cancellationToken); return; } } else { log.LogWarning("LessonsToJoin is empty for {User}", user.User); } await _emailClient.SendFailedMail(user); }
private static string CreateMailContent(SendJoinMailRequest request) { var builder = new StringBuilder(); if (request.Success.Count > 0) { builder.AppendFormat("Successvol ingeschreven voor de volgende lessen:{0}", Environment.NewLine); builder.AppendFormat("{0}{1}", string.Join(Environment.NewLine, request.Success.Select(l => l.LessonStartTime.ToString("g", s_dutchCulture))), Environment.NewLine); builder.Append(Environment.NewLine); } if (request.Failed.Count > 0) { builder.AppendFormat("Kon niet inschrijven voor de volgende lessen:{0}", Environment.NewLine); builder.AppendFormat("{0}{1}", string.Join(Environment.NewLine, request.Failed.Select(l => l.LessonStartTime.ToString("g", s_dutchCulture))), Environment.NewLine); builder.Append(Environment.NewLine); } return(builder.ToString()); }