Ejemplo n.º 1
0
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            if (await UserManager.FindByNameAsync(model.Email) != null)
            {
                ModelState.AddModelError("email_invalid", "Email đã tồn tại");
                return(View(model));
            }

            var user = new AppUser
            {
                UserName  = model.Email,
                Email     = model.Email,
                FirstName = model.FirstName,
                LastName  = model.LastName
            };

            var result = await UserManager.CreateAsync(user, model.Password);

            if (result.Succeeded)
            {
                await UserManager.AddToRolesAsync(user.Id, "Member");

                //                await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
                TempData["RegisterSuccessed"] = true;
                return(RedirectToAction("Login"));
            }

            return(View(model));
        }
Ejemplo n.º 2
0
        public async Task <ActionResult> Edit(RoleModificationModel model)
        {
            IdentityResult result;

            if (ModelState.IsValid)
            {
                foreach (string userId in model.IdsToAdd ?? new string[] { })
                {
                    result = await UserManager.AddToRolesAsync(userId, model.RoleName);

                    if (!result.Succeeded)
                    {
                        return(View("Error", result.Errors));
                    }
                }
                foreach (string userId in model.IdsToDelete ?? new string[] { })
                {
                    result = await UserManager.RemoveFromRolesAsync(userId, model.RoleName);

                    if (!result.Succeeded)
                    {
                        return(View("Error", result.Errors));
                    }
                }
                var role = await RoleManager.FindByNameAsync(model.RoleName);

                RoleManager.AddRolePermission(role, model.PermissionIds, HttpContext.GetOwinContext().Get <AppIdentityDbContext>());
                RoleManager.Update(role);
                return(RedirectToAction("Index"));
            }
            return(View("Errors", new string[] { "Role Not Found" }));
        }
Ejemplo n.º 3
0
        //[Permission(Action = "Update", Function = "USER")]
        public async Task <HttpResponseMessage> UpdateProfile(HttpRequestMessage request, AppUserViewModel applicationUserViewModel)
        {
            if (ModelState.IsValid)
            {
                var appUser = await AppUserManager.FindByIdAsync(applicationUserViewModel.Id);

                try
                {
                    appUser.UpdateUser(applicationUserViewModel);
                    var result = await AppUserManager.UpdateAsync(appUser);

                    if (result.Succeeded)
                    {
                        var userRoles = await AppUserManager.GetRolesAsync(appUser.Id);

                        var selectedRole = applicationUserViewModel.Roles.ToArray();
                        selectedRole = selectedRole ?? new string[] { };
                        await AppUserManager.RemoveFromRolesAsync(appUser.Id, userRoles.ToArray());

                        await AppUserManager.AddToRolesAsync(appUser.Id, selectedRole.ToArray());

                        return(request.CreateResponse(HttpStatusCode.OK, applicationUserViewModel));
                    }
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, Common.Constants.MessageSystem.MessageDuplicateEmail));
                }
                catch (NameDuplicatedException dex)
                {
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, dex.Message));
                }
            }
            return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
        }
Ejemplo n.º 4
0
        public async Task <RepositoryResult <IList <string> > > SetRoleByUserIdAsync(int userId, IList <string> roleList, bool isAdmin = false)
        {
            try
            {
                if (userId <= 0 || roleList == null)
                {
                    return(new RepositoryResult <IList <string> >(HttpStatusCode.BadRequest));
                }
                var user = AppUserManager.FindById(userId);
                if (user == null)
                {
                    return(new RepositoryResult <IList <string> >(HttpStatusCode.NotFound));
                }

                var currentRoles = await AppUserManager.GetRolesAsync(user.Id);

                if (!isAdmin)
                {
                    currentRoles = currentRoles.Where(rl => rl != "admin").ToList();
                }

                var rolesNotExists = roleList.Except(AppRoleManager.Roles.Select(x => x.Name)).ToArray();
                if (rolesNotExists.Count() > 0)
                {
                    return(new RepositoryResult <IList <string> >(HttpStatusCode.BadRequest, string.Format("ロール'{0}'は存在していません。", string.Join(",", rolesNotExists))));
                }

                IdentityResult removeResult = await AppUserManager.RemoveFromRolesAsync(user.Id, currentRoles.ToArray());

                if (!removeResult.Succeeded)
                {
                    return(new RepositoryResult <IList <string> >(HttpStatusCode.BadRequest, "権限の剥奪に失敗しました。")
                    {
                        identityResult = removeResult
                    });
                }

                IdentityResult addResult = await AppUserManager.AddToRolesAsync(user.Id, roleList.ToArray());

                if (!addResult.Succeeded)
                {
                    return(new RepositoryResult <IList <string> >(HttpStatusCode.BadRequest, "権限の付与に失敗しました。")
                    {
                        identityResult = addResult
                    });
                }

                return(new RepositoryResult <IList <string> >(HttpStatusCode.OK, roleList));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public async Task <IHttpActionResult> AssignRolesToUser([FromUri] string id, [FromBody] string[] rolesToAssign)
        {
            try
            {
                // Find brugeren
                var appUser = await AppUserManager.FindByIdAsync(id);

                // Hvis brugere ikke findes, returneres Not Found
                if (appUser == null)
                {
                    return(NotFound());
                }

                // Hent alle brugerens roller
                var currentRoles = await AppUserManager.GetRolesAsync(appUser.Id);

                // Find eventuelt ikke-eksisterende roller i det tilsendte (de tilsendte undtagen dem der findes i systemet)
                var rolesNotExists = rolesToAssign.Except(AppRoleManager.Roles.Select(x => x.Name)).ToArray();

                // Hvis der er roller der ikke findes i system returneres Bad Request
                if (rolesNotExists.Count() > 0)
                {
                    ModelState.AddModelError("", string.Format("Rollerne '{0}' eksisterer ikke i systemet", string.Join(",", rolesNotExists)));
                    return(BadRequest(ModelState));
                }

                // Fjern brugerens roller
                IdentityResult removeResult = await AppUserManager.RemoveFromRolesAsync(appUser.Id, currentRoles.ToArray());

                // Hvis de ikke kan fjernes, returnes Bad Reqeust
                if (!removeResult.Succeeded)
                {
                    ModelState.AddModelError("", "Roller kunne ikke fjernes");
                    return(BadRequest(ModelState));
                }

                // Tilføj de nye roller
                IdentityResult addResult = await AppUserManager.AddToRolesAsync(appUser.Id, rolesToAssign);

                // Hvis de ikke kan tilføjes, returneres Bad Request
                if (!addResult.Succeeded)
                {
                    ModelState.AddModelError("", "Roller kunne ikke tilføjes");
                    return(BadRequest(ModelState));
                }

                return(Ok());
            }
            catch (Exception e)
            {
                return(InternalServerError(e));
            }
        }
Ejemplo n.º 6
0
        public async Task <HttpResponseMessage> Update(HttpRequestMessage request, AppUserViewModel applicationUserViewModel)
        {
            var identity = (ClaimsIdentity)User.Identity;
            IEnumerable <Claim> claims = identity.Claims;

            if (ModelState.IsValid)
            {
                var appUser = await AppUserManager.FindByIdAsync(applicationUserViewModel.Id);

                try
                {
                    appUser.UpdateUser(applicationUserViewModel);
                    var result = await AppUserManager.UpdateAsync(appUser);

                    if (result.Succeeded)
                    {
                        var userRoles = await AppUserManager.GetRolesAsync(appUser.Id);

                        await AppUserManager.RemoveFromRolesAsync(appUser.Id, userRoles.ToArray());

                        var selectedRole = applicationUserViewModel.Roles.ToArray();

                        await AppUserManager.AddToRolesAsync(appUser.Id, applicationUserViewModel.Roles.ToArray());

                        Log log = new Log()
                        {
                            AppUserId = claims.FirstOrDefault().Value,
                            Content   = Notification.UPDATE_USER,
                            Created   = DateTime.Now
                        };
                        _logService.Create(log);
                        _logService.Save();
                        return(request.CreateResponse(HttpStatusCode.OK, applicationUserViewModel));
                    }
                    else
                    {
                        return(request.CreateErrorResponse(HttpStatusCode.BadRequest, string.Join(",", result.Errors)));
                    }
                }
                catch (NameDuplicatedException dex)
                {
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, dex.Message));
                }
            }
            else
            {
                return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }
        }
Ejemplo n.º 7
0
        public async Task <ContentResult> EditUser(UserViewModel user)
        {
            string json;

            //user.Roles Not a list or rather a list of one comma seperated string
            var incRoles = user.Roles.FirstOrDefault().Split(',').ToArray();

            var deletedRoles = _userManager.GetRolesAsync(user.Id).Result.Except(incRoles);

            var addedRoles = incRoles.Except(_userManager.GetRolesAsync(user.Id).Result);

            var userDb = _userManager.FindByIdAsync(user.Id).Result;

            if (userDb != null)
            {
                userDb.Email    = user.Email;
                userDb.UserName = user.UserName;
                await _userManager.RemoveFromRolesAsync(userDb.Id, deletedRoles.ToArray());

                await _userManager.AddToRolesAsync(userDb.Id, addedRoles.ToArray());

                await _userManager.UpdateAsync(userDb);
            }

            ModelState.Clear();

            if (ModelState.IsValid)
            {
                json = JsonConvert.SerializeObject(new
                {
                    id      = userDb.Id,
                    success = true,
                    message = "Changes saved successfully."
                });
            }
            else
            {
                json = JsonConvert.SerializeObject(new
                {
                    id      = 0,
                    success = false,
                    message = "Failed to save the changes."
                });
            }

            return(Content(json, "application/json"));
        }
Ejemplo n.º 8
0
        public async Task <HttpResponseMessage> Create(HttpRequestMessage request, AppUserViewModel applicationUserViewModel)
        {
            if (ModelState.IsValid)
            {
                var identity = (ClaimsIdentity)User.Identity;
                IEnumerable <Claim> claims = identity.Claims;
                var newAppUser             = new AppUser();
                newAppUser.UpdateUser(applicationUserViewModel);
                try
                {
                    newAppUser.Id = Guid.NewGuid().ToString();
                    var result = await AppUserManager.CreateAsync(newAppUser, applicationUserViewModel.Password);

                    if (result.Succeeded)
                    {
                        var roles = applicationUserViewModel.Roles.ToArray();
                        await AppUserManager.AddToRolesAsync(newAppUser.Id, roles);

                        Log log = new Log()
                        {
                            AppUserId = claims.FirstOrDefault().Value,
                            Content   = Notification.CREATE_USER,
                            Created   = DateTime.Now
                        };
                        _logService.Create(log);
                        _logService.Save();
                        return(request.CreateResponse(HttpStatusCode.OK, applicationUserViewModel));
                    }
                    else
                    {
                        return(request.CreateErrorResponse(HttpStatusCode.BadRequest, string.Join(",", result.Errors)));
                    }
                }
                catch (NameDuplicatedException dex)
                {
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, dex.Message));
                }
                catch (Exception ex)
                {
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message));
                }
            }
            else
            {
                return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }
        }
        public async Task <HttpResponseMessage> Update(HttpRequestMessage request, AppUserViewModel applicationUserViewModel)
        {
            if (ModelState.IsValid)
            {
                var appUser = await AppUserManager.FindByIdAsync(applicationUserViewModel.Id);

                try
                {
                    appUser.UpdateUser(applicationUserViewModel);
                    //string resetToken = await AppUserManager.GeneratePasswordResetTokenAsync(appUser.Id);
                    //var passwordResult = await AppUserManager.ResetPasswordAsync(appUser.Id, resetToken, applicationUserViewModel.Password);
                    var result = await AppUserManager.UpdateAsync(appUser);

                    if (result.Succeeded)
                    {
                        var userRoles = await AppUserManager.GetRolesAsync(appUser.Id);

                        var selectedRoles = applicationUserViewModel.Roles.ToArray();
                        selectedRoles = selectedRoles ?? new string[] { };

                        await AppUserManager.AddToRolesAsync(appUser.Id, selectedRoles.Except(userRoles).ToArray());

                        return(request.CreateResponse(HttpStatusCode.OK, applicationUserViewModel));
                    }
                    else
                    {
                        return(request.CreateErrorResponse(HttpStatusCode.BadRequest, string.Join(",", result.Errors)));
                    }
                }
                catch (NameDuplicatedException dex)
                {
                    LogError(dex);
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, dex.Message));
                }
                catch (Exception ex)
                {
                    LogError(ex);
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message));
                }
            }
            else
            {
                return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }
        }
Ejemplo n.º 10
0
        public async Task <HttpResponseMessage> Update(HttpRequestMessage request, ApplicationUserViewModel applicationUserViewModel)
        {
            if (ModelState.IsValid)
            {
                AppUser userDb = await AppUserManager.FindByIdAsync(applicationUserViewModel.Id);

                try
                {
                    if (userDb.Avatar != applicationUserViewModel.Avatar && userDb.Avatar != null)
                    {
                        DeleteElementImage(userDb.Avatar);
                    }
                    userDb.UpdateUser(applicationUserViewModel);
                    var result = await AppUserManager.UpdateAsync(userDb);

                    if (result.Succeeded)
                    {
                        var roles = await AppUserManager.GetRolesAsync(applicationUserViewModel.Id);

                        await AppUserManager.RemoveFromRolesAsync(applicationUserViewModel.Id, roles.ToArray());

                        var selectRoles = applicationUserViewModel.Roles.ToArray();
                        selectRoles = selectRoles ?? new string[] { };
                        await AppUserManager.AddToRolesAsync(applicationUserViewModel.Id, selectRoles);


                        return(request.CreateResponse(HttpStatusCode.Created, applicationUserViewModel));
                    }
                    else
                    {
                        return(request.CreateErrorResponse(HttpStatusCode.BadGateway, string.Join(",", result.Errors)));
                    }
                }
                catch (NameDuplicatedException dex)
                {
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, dex.Message));
                }
            }
            else
            {
                return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }
        }
Ejemplo n.º 11
0
        public async Task <HttpResponseMessage> Update(HttpRequestMessage request, AppUserViewModel applicationUserViewModel)
        {
            if (ModelState.IsValid)
            {
                var appUser = await AppUserManager.FindByIdAsync(applicationUserViewModel.Id);

                try
                {
                    appUser.UpdateUser(applicationUserViewModel);
                    var result = await AppUserManager.UpdateAsync(appUser);

                    if (result.Succeeded)
                    {
                        var userRoles = await AppUserManager.GetRolesAsync(appUser.Id);

                        foreach (var role in userRoles)
                        {
                            await AppUserManager.RemoveFromRoleAsync(appUser.Id, role);
                        }
                        var selectedRole = applicationUserViewModel.Roles.ToArray();
                        selectedRole = selectedRole ?? new string[] { };
                        await AppUserManager.AddToRolesAsync(appUser.Id, selectedRole);

                        return(request.CreateResponse(HttpStatusCode.OK, applicationUserViewModel));
                    }
                    else
                    {
                        return(request.CreateErrorResponse(HttpStatusCode.BadRequest, string.Join(",", result.Errors)));
                    }
                }
                catch (NameDuplicatedException dex)
                {
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, dex.Message));
                }
            }
            else
            {
                return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }
        }
        public async Task <HttpResponseMessage> Create(HttpRequestMessage request, AppUserViewModel applicationUserViewModel)
        {
            if (ModelState.IsValid)
            {
                var newAppUser = new AppUser();
                newAppUser.UpdateUser(applicationUserViewModel);
                try
                {
                    newAppUser.Id = Guid.NewGuid().ToString();
                    var result = await AppUserManager.CreateAsync(newAppUser, applicationUserViewModel.Password);

                    if (result.Succeeded)
                    {
                        var roles = applicationUserViewModel.Roles.ToArray();
                        await AppUserManager.AddToRolesAsync(newAppUser.Id, roles);

                        return(request.CreateResponse(HttpStatusCode.OK, applicationUserViewModel));
                    }
                    else
                    {
                        return(request.CreateErrorResponse(HttpStatusCode.BadRequest, string.Join(",", result.Errors)));
                    }
                }
                catch (NameDuplicatedException dex)
                {
                    LogError(dex);
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, dex.Message));
                }
                catch (Exception ex)
                {
                    LogError(ex);
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message));
                }
            }
            else
            {
                return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }
        }
        public async Task <IHttpActionResult> AssignRolesToUser([FromUri] string id, [FromBody] string[] rolesToAssign)
        {
            var appUser = await AppUserManager.FindByIdAsync(id);

            if (appUser == null)
            {
                return(NotFound());
            }

            var currentRoles = await AppUserManager.GetRolesAsync(appUser.Id);

            var roleNotExists = rolesToAssign.Except(AppRoleManager.Roles.Select(x => x.Name)).ToArray();


            if (roleNotExists.Any())
            {
                ModelState.AddModelError("", $"those roles not exist in the systeme {roleNotExists}");
                return(BadRequest(ModelState));
            }

            IdentityResult removeResult = await AppUserManager.RemoveFromRoleAsync(appUser.Id, currentRoles.ToArray().ToString());

            if (!removeResult.Succeeded)
            {
                ModelState.AddModelError("", "Failed to remove roles dor user");
                return(BadRequest(ModelState));
            }


            IdentityResult addResult = await AppUserManager.AddToRolesAsync(appUser.Id, rolesToAssign);

            if (!addResult.Succeeded)
            {
                ModelState.AddModelError("", "Failed to Add roles for user");
                return(BadRequest(ModelState));
            }

            return(Ok());
        }
Ejemplo n.º 14
0
        public async Task <IHttpActionResult> Update(AppUserViewModel applicationUserViewModel)
        {
            if (ModelState.IsValid)
            {
                var appUser = await AppUserManager.FindByIdAsync(applicationUserViewModel.Id);

                try
                {
                    appUser.UpdateUser(applicationUserViewModel);
                    var result = await AppUserManager.UpdateAsync(appUser);

                    if (result.Succeeded)
                    {
                        var userRoles = await AppUserManager.GetRolesAsync(appUser.Id);

                        var selectedRole = applicationUserViewModel.Roles.ToArray();

                        selectedRole = selectedRole ?? new string[] { };

                        await AppUserManager.AddToRolesAsync(appUser.Id, selectedRole.Except(userRoles).ToArray());

                        return(Ok(applicationUserViewModel));
                    }
                    else
                    {
                        return(BadRequest());
                    }
                }
                catch (NameDuplicatedException)
                {
                    return(BadRequest());
                }
            }
            else
            {
                return(BadRequest());
            }
        }
Ejemplo n.º 15
0
        public async Task <IHttpActionResult> AssignRolesToUser([FromUri] string id, [FromBody] string[] rolesToAssign)
        {
            var appUser = await AppUserManager.FindByIdAsync(id);

            if (appUser == null)
            {
                return(NotFound());
            }

            var currentRoles = await AppUserManager.GetRolesAsync(appUser.Id);

            var rolesNotExists = rolesToAssign.Except(AppRoleManager.Roles.Select(x => x.Name)).ToArray();

            if (rolesNotExists.Count() > 0)
            {
                ModelState.AddModelError("", string.Format("Roles '{0}' does not exixts in the system", string.Join(",", rolesNotExists)));
                return(BadRequest(ModelState));
            }

            IdentityResult removeResult = await AppUserManager.RemoveFromRolesAsync(appUser.Id, currentRoles.ToArray());

            if (!removeResult.Succeeded)
            {
                ModelState.AddModelError("", "Failed to remove user roles");
                return(BadRequest(ModelState));
            }

            IdentityResult addResult = await AppUserManager.AddToRolesAsync(appUser.Id, rolesToAssign);

            if (!addResult.Succeeded)
            {
                ModelState.AddModelError("", "Failed to add user roles");
                return(BadRequest(ModelState));
            }

            return(Ok());
        }
Ejemplo n.º 16
0
        public async Task <IHttpActionResult> Create(AppUserViewModel applicationUserViewModel)
        {
            if (ModelState.IsValid)
            {
                var newAppUser = new AspNetUser();
                newAppUser.UpdateUser(applicationUserViewModel);
                try
                {
                    newAppUser.Id = Guid.NewGuid().ToString();
                    var result = await AppUserManager.CreateAsync(newAppUser, applicationUserViewModel.Password);

                    if (result.Succeeded)
                    {
                        var roles = applicationUserViewModel.Roles.ToArray();
                        await AppUserManager.AddToRolesAsync(newAppUser.Id, roles);

                        return(Ok(applicationUserViewModel));
                    }
                    else
                    {
                        return(BadRequest());
                    }
                }
                catch (NameDuplicatedException)
                {
                    return(BadRequest());
                }
                catch (Exception)
                {
                    return(BadRequest());
                }
            }
            else
            {
                return(BadRequest());
            }
        }
Ejemplo n.º 17
0
        //[Permission(Action = "Update", Function = "USER")]
        public async Task <HttpResponseMessage> Update(HttpRequestMessage request, AppUserViewModel applicationUserViewModel)
        {
            if (ModelState.IsValid)
            {
                if (User != null && MemoryCacheHelper.RemoveUserEditByAdmin(User.Identity.Name) && User.Identity.Name != applicationUserViewModel.UserName)
                {
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, CommonConstants.Error_Edit_By_Admin));
                }

                var appUser = await AppUserManager.FindByIdAsync(applicationUserViewModel.Id);

                if (applicationUserViewModel.Roles.Contains(CommonConstants.GroupLead) && applicationUserViewModel.GroupId != null)
                {
                    var groupleaderID = AppRoleManager.FindByNameAsync(CommonConstants.GroupLead).Result.Id;
                    var groupLeader   = AppUserManager.Users.Where(x => x.Roles.Any(r => r.RoleId.Equals(groupleaderID) && x.GroupId == applicationUserViewModel.GroupId)).FirstOrDefault();
                    if (groupLeader != null && !groupLeader.Equals(appUser))
                    {
                        return(request.CreateResponse(HttpStatusCode.BadRequest, MessageSystem.Error_Exist_Group_Lead));
                    }
                }
                var roleIDNew = AppRoleManager.FindByNameAsync(applicationUserViewModel.Roles.FirstOrDefault()).Result.Id;
                if (applicationUserViewModel.UserName == User.Identity.Name && appUser.Roles.FirstOrDefault().RoleId != roleIDNew)
                {
                    return(request.CreateResponse(HttpStatusCode.BadRequest, MessageSystem.Unable_Update_Role_YourSelf));
                }
                var checkStartDateAndBirthDay = _userService.CheckStartDateAndBirthDay(applicationUserViewModel.BirthDay, applicationUserViewModel.StartWorkingDay);
                if (!string.IsNullOrEmpty(checkStartDateAndBirthDay))
                {
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, checkStartDateAndBirthDay));
                }
                try
                {
                    var FingerManchineUser = _fingermachineuserService.GetFingerMachineUserByUserID(applicationUserViewModel.Id);
                    var lstUserNoAdd       = applicationUserViewModel.ListUserNo.Split('-').ToList().Except(FingerManchineUser.Select(x => x.ID));
                    if (!ValidateUserNo(lstUserNoAdd))
                    {
                        return(request.CreateResponse(HttpStatusCode.BadRequest, MessageSystem.MessageUserNoNotValid));
                    }
                    if (FingerManchineUser.Count > 0)
                    {
                        var lstUserNoRemove = FingerManchineUser.Select(x => x.ID).Except(applicationUserViewModel.ListUserNo.Split('-').ToList());
                        if (FingerManchineUser.Select(x => x.ID).ToList().Count() > 0 && (lstUserNoAdd.Count() > 0 || lstUserNoRemove.Count() > 0))
                        {
                            if (_fingermachineuserService.IsUserNoExist(lstUserNoAdd.ToList()))//_fingermachineuserService.IsFingerManchineUserExist(applicationUserViewModel.AccNameInMachineFinger))
                            {
                                return(request.CreateResponse(HttpStatusCode.BadRequest, MessageSystem.MessageUserNoExist));
                            }
                            if (_fingerTimeSheetService.IsUserNoExistTimeSheet(lstUserNoAdd.ToList()) || _fingerTimeSheetService.IsUserNoExistTimeSheet(lstUserNoRemove.ToList()))
                            {
                                return(request.CreateResponse(HttpStatusCode.BadRequest, MessageSystem.MessageExistTimeSheetEmpNo));
                            }
                            _fingermachineuserService.Update(lstUserNoAdd.ToList(), lstUserNoRemove.ToList(), applicationUserViewModel.Id);
                        }
                    }
                    else
                    {
                        if (_fingermachineuserService.IsUserNoExist(lstUserNoAdd.ToList()))
                        {
                            return(request.CreateResponse(HttpStatusCode.BadRequest, MessageSystem.MessageUserNoExist));
                        }
                    }
                    if (applicationUserViewModel.ListUserNo.Split('-').Count() > 0 && !string.IsNullOrEmpty(applicationUserViewModel.ListUserNo.Split('-')[0]) && FingerManchineUser.Count == 0)
                    {
                        foreach (var item in applicationUserViewModel.ListUserNo.Split('-').Distinct())
                        {
                            _fingermachineuserService.Create(new FingerMachineUser()
                            {
                                ID = item, UserId = applicationUserViewModel.Id
                            });
                        }
                        _unitOfWork.Commit();
                    }
                    //Update Not Done


                    appUser.UpdateUser(applicationUserViewModel);
                    var result = await AppUserManager.UpdateAsync(appUser);

                    if (result.Succeeded)
                    {
                        if (User.IsInRole(CommonConstants.Admin) && User.Identity.Name != applicationUserViewModel.UserName)
                        {
                            _userService.AddListUserEditByAdmin(applicationUserViewModel.UserName);
                        }
                        var userRoles = await AppUserManager.GetRolesAsync(appUser.Id);

                        var selectedRole = applicationUserViewModel.Roles.ToArray();
                        selectedRole = selectedRole ?? new string[] { };
                        await AppUserManager.RemoveFromRolesAsync(appUser.Id, userRoles.ToArray());

                        await AppUserManager.AddToRolesAsync(appUser.Id, selectedRole.ToArray());

                        return(request.CreateResponse(HttpStatusCode.OK, applicationUserViewModel));
                    }
                    return(request.CreateResponse(HttpStatusCode.BadRequest, Common.Constants.MessageSystem.MessageDuplicateEmail));
                }
                catch (NameDuplicatedException dex)
                {
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, dex.Message));
                }
            }
            return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
        }
Ejemplo n.º 18
0
        public async Task <HttpResponseMessage> Create(HttpRequestMessage request, AppUserViewModel applicationUserViewModel)
        {
            if (ModelState.IsValid)
            {
                if (User != null && MemoryCacheHelper.RemoveUserEditByAdmin(User.Identity.Name))
                {
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, CommonConstants.Error_Edit_By_Admin));
                }
                if (applicationUserViewModel.Roles.Contains(CommonConstants.GroupLead) && applicationUserViewModel.GroupId != null)
                {
                    var groupleaderID = AppRoleManager.FindByNameAsync(CommonConstants.GroupLead).Result.Id;
                    var groupLeader   = AppUserManager.Users.Where(x => x.Roles.Any(r => r.RoleId.Equals(groupleaderID) && x.GroupId == applicationUserViewModel.GroupId)).FirstOrDefault();
                    if (groupLeader != null && !groupLeader.Equals(applicationUserViewModel))
                    {
                        return(request.CreateResponse(HttpStatusCode.BadRequest, MessageSystem.Error_Create_Exist_Group_Lead));
                    }
                }

                var username = AppUserManager.FindByNameAsync(applicationUserViewModel.UserName).Result;
                var email    = AppUserManager.FindByEmailAsync(applicationUserViewModel.Email).Result;
                //if (username != null && email != null)
                //{
                //    if (username.Status == false)
                //    {
                //        return request.CreateResponse(HttpStatusCode.OK, "Inaction");
                //    }
                //}
                if (username != null)
                {
                    if (username.Status == true)
                    {
                        return(request.CreateErrorResponse(HttpStatusCode.BadRequest, MessageSystem.MessageDuplicateUserName));
                    }
                }

                if (email != null)
                {
                    if (email.Status == true)
                    {
                        return(request.CreateErrorResponse(HttpStatusCode.BadRequest, MessageSystem.MessageDuplicateEmail));
                    }
                    else
                    {
                        return(request.CreateResponse(HttpStatusCode.OK, "Inaction"));
                    }
                }
                var newAppUser = new AppUser();
                newAppUser.UpdateUser(applicationUserViewModel);
                newAppUser.Status = true;
                try
                {
                    newAppUser.Id = Guid.NewGuid().ToString();
                    if (applicationUserViewModel.ListUserNo != null && applicationUserViewModel.ListUserNo.Count() > 0)
                    {
                        if (!ValidateUserNo(applicationUserViewModel.ListUserNo.Split('-')))
                        {
                            return(request.CreateResponse(HttpStatusCode.BadRequest, MessageSystem.MessageUserNoNotValid));
                        }
                        if (_fingermachineuserService.IsUserNoExist(applicationUserViewModel.ListUserNo.Split('-').ToList()))
                        {
                            return(request.CreateResponse(HttpStatusCode.BadRequest, MessageSystem.MessageUserNoExist));
                        }
                    }
                    var checkStartDateAndBirthDay = _userService.CheckStartDateAndBirthDay(applicationUserViewModel.BirthDay, applicationUserViewModel.StartWorkingDay);
                    if (!string.IsNullOrEmpty(checkStartDateAndBirthDay))
                    {
                        return(request.CreateErrorResponse(HttpStatusCode.BadRequest, checkStartDateAndBirthDay));
                    }
                    var result = await AppUserManager.CreateAsync(newAppUser, applicationUserViewModel.Password);

                    if (result.Succeeded)
                    {
                        var roles = applicationUserViewModel.Roles.ToArray();
                        await AppUserManager.AddToRolesAsync(newAppUser.Id, roles);

                        //Create entitle day of user new
                        _entitleDayAppUserService.CreateEntitleDayAppUser(newAppUser);
                        //Add user into table config delegation
                        var configDelegation = new ConfigDelegation();
                        configDelegation.UserId = newAppUser.Id;
                        _configDelegateionService.Add(configDelegation);
                        _configDelegateionService.SaveChange();

                        if (applicationUserViewModel.ListUserNo != null)
                        {
                            List <string> lstUserno = applicationUserViewModel.ListUserNo.Split('-').ToList();
                            if (lstUserno.Count() > 0)
                            {
                                if (_fingermachineuserService.IsUserNoExist(lstUserno))
                                {
                                    return(request.CreateResponse(HttpStatusCode.BadRequest, MessageSystem.MessageUserNoExist));
                                }
                                else
                                {
                                    foreach (var item in lstUserno)
                                    {
                                        _fingermachineuserService.Create(new FingerMachineUser()
                                        {
                                            ID = item, UserId = newAppUser.Id
                                        });
                                    }
                                    _unitOfWork.Commit();
                                }
                            }
                        }
                        return(request.CreateResponse(HttpStatusCode.OK, applicationUserViewModel));
                    }

                    else
                    {
                        return(request.CreateErrorResponse(HttpStatusCode.BadRequest, string.Join(",", result.Errors)));
                    }
                }
                catch (NameDuplicatedException dex)
                {
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, dex.Message));
                }
                catch (Exception ex)
                {
                    return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message));
                }
            }
            else
            {
                return(request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }
        }
Ejemplo n.º 19
0
        private async Task AddRoleToUser(UserOrgRS model, string id)
        {
            if (model.IsEmployee)
            {
                var roleResult = await AppUserManager.AddToRolesAsync(id, KpiUserRole.Employee);
            }
            else
            {
                if (await AppUserManager.IsInRoleAsync(id, KpiUserRole.Employee))
                {
                    await AppUserManager.RemoveFromRoleAsync(id, KpiUserRole.Employee);
                }
            }

            if (model.IsEmpManager)
            {
                var roleResult = await AppUserManager.AddToRolesAsync(id, KpiUserRole.EmpManager);
            }
            else
            {
                if (await AppUserManager.IsInRoleAsync(id, KpiUserRole.EmpManager))
                {
                    await AppUserManager.RemoveFromRoleAsync(id, KpiUserRole.EmpManager);
                }
            }

            if (model.IsEVoucherDistributor)
            {
                var roleResult = await AppUserManager.AddToRolesAsync(id, KpiUserRole.EVoucherDistributor);
            }
            else
            {
                if (await AppUserManager.IsInRoleAsync(id, KpiUserRole.EVoucherDistributor))
                {
                    await AppUserManager.RemoveFromRoleAsync(id, KpiUserRole.EVoucherDistributor);
                }
            }

            if (model.IsBudgetDistributor)
            {
                var roleResult = await AppUserManager.AddToRolesAsync(id, KpiUserRole.BudgetDistributor);
            }
            else
            {
                if (await AppUserManager.IsInRoleAsync(id, KpiUserRole.BudgetDistributor))
                {
                    await AppUserManager.RemoveFromRoleAsync(id, KpiUserRole.BudgetDistributor);
                }
            }

            if (model.IsEVoucherManager)
            {
                var roleResult = await AppUserManager.AddToRolesAsync(id, KpiUserRole.EVoucherManager);
            }
            else
            {
                if (await AppUserManager.IsInRoleAsync(id, KpiUserRole.EVoucherManager))
                {
                    await AppUserManager.RemoveFromRoleAsync(id, KpiUserRole.EVoucherManager);
                }
            }

            if (model.IsLevel2Manager)
            {
                var roleResult = await AppUserManager.AddToRolesAsync(id, KpiUserRole.Level2Manager);
            }
            else
            {
                if (await AppUserManager.IsInRoleAsync(id, KpiUserRole.Level2Manager))
                {
                    await AppUserManager.RemoveFromRoleAsync(id, KpiUserRole.Level2Manager);
                }
            }

            if (model.IsDistributorApprover)
            {
                var roleResult = await AppUserManager.AddToRolesAsync(id, KpiUserRole.DistributorApprover);
            }
            else
            {
                if (await AppUserManager.IsInRoleAsync(id, KpiUserRole.DistributorApprover))
                {
                    await AppUserManager.RemoveFromRoleAsync(id, KpiUserRole.DistributorApprover);
                }
            }

            if (model.DivisionManager)
            {
                var roleResult = await AppUserManager.AddToRolesAsync(id, KpiUserRole.DivisionManager);
            }
            else
            {
                if (await AppUserManager.IsInRoleAsync(id, KpiUserRole.DivisionManager))
                {
                    await AppUserManager.RemoveFromRoleAsync(id, KpiUserRole.DivisionManager);
                }
            }
        }