void SetCustomColumnValue(HPMUniqueID task, HPMProjectCustomColumnsColumn column, HPMString value) { switch (column.m_Type) { case EHPMProjectCustomColumnsColumnType::EHPMProjectCustomColumnsColumnType_DropList: { for (auto droplist_item : column.m_DropListItems) { if (droplist_item.m_Name == value) { session_->TaskSetCustomColumnData(task, column.m_Hash, std::to_string(droplist_item.m_Id), false); break; } } break; } default: session_->TaskSetCustomColumnData(task, column.m_Hash, value, false); } }
void PriorityCopy() { auto project_id = FindProjectByName(project_); if (!project_id.IsValid()) return; auto program_backlog_id = GetProductBacklog(project_id); if (!program_backlog_id.IsValid()) return; auto destination_column = FindColumn(program_backlog_id, destination_); if (destination_column.m_Name == "") return; int count = 0; HPMUniqueID first; map<HPMUniqueID, HPMUniqueID> dictionary; for (auto task : session_->TaskRefUtilEnumChildren(program_backlog_id, true).m_Tasks) { auto previous = session_->TaskRefGetPreviousWorkPriorityID(task); dictionary[previous] = task; if (previous.m_ID == -2) first = task; count++; } if (dictionary.size() == 0) { wcout << "No items in backlog, nothing to do.\r\n"; return; } vector<HPMUniqueID> sorted; auto item = first; while (dictionary.find(item) != dictionary.end()) { sorted.push_back(item); item = dictionary[item]; } if (dictionary.size() > 1) sorted.push_back(item); int index = 1; for (auto task_ref : sorted) { HPMUniqueID task = session_->TaskRefGetTask(task_ref); session_->TaskSetCustomColumnData(task, destination_column.m_Hash, to_string(index++), false); } wcout << "Copied: " << count << " tasks.\r\n"; }