Beispiel #1
0
        /// <summary>
        /// Создает код приглашения указывающий
        /// на нового пользователя из <paramref name="model" />
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static InviteCode CreateInviteCode(SendInviteModel model)
        {
            User user = new User()
            {
                UserName     = model.Email,
                UserInfo     = new UserInfo(),
                AccessRoleId = model.RoleId
            };

            StatusService.ChangeStatus(user, UserStatusType.Invite, null, "Invite created");

            InviteCode invite = new InviteCode()
            {
                User     = user,
                Code     = PasswordService.GeneratePasswordString(30),
                ActiveTo = DateTime.Now.AddDays(Properties.Settings.Default.DaysForInviteToLive)
            };

            return(invite);
        }
Beispiel #2
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"));
            }
        }
Beispiel #3
0
 public IHttpActionResult SendInvite([FromBody] SendInviteModel model)
 {
     return(Ok(InviteServ.SendInvite(model).Response()));
 }