protected override void OnNextCore(IList <ParticipantRegistredMessage> messages) { var registration = _registrationRepository.GetById(messages.First().RegistrationId); var registeredParticipantIds = messages.Select(m => m.ParticipantId).ToArray(); var registeredParticipantNames = registration.RegistrationParticipants .Where(rp => registeredParticipantIds.Contains(rp.ResultingParticipantId.GetValueOrDefault())) .OrderBy(rp => rp.Name) .Select(rp => rp.Name); string[] messageLines = { $"Hallo {registration.Applicant.Givenname}", $"Vielen dank für das definitive Anmelden von {registeredParticipantNames.ToCommaSeparatedGrammaticalSequence()} an unserem Kursangebot. Schauen Sie jederzeit vorbei:", string.Format(_environmentOptions.Current().RegistrationFrontendUrl, registration.Id) }; _notificationService.SendNotification( registration.Applicant.PhoneNumber, Constants.NotificationIds.APPLICANT_REGISTRATION_COMPLETE, new[] { registration.Id.ToString() }, string.Join(Environment.NewLine, messageLines) ); _unitOfWork.Commit(); }
protected override void OnNextCore(CommittedCourseCreatedMessage message) { var instructor = _instructorRepository.GetById(message.InstructorId.Value); var course = _courseRepository.GetById(message.CourseId); var visibleFrom = DateTime.Now.Date.AddDays(-7); var visibleTo = DateTime.Now.Date.AddDays(14); IEnumerable <string> messageLines = new[] { $"Hallo {instructor.Givenname}" }; if (visibleFrom <= course.StartDate && course.StartDate <= visibleTo) { messageLines = messageLines.Concat(new[] { $"Du wurdest in der Woche {course.StartDate:dd. MMMM yyyy} für einen Kurs eingeteilt. Schaue bei Gelegenheit vorbei:", string.Format(_environmentOptions.Current().InstructorCourseDetailFrontendUrl, course.Id) }); } else { messageLines = messageLines.Concat(new[] { $"Du wurdest in der Woche {course.StartDate:dd. MMMM yyyy} für einen Kurs eingeteilt. Der Kurs kann noch ändern. Details sind 14 Tage vor dem Kursbeginn in der Leiterapp aufrufbar." }); } _notificationService.SendNotification( instructor.PhoneNumber, Constants.NotificationIds.INSTRUCTOR_COURSE_CREATED, new[] { course.Id.ToString() }, string.Join(Environment.NewLine, messageLines) ).Wait(); _unitOfWork.Commit(); }
private async Task NotifyAsync(RegistrationWithParticipant registrationParticipant) { using (var unitOfWork = _notificationUnitOfWork.Begin()) { string[] messageLines = { $"Hallo {registrationParticipant.Registration.Applicant.Givenname}", $"Für {registrationParticipant.RegistrationParticipant.Name} wurde eine passende Kursdurchführung gefunden. Schauen Sie bei Gelegenheit vorbei:", string.Format(_environmentOptions.Current().RegistrationFrontendUrl, registrationParticipant.Registration.Id) }; await unitOfWork.Dependent.SendNotification( registrationParticipant.Registration.Applicant.PhoneNumber, Constants.NotificationIds.ACCOMPLISH_DEMAND_FOR_REGISTRATION, new [] { NotificationSubject(registrationParticipant) }, string.Join(Environment.NewLine, messageLines) ); unitOfWork.Commit(); } }