Beispiel #1
0
        private void AddOrDeleteCustomerGroups(UserForm model, User user)
        {
            foreach (var customergroupId in model.CustomerGroupIds)
            {
                if (user.CustomerGroups.Any(x => x.CustomerGroupId == customergroupId))
                {
                    continue;
                }

                var userCustomerGroup = new CustomerGroupUser
                {
                    CustomerGroupId = customergroupId,
                    User            = user
                };
                user.CustomerGroups.Add(userCustomerGroup);
            }

            var deletedUserCustomerGroups =
                user.CustomerGroups.Where(userCustomerGroup => !model.CustomerGroupIds.Contains(userCustomerGroup.CustomerGroupId))
                .ToList();

            foreach (var deletedUserCustomerGroup in deletedUserCustomerGroups)
            {
                deletedUserCustomerGroup.User = null;
                user.CustomerGroups.Remove(deletedUserCustomerGroup);
            }
        }
        public async Task <IActionResult> Post([FromBody] UserForm model)
        {
            if (ModelState.IsValid)
            {
                var user = new User
                {
                    UserName    = model.Email,
                    IdNumber    = model.IdNumber,
                    Email       = model.Email,
                    FullName    = model.FullName,
                    PhoneNumber = model.PhoneNumber,
                    VendorId    = model.VendorId
                };

                foreach (var roleId in model.RoleIds)
                {
                    var userRole = new UserRole
                    {
                        RoleId = roleId
                    };

                    user.Roles.Add(userRole);
                    userRole.User = user;
                }

                foreach (var customergroupId in model.CustomerGroupIds)
                {
                    var userCustomerGroup = new CustomerGroupUser
                    {
                        CustomerGroupId = customergroupId
                    };
                }

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

                if (result.Succeeded)
                {
                    return(CreatedAtAction(nameof(Get), new { id = user.Id }, null));
                }

                AddErrors(result);
            }

            return(BadRequest(ModelState));
        }