예제 #1
0
        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"
            }));
        }
예제 #2
0
        /// <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());
        }
예제 #3
0
        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));
        }