public async Task <IActionResult> Edit(string Id)
        {
            AppUser user = await _userManager.FindByIdAsync(Id);

            UserDTO model = new UserDTO();

            model.InjectFrom(user);
            return(View(model));
        }
Beispiel #2
0
        public UserDTO GetUser(Guid?userId)
        {
            _userRepository.Configure();
            var showingUser = _userRepository.GetUsers().FirstOrDefault(u => u.Id == userId);

            if (showingUser == null)
            {
                throw new ArgumentException("There is no categories with specific id", nameof(userId));
            }

            var userDTO = new UserDTO()
            {
            };

            userDTO.InjectFrom(showingUser);

            return(userDTO);
        }
        public async Task <JsonResult> EditUser(string data)
        {
            dynamic user = new ExpandoObject();

            if (Request.IsAjaxRequest())
            {
                try
                {
                    user = JsonConvert.DeserializeObject(data);
                    string             userModel      = user.userWithPermissions.userModel.ToString();
                    var                dataNvc        = HttpUtility.ParseQueryString(userModel);
                    var                dataCollection = dataNvc.AllKeys.ToDictionary(o => o, o => dataNvc[o]);
                    var                jsonString     = JsonConvert.SerializeObject(dataCollection);
                    AdminUserViewModel userVM         = JsonConvert.DeserializeObject <AdminUserViewModel>(jsonString);
                    var                locale         = LocalizationService.GetAvalaibleLocalization();
                    if ((userVM.Locale == null) || (locale.FirstOrDefault(l => l.LocalizationId == userVM.Locale) == null))
                    {
                        ModelState.AddModelError("Locale", Resource.errLocaleNotFound);
                    }

                    if (userVM.TimezoneId == null || userVM.TimezoneId == string.Empty)
                    {
                        ModelState.AddModelError("TimezoneId", Resource.errTimeZoneNotFound);
                    }

                    userVM.Password = SecurityHelper.Hash(userVM.Password);
                    if (ModelState.IsValid)
                    {
                        string pic = user.userWithPermissions.file.ToString();
                        userVM.Picture = pic;

                        var           userPermissions = (IEnumerable <dynamic>)user.userWithPermissions.permissions;
                        var           userId          = Guid.Parse((string)userPermissions.First().userId);
                        UserViewModel currUser        = null;
                        if (userId != Guid.Empty)
                        {
                            currUser = await _customUserManager.FindByIdAsync(userId.ToString());
                        }

                        if (currUser == null || (!currUser.UserName.Equals(userVM.Login) && !await _customUserManager.IsUniqueLoginAsync(userVM.Login)))
                        {
                            ModelState.AddModelError("Login", Resource.errNotUnique);
                            return(Json(JsonConvert.SerializeObject(Url.Action("Edit", "User"))));
                        }

                        List <PermissionDTO> permissions = new List <PermissionDTO>();

                        foreach (dynamic permission in (IEnumerable <dynamic>)user.userWithPermissions.permissions)
                        {
                            var permissionDTO = new PermissionDTO()
                            {
                                Id     = Guid.NewGuid(),
                                UserId = Guid.Parse((string)permission.userId),
                                Role   = (Auction.BussinessLogic.Models.Role)Enum.Parse(typeof(Auction.BussinessLogic.Models.Role), (string)permission.role)
                            };

                            if (permissionDTO.Role != Auction.BussinessLogic.Models.Role.Admin)
                            {
                                permissionDTO.AuctionId = (string)permission.auctionName;
                                if (permissionDTO.Role == BussinessLogic.Models.Role.Moderator)
                                {
                                    permissionDTO.CategoriesId = new List <Guid>();
                                    foreach (dynamic key in (IEnumerable <dynamic>)permission.categories)
                                    {
                                        permissionDTO.CategoriesId.Add(Guid.Parse((string)key.Value));
                                    }
                                }
                                else
                                {
                                    permissionDTO.CategoriesId = null;
                                }
                            }

                            permissions.Add(permissionDTO);
                        }

                        var userDTO = new UserDTO()
                        {
                            Id = userId
                        };
                        userVM.Id = userDTO.Id;
                        userVM.RegistrationDate = DateTime.Now;
                        userDTO.InjectFrom(userVM);

                        var listOldPermissions = await _customUserManager.GetPermissionsAsync(Guid.Parse(currUser.Id));

                        foreach (var oldPermission in listOldPermissions)
                        {
                            await _customUserManager.RemovePermissionAsync(oldPermission);
                        }

                        foreach (var permission in permissions)
                        {
                            await _customUserManager.AddPermissionAsync(permission);
                        }

                        await _customUserManager.EditUserAsync(userDTO);

                        return(Json(JsonConvert.SerializeObject(Url.Action("Index", "User"))));
                    }
                }
                catch
                {
                    ModelState.AddModelError(string.Empty, Resource.errCreate);
                }
            }

            return(Json(JsonConvert.SerializeObject(Url.Action("Edit", "User"))));
        }