| 869 | } |
| 870 | |
| 871 | public async Task<bool> RemoveLabelFromTaskAsync(int taskId, int labelId, int userId) |
| 872 | { |
| 873 | var taskLabel = await _db.TaskLabels.FindAsync(taskId, labelId); |
| 874 | if (taskLabel == null) return false; |
| 875 | |
| 876 | _db.TaskLabels.Remove(taskLabel); |
| 877 | await _db.SaveChangesAsync(); |
| 878 | |
| 879 | var label = await _db.Labels.FindAsync(labelId); |
| 880 | await LogActivity(taskId, userId, "Label Removed", $"Removed label: {label?.Name ?? "Unknown"}"); |
| 881 | |
| 882 | return true; |
| 883 | } |
| 884 | |
| 885 | public async Task<bool> SetTaskLabelsAsync(int taskId, List<int> labelIds, int userId) |
| 886 | { |