/// <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("Пользователь добавлен к группе")); }
/// <summary> /// Удалить пользователя из группы /// </summary> /// <param name="model"></param> /// <returns></returns> public async Task <BaseApiResponse> RemoveUserFromGroupAsync(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, "Пользователь не найден")); } var elem = group.Users.FirstOrDefault(x => x.UserGroupId == model.UserGroupId && x.UserId == model.UserId); if (elem == null) { return(new BaseApiResponse(false, "Пользователь уже не принадлежит к данной группе")); } var userInGroupRelationRepo = GetRepository <EccUserInUserGroupRelation>(); userInGroupRelationRepo.DeleteHandled(elem); return(await TrySaveChangesAndReturnResultAsync("Пользователь удален из группы")); }