예제 #1
0
        private async Task SendClaimEmail([NotNull] ClaimEmailModel model, [NotNull] string actionName, string text = "")
        {
            var projectEmailEnabled = model.GetEmailEnabled();

            if (!projectEmailEnabled)
            {
                return;
            }

            IList <MailRecipient> recipients = model
                                               .GetRecipients()
                                               .Select(r => new MailRecipient(
                                                           r,
                                                           new Dictionary <string, string> {
                { changedFieldsKey, GetChangedFieldsInfoForUser(model, r) }
            }))
                                               .ToList();

            await SendEmail(recipients, $"{model.ProjectName}: {model.Claim.Name}, игрок {model.GetPlayerName()}",
                            $@"Добрый день, {MailGunExts.MailGunRecipientName},
Заявка {model.Claim.Name} игрока {model.Claim.Player.DisplayName} {actionName} {model.GetInitiatorString()}
{text}

{MailGunExts.GetUserDependentValue(changedFieldsKey)}
{model.Text.Contents}

{model.Initiator.DisplayName}

Чтобы ответить на комментарий, перейдите на страницу заявки: {_uriService.Get(model.Claim.CommentDiscussion)}
", model.Initiator.ToRecipient());
        }
예제 #2
0
        public async Task Email(FieldsChangedEmail model)
        {
            var projectEmailEnabled = model.GetEmailEnabled();

            if (!projectEmailEnabled)
            {
                return;
            }

            IList <MailRecipient> recipients = model
                                               .GetRecipients()
                                               .Select(r => new MailRecipient(
                                                           r,
                                                           new Dictionary <string, string> {
                { changedFieldsKey, GetChangedFieldsInfoForUser(model, r) }
            }))
                                               .Where(r => !string.IsNullOrEmpty(r.RecipientSpecificValues[changedFieldsKey]))
                                               //don't email if no changes are visible to user rights
                                               .ToList();

            Func <bool, string> target = (forMessageBody) => model.IsCharacterMail
        ? $@"персонаж{(forMessageBody ? "a" : "")}  {model.Character.CharacterName}"
        : $"заявк{(forMessageBody ? "и" : "a")} {model.Claim.Name} {(forMessageBody ? $", игрок {model.Claim.Player.DisplayName}" : "")}";


            string linkString = model.IsCharacterMail
        ? _uriService.Get(model.Character)
        : _uriService.Get(model.Claim);

            if (recipients.Any())
            {
                await SendEmail(recipients, $"{model.ProjectName}: {target(false)}",
                                $@"Добрый день, {MailGunExts.MailGunRecipientName},
Данные {target(true)} были изменены. Новые значения:

{MailGunExts.GetUserDependentValue(changedFieldsKey)}

Для просмотра всех данных перейдите на страницу {(model.IsCharacterMail ? "персонажа" : "заявки")}: {linkString}

{model.Initiator.DisplayName}

", model.Initiator.ToRecipient());
            }
        }