示例#1
0
        public async Task <ActionResult> RegisterEmployer(AnonymousRegistrationEmployerVM model)
        {
            if (ModelState.IsValid)
            {
                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, model.UserPassword);

                if (result.Succeeded)
                {
                    await _userManager.AddToRoleAsync(identityUser.Id, "Employer");

                    var employer = new Employer
                    {
                        EmployerId      = identityUser.Id,
                        Adress          = model.Adress,
                        City            = model.City,
                        CompanyName     = model.CompanyName,
                        FirstName       = model.FirstName,
                        LastName        = model.LastName,
                        Prefix          = model.Prefix,
                        PostalCode      = model.PostalCode,
                        TelephoneNumber = model.TelephoneNumber
                    };
                    await _employerManager.Create(employer);

                    var alert = new Alert
                    {
                        AlertId       = Guid.NewGuid(),
                        EmployerId    = identityUser.Id,
                        AlertType     = AlertType.Employer_Create,
                        AlertCreateTS = DateTime.Now,
                        AlertUpdateTS = DateTime.Now,
                        UserId        = identityUser.Id
                    };
                    await _alertManager.CreateAsync(alert);

                    await SendEmail(identityUser, new RegistrationMailMessageBuilder(model.LoginName));

                    await SignInAsync(identityUser, true);

                    return(View("AccountConfirmation"));
                }
            }
            return(View(model));
        }