Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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());
        }