public ActionResult Admin()
        {
            var departmentId        = User.Identity.GetDepartmentId();
            var UsersContext        = new ApplicationDbContext();
            var collectionPointList = new List <string>()
            {
                "Administration Building",
                "Science School",
                "Management School",
                "Medical School",
                "Engineering School",
                "University Hospital"
            };

            var adminViewModel = new DepartmentAdminViewModel()
            {
                User = UsersContext.Users
                       .Where(x => x.DepartmentId == departmentId)
                       .Where(x => x.Roles.Any(r => r.RoleId == UserRoles.Representative))
                       .FirstOrDefault(),
                CollectionPoint  = departmentService.Get(departmentId).DepartmentCollectionPoint,
                CollectionPoints = collectionPointList,
                Users            = UsersContext.Users
                                   .Where(x => x.DepartmentId == departmentId)
                                   .Where(x => x.Roles.Any(r => r.RoleId == UserRoles.Representative || r.RoleId == UserRoles.Employee)).ToList()
            };

            return(View(adminViewModel));
        }
        public ActionResult SaveAdmin(DepartmentAdminViewModel viewModel)
        {
            ApplicationDbContext context = new ApplicationDbContext();
            var departmentId             = User.Identity.GetDepartmentId();
            var userManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context));

            //Update department collection point
            var department = departmentService.Get(departmentId);

            department.DepartmentCollectionPoint = viewModel.CollectionPoint;
            departmentService.Save(department);

            //Change current representative to employee role
            var user = context.Users
                       .Where(x => x.DepartmentId == departmentId)
                       .Where(x => x.Roles.Any(r => r.RoleId == UserRoles.Representative))
                       .FirstOrDefault();

            userManager.RemoveFromRole(user.Id, "Representative");
            userManager.AddToRole(user.Id, "Employee");

            //Change new representative
            var newRepresentative = userService.FindUserByEmail(viewModel.User.Email);

            userManager.RemoveFromRole(newRepresentative.Id, "Employee");
            userManager.AddToRole(newRepresentative.Id, "Representative");

            context.SaveChanges();

            return(RedirectToAction("Index", "Home"));
        }