コード例 #1
0
        private async Task SendCompanyOnboardingEmailAsync(InfoSessionFollowUpSpecDto specDto, OrganizationDto organization)
        {
            var receiversList = specDto.Receivers.ToList();

            for (int i = 0; i < receiversList.Count; i++)
            {
                var OrganizationShortcutName = organization.OrganizationShortcutName;
                if (String.IsNullOrEmpty(OrganizationShortcutName))
                {
                    OrganizationShortcutName = " ";
                }
                var parameters = new Dictionary <string, string>
                {
                    { "CompanyShortcut", OrganizationShortcutName },
                    { "supportPerson", organization.SupportPerson.Name }
                };

                await _emailSenderService.SendOnboardingEmailAsync(
                    receiversList[i],
                    (receiversList.Count > 1 && i == 0)?null : specDto.CcReceivers,
                    organization.OrganizationTypeId,
                    parameters)
                .ConfigureAwait(false);
            }
        }
コード例 #2
0
 private async Task SendInfoSessionFollowUpEmailAsync(InfoSessionFollowUpSpecDto specDto, string generatedToken)
 {
     foreach (var receiver in specDto.Receivers)
     {
         await _emailSenderService.SendInfoSessionFollowUpEmailAsync(receiver, specDto.Message, generatedToken)
         .ConfigureAwait(false);
     }
 }
コード例 #3
0
        public async Task <IActionResult> SendFollowUpEmailAsync(InfoSessionFollowUpSpecDto specDto)
        {
            await _followUpService.SendInfoSessionFollowUpEmailAsync(specDto).ConfigureAwait(false);

            if (!_followUpService.ValidationDictionary.GetModelState().IsValid)
            {
                return(BadRequest(new { errors = _followUpService.ValidationDictionary.GetErrorMessages() }));
            }

            return(NoContent());
        }
コード例 #4
0
        private async Task SendSMEOnboardingEmailAsync(InfoSessionFollowUpSpecDto specDto, OrganizationDto organization)
        {
            foreach (var receiver in specDto.Receivers)
            {
                var OrganizationShortcutName = organization.OrganizationShortcutName;
                if (String.IsNullOrEmpty(OrganizationShortcutName))
                {
                    OrganizationShortcutName = " ";
                }
                var parameters = new Dictionary <string, string>
                {
                    { "areaPharmacy", organization.Area },
                    { "CompanyShortcut", OrganizationShortcutName },
                    { "firstTestingDate", organization.FirstTestTimestamp.Value.ToString("d", CultureInfo.CreateSpecificCulture("de-CH")) },
                    { "TestingDay", organization.FirstTestTimestamp.Value.ToString("dddd", CultureInfo.CreateSpecificCulture("de-CH")) }
                };

                await _emailSenderService.SendOnboardingEmailAsync(receiver, null, organization.OrganizationTypeId, parameters).ConfigureAwait(false);
            }
        }
コード例 #5
0
        private async Task SendCampOnboardingEmailAsync(InfoSessionFollowUpSpecDto specDto, OrganizationDto organization)
        {
            var parameters = new Dictionary <string, string>
            {
                { "numberOfTestParticipants", organization.NumberOfSamples.ToString(CultureInfo.InvariantCulture) },
                { "supportPerson", organization.SupportPerson.Name },
                { "OrgContactPersonName", organization.Contacts.First(c => c.Id == specDto.OrganizationContactPersonId).Name },
                { "OrgContactPersonEmail", organization.Contacts.First(c => c.Id == specDto.OrganizationContactPersonId).Email }
            };

            var receiversList = specDto.Receivers.ToList();

            for (int i = 0; i < receiversList.Count; i++)
            {
                await _emailSenderService.SendOnboardingEmailAsync(
                    receiversList[i],
                    (receiversList.Count > 1 && i == 0)?null : specDto.CcReceivers,
                    organization.OrganizationTypeId,
                    parameters)
                .ConfigureAwait(false);
            }
        }
コード例 #6
0
        public async Task SendInfoSessionFollowUpEmailAsync(InfoSessionFollowUpSpecDto specDto)
        {
            if (specDto == default)
            {
                throw new ArgumentNullException(nameof(specDto));
            }

            var organization = await _organizationsRepository
                               .GetByIdAsync(specDto.OrganizationId).ConfigureAwait(false);

            if (organization.OrganizationTypeId == _smeOrganizationTypeId)
            {
                if (!ValidateOrganizationForOnboarding(organization, specDto.OrganizationContactPersonId))
                {
                    return;
                }

                await SendSMEOnboardingEmailAsync(specDto, organization).ConfigureAwait(false);

                await _organizationsRepository.UpdateIsOnboardingEmailSent(true, organization.Id).ConfigureAwait(false);
            }
            else if (organization.OrganizationTypeId == _companyOrganizationTypeId)
            {
                if (!ValidateOrganizationForOnboarding(organization, specDto.OrganizationContactPersonId))
                {
                    return;
                }

                await SendCompanyOnboardingEmailAsync(specDto, organization).ConfigureAwait(false);

                await _organizationsRepository.UpdateIsOnboardingEmailSent(true, organization.Id).ConfigureAwait(false);
            }
            else if (organization.OrganizationTypeId == _campOrganizationTypeId)
            {
                if (!ValidateOrganizationForOnboarding(organization, specDto.OrganizationContactPersonId))
                {
                    return;
                }

                await SendCampOnboardingEmailAsync(specDto, organization).ConfigureAwait(false);

                await _organizationsRepository.UpdateIsOnboardingEmailSent(true, organization.Id).ConfigureAwait(false);
            }
            else
            {
                if (string.IsNullOrEmpty(specDto.Message))
                {
                    ValidationDictionary.AddModelError("Message", "Message must not be null or empty space");
                    return;
                }

                if (!ValidateOrganizationForNewFollowUp(organization))
                {
                    return;
                }

                string generatedToken = await AddFollowUpAsync(organization).ConfigureAwait(false);

                await SendInfoSessionFollowUpEmailAsync(specDto, generatedToken).ConfigureAwait(false);
            }
        }