/// <summary> /// Изменить пользователей в группе /// </summary> /// <param name="model"></param> /// <returns></returns> public async Task <BaseApiResponse> ChangeUsersInGroupAsync(ChangeUsersInUserGroupModel model) { var validation = ValidateModelAndUserIsAdmin(model); if (!validation.IsSucceeded) { return(validation); } if (model.UserActions == null || model.UserActions.Count == 0) { return(new BaseApiResponse(false, "Вы подали пустой массив изменений")); } var userGroupRepo = GetRepository <EccUserGroup>(); var userInUserGrouopRelationRepo = GetRepository <EccUserInUserGroupRelation>(); var userGroup = await userGroupRepo.Query().Include(x => x.Users).FirstOrDefaultAsync(x => x.Id == model.GroupId); if (userGroup == null) { return(new BaseApiResponse(false, "Группа не найдена по указанному идентификатору")); } foreach (var userToDelete in model.UserActions.Where(x => !x.AddOrDelete)) { var user = userGroup.Users.FirstOrDefault(x => x.UserId == userToDelete.UserId); if (user != null) { userInUserGrouopRelationRepo.DeleteHandled(user); } } foreach (var userToAddModel in model.UserActions.Where(x => x.AddOrDelete)) { var userRelation = new EccUserInUserGroupRelation { UserGroupId = model.GroupId, UserId = userToAddModel.UserId, }; userInUserGrouopRelationRepo.CreateHandled(userRelation); } return(await TrySaveChangesAndReturnResultAsync("Пользователи в группе изменены")); }
/// <summary> /// Добавить пользователя в группу /// </summary> /// <param name="model"></param> /// <returns></returns> public async Task <BaseApiResponse> AddUserToGroupAsync(UserInUserGroupIdModel model) { var validation = ValidateModelAndUserIsAdmin(model); if (!validation.IsSucceeded) { return(validation); } var repo = GetRepository <EccUserGroup>(); var group = await repo.Query().Include(x => x.Users).FirstOrDefaultAsync(x => x.Id == model.UserGroupId); if (group == null) { return(new BaseApiResponse(false, "Группа пользователей не найдена по указанному идентификатору")); } if (!await Query <EccUser>().AnyAsync(x => x.Id == model.UserId)) { return(new BaseApiResponse(false, "Пользователь не найден по указанному идентификатору")); } if (group.Users.Any(x => x.UserGroupId == model.UserGroupId && x.UserId == model.UserId)) { return(new BaseApiResponse(false, "Пользователь уже принадлежит данной группе")); } var relationRepo = GetRepository <EccUserInUserGroupRelation>(); var userInUserGroupRelation = new EccUserInUserGroupRelation { UserId = model.UserId, UserGroupId = model.UserGroupId, }; relationRepo.CreateHandled(userInUserGroupRelation); return(await TrySaveChangesAndReturnResultAsync("Пользователь добавлен к группе")); }