Ejemplo n.º 1
0
        public ActionResult Register()
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Login", "Account"));
            }


            if (User.IsInRole("admin"))
            {
                var viewModel = new RegisterViewModel
                {
                    Roles = GetRoles(UserRole.Admin)
                };

                return(View(viewModel));
            }
            else if (User.IsInRole("staff"))
            {
                var viewModel = new TraineeRegisterViewModel
                {
                    Roles      = GetRoles(UserRole.Staff),
                    UserRoleId = Convert.ToInt32(UserRole.Trainee),
                    Deparments = _context.Departments.ToList()
                };

                return(View("TraineeRegister", viewModel));
            }

            return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
        }
Ejemplo n.º 2
0
        public async Task <ActionResult> RegisterForTrainee(TraineeRegisterViewModel model)
        {
            if (_context.Users.Any(p => p.UserName == model.UserName))
            {
                this.AddNotification("Sorry, this username is already available", NotificationType.ERROR);
                return(RedirectToAction("Register"));
            }

            var errors = ModelState
                         .Where(x => x.Value.Errors.Count > 0)
                         .Select(x => new { x.Key, x.Value.Errors })
                         .ToArray();

            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.UserName, Email = model.Email
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    await UserManager.AddToRoleAsync(user.Id, UserRole.Trainee.ToString());

                    model.TraineeInfo.UserId       = user.Id;
                    model.TraineeInfo.DepartmentId = model.DepartmentId;
                    model.TraineeInfo.Department   = _context.Departments.SingleOrDefault(p => p.Id == model.DepartmentId);

                    _context.UserInfoes.Add(model.TraineeInfo);
                    _context.SaveChanges();

                    this.AddNotification("An account has been created!", NotificationType.SUCCESS);
                    return(RedirectToAction("Register", "Account"));
                }
                AddErrors(result);
            }

            return(RedirectToAction("Register"));
        }