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 UserCustomerGroup { 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, 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 UserCustomerGroup { 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)); }