/// <summary>
        /// Формирует InviteEmailModel из <paramref name="invite"/>
        /// </summary>
        /// <param name="invite"></param>
        public static InviteEmailModel GetInviteEmailModel(InviteCode invite)
        {
            InviteEmailModel toReturn = new InviteEmailModel();

            toReturn.MailTo.Add(invite.User.UserName);
            toReturn.Caption = "Invite";
            toReturn.Link    = invite.Code;
            return(toReturn);
        }
        public void Invite(string email)
        {
            var mcUser = _context.GetUsers(email).SingleOrDefault();

            if (mcUser == null)
            {
                throw new McUserNotFoundException();
            }
            var inviteEmailModel = new InviteEmailModel(mcUser);

            _inviteEmailService.Send(inviteEmailModel);
            if (mcUser.InviteDateUtc == null)
            {
                mcUser.InviteDateUtc = _clock.UtcNow;
                _context.Save();
            }
        }
Exemple #3
0
        public void Constructor_Test()
        {
            var user = new User()
            {
                Email     = "actual email address",
                FirstName = "FirstName  there are spaces at the end             "
            };

            var personalisation = new Dictionary <string, dynamic>()
            {
                { "first_name", user.FirstName.Trim() }
            };

            var model = new InviteEmailModel(user);

            Assert.AreEqual(user.Email, model.EmailAddress);
            CollectionAssert.AreEqual(personalisation, model.Personalisation);
        }
Exemple #4
0
        public void Send()
        {
            var user = new User()
            {
                Email     = "actual email address",
                FirstName = "FirstName  there are spaces at the end             "
            };

            var personalisation = new Dictionary <string, dynamic>()
            {
                { "first_name", user.FirstName.Trim() }
            };

            var model = new InviteEmailModel(user);

            _service.Send(model);

            _mockNotificationClientWrapper.Verify(x => x.SendEmail(user.Email, _templateId, personalisation, null, null), Times.Once);
        }
        private async Task SendInviteEmail(InviteEmailModel email, string body)
        {
            var messageTemplate = $@"{StandartGreeting()}

{body}

Вы можете управлять приглашениями на странице Вашей заявки {{0}}

{email.Initiator.GetDisplayName()}

";

            var sendTasks = email.Recipients.Select(emailRecipient => MessageService.SendEmail($"{email.ProjectName}: приглашения к проживанию",
                                                                                               new MarkdownString(String.Format(messageTemplate, email.GetClaimByPerson(emailRecipient) == null ? "" : _uriService.Get(email.GetClaimByPerson(emailRecipient)))),
                                                                                               email.Initiator.ToRecepientData(),
                                                                                               emailRecipient.ToRecepientData()))
                            .ToList();

            await Task.WhenAll(sendTasks).ConfigureAwait(false);
        }
Exemple #6
0
        /// <summary>
        /// Посылает приглашение на регистрацию указанному пользователю
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public ServiceResponce SendInvite(SendInviteModel model)
        {
            if (UserRep.CountByCredentails(model.Email, null) != 0)
            {
                return(ServiceResponce
                       .FromFailed()
                       .Add("error", "User with Email " + model.Email + " already exist in system"));
            }
            InviteCode Invite = SendInviteModelHelper.CreateInviteCode(model);

            if (InviteRep.Add(Invite))
            {
                // Создаем задачу отправки сообщения в фоне и запускаем ее
                new Thread(send =>
                {
                    InviteEmailModel InviteEmailModel = InviteEmailModelHelper.GetInviteEmailModel(Invite);
                    string inviteText = TemplateServ
                                        .Run("Emails/Invite", typeof(InviteEmailModel), InviteEmailModel);
                    if (!EmailService.SendMail(InviteEmailModel, inviteText))
                    {
                        StatusService.ChangeStatus(Invite.User, UserStatusType.Invite, null, "Invite Email was not delivered");
                    }
                    else
                    {
                        StatusService.ChangeStatus(Invite.User, UserStatusType.Invite, null, "Invite Email was delivered");
                    }
                    InviteRep.Update(Invite);
                }).Start();

                return(ServiceResponce
                       .FromSuccess()
                       .Result("invite for user sended"));
            }
            else
            {
                return(ServiceResponce
                       .FromFailed()
                       .Add("error", "error saving invited user in DB"));
            }
        }