public IActionResult Share([FromRoute] int planId, [FromBody] ICollection <UserDto> usersToShare) { var plan = _repo.GetPlan(planId); if (plan == null) { return(NotFound("There is no plan with specified ID: " + planId)); } var alreadyShared = _repo.GetShares(planId); var usersToAdd = usersToShare.Where(us => !alreadyShared.Contains(us.Id)).Select(us => us.Id); var usersToRemove = alreadyShared.Where(us => !usersToShare.Select(us => us.Id).Contains(us)); _repo.AddUsersToShare(plan, usersToAdd); _repo.RemoveUsersFromShare(plan, usersToRemove); return(Ok()); }