public async Task <ActionResult> PasswordReset(Guid?id) { IdentityUser user; if (id == null || id.Value == Guid.Empty || (user = await _userManager.FindByIdAsync(id.Value)) == null) { return(View(new AdminResetEmployerPasswordViewModel { ResultMessage = "Can't find user!" })); } var token = await _userManager.GeneratePasswordResetTokenAsync(id.Value); if (String.IsNullOrWhiteSpace(token)) { return(View(new AdminResetEmployerPasswordViewModel { ResultMessage = "Server probleem" })); } var url = Url.Action("PasswordRecovery", "Account", new { userId = id.Value, token = token }, Request.Url.Scheme); var message = new ForgotPasswordMailMessageBuilder(url); var result = await _mailingService.SendMailAsync(message.Body, message.Subject, user.Email); return(View(new AdminResetEmployerPasswordViewModel { ResultMessage = result.HasError ? "Can't send email. Try later or check an email" : "Successfully sent an email" })); }
/// <summary> /// Sends mails with reports to recievers /// </summary> /// <param name="word">Word doc</param> /// <param name="pdf">Pdf doc</param> /// <returns>Operation result</returns> private async Task <WorkResult> SendMailsAsync(byte[] word, string wordName, byte[] pdf, string pdfName) { var adminMail = new ReportCompltdAdminMessageBuilder(_employee); var employerMail = new ReportCompltdEmplMessageBuilder(_employee); var admins = await _adminManager.GetAll(); var result = await _mailService.SendMailAsync(adminMail.Body, adminMail.Subject, word, wordName, admins.Select(a => a.User.Email).ToArray()); if (!result.HasError) { result = await _mailService.SendMailAsync(employerMail.Body, employerMail.Subject, pdf, pdfName, _employee.Employer.User.Email); } if (result.HasError) { return(WorkResult.Failed(result.ErrorMessage)); } return(WorkResult.Success()); }
public async Task <ActionResult> RegisterEmployer(AdminRegisterEmployerViewModel model) { var password = Membership.GeneratePassword(12, 4); if (ModelState.IsValid) { var employer = MapRegisterViewModelToEmployer(model); var identityUser = new IdentityUser { UserName = model.LoginName, Email = model.EmailAdress }; var usr = await userManager.FindByEmailAsync(model.EmailAdress); if (usr != null) { ModelState.AddModelError("", EMAILADDRESS_IS_IN_USE_ERROR); return(View(model)); } usr = await userManager.FindByNameAsync(model.LoginName); if (usr != null) { ModelState.AddModelError("", USERNAME_IS_IN_USE_ERROR); return(View(model)); } var result = await userManager.CreateAsync(identityUser, password); if (result.Succeeded) { await userManager.AddToRoleAsync(identityUser.Id, "Employer"); employer.EmployerId = identityUser.Id; await employerManager.Create(employer); var user = await adminManager.GetBaseUserByName(User.Identity.Name); var alert = new Alert(); { alert.AlertId = Guid.NewGuid(); alert.EmployerId = employer.EmployerId; alert.AlertType = AlertType.Employer_Create; alert.AlertIsDeleted = false; alert.AlertCreateTS = DateTime.Now; alert.AlertUpdateTS = DateTime.Now; alert.UserId = user.UserId; }; await alertManager.CreateAsync(alert); var messageInfo = new AdminRegEmployerMessageBuilder(model.LoginName, password); var mailingResult = await mailingService.SendMailAsync(messageInfo.Body, messageInfo.Subject, model.EmailAdress); return(RedirectToAction("Index", "Admin")); } } return(View(model)); }