/// <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); }
/// <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")); } }
public IHttpActionResult SendInvite([FromBody] SendInviteModel model) { return(Ok(InviteServ.SendInvite(model).Response())); }