//------------------------------------------------------------------------------
QUndoCommand* AssignmentRules::removeAt(int index, QUndoCommand* cmd)
{
	if (index >= 0 && index < rules.size())
	{
		AssignmentRule* rule = rules.at(index);
		return new RemoveRuleCommand(this, index, rule->ruleId(),
			rule->estimateId(), rule->conditions, cmd); // Private variable access
	}
	else
		return new QUndoCommand(cmd);
}
//------------------------------------------------------------------------------
void AssignmentRules::reindex()
{
	ridToIndex.clear();
	eidToIndex.clear();

	for (int i=0; i<rules.size(); ++i)
	{
		AssignmentRule* rule = rules.at(i);
		ridToIndex.insert(rule->ruleId(), i);
		eidToIndex.insert(rule->estimateId(), i);
	}
}
//------------------------------------------------------------------------------
QUndoCommand* AssignmentRules::cloneRule(uint ruleId, QUndoCommand* cmd)
{
	AssignmentRule* rule = find(ruleId);
	if (rule)
	{
		uint cloneId = QDateTime::currentDateTime().toTime_t();
		int index = ridToIndex.value(ruleId) + 1; // Insert after original
		return new InsertRuleCommand(this, index, cloneId, rule->estimateId(),
			rule->conditions, cmd); // Private variable access
	}
	else
		return new QUndoCommand(cmd);
}