Quantcast
Channel: Project Customization and Programming forum
Viewing all articles
Browse latest Browse all 5347

How to add a Task Resource Assignment using PSI

$
0
0

hey, I am struggling with adding a resource assignment to a task and need help. desperately! ahhhh!

okay, so I have projtool so I have a good framework of examples, but I'm just getting generic queue failed when trying to do an update. here is a basic idea of my code below. do I need to do something special or am I missing some references that are required when adding an assignment? everything is working til I add an assignment row.

foreach (var activity in task.Activities)
{    var activityRow = insertDataSet.Task.NewTaskRow();    activityRow.PROJ_UID            = projectGuid;    activityRow.TASK_UID            = Guid.NewGuid();    activityRow.TASK_NAME           = string.IsNullOrEmpty(activity.Name) ? activity.Description : string.Format("{0} - {1}", activity.Name, activity.Description);    activityRow.TASK_OUTLINE_LEVEL  = indent+1;    activityRow.TASK_WBS            = activity.Name;    activityRow.AddPosition         = 1;    activityRow.AddAfterTaskUID     = lastTaskGuid;    insertDataSet.Task.AddTaskRow(activityRow);                            lastTaskGuid = activityRow.TASK_UID;    if (transferOptions.IncludeResourceAssignments)    {        foreach (var ra in sourceDocument.ResourceAssignments.GetResourceAssignments(activity.Name))        {            var resourceGroup   = sourceDocument.ResourceGroups.GetResourceGroup(ra.ResourceType);            var resource        = resourceGroup.Resources.GetResource(ra.ResourceID);                                            if (resource == null)                continue;            var matchingResources = resourceDataSet.Resources.Select( string.Format("RES_NAME = '{0}'", resource.Name ) );            if( matchingResources != null && matchingResources.Length > 0 )            {                var matchingResource = matchingResources[0];                var raRow = insertDataSet.Assignment.NewAssignmentRow( );                raRow.PROJ_UID  = projectGuid;                raRow.ASSN_UID  = Guid.NewGuid();                raRow.RES_UID   = new Guid("870ead10-c199-4abd-a420-b755140ff886"); // new Guid(matchingResource["RES_UID"].ToString( ));                raRow.TASK_UID  = activityRow.TASK_UID;                ifConvert.ToInt32( matchingResource["RES_TYPE"].ToString( ) ) == 25 )                    raRow.ASSN_ACT_COST = resource.Rate;                                                        insertDataSet.Assignment.AddAssignmentRow(raRow);            }        }    }
}
SvcProject.ProjectDataSet addTasks = new SvcProject.ProjectDataSet();
addTasks.ProjectResource.Merge(insertDataSet.ProjectResource, true);
addTasks.Task.Merge(insertDataSet.Task, true);
addTasks.Dependency.Merge(insertDataSet.Dependency, true);
addTasks.Assignment.Merge(insertDataSet.Assignment, true);
addTasks.TaskCustomFields.Merge(insertDataSet.TaskCustomFields, true);
addTasks = (SvcProject.ProjectDataSet)addTasks.GetChanges(DataRowState.Added);if (addTasks != null)   ProjectServerApi.AddToProject(addTasks, sessionGuid);


Viewing all articles
Browse latest Browse all 5347

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>