按日添加资源分配工作

时间:2016-06-24 20:03:52

标签: c# csom project-server project-online

几天后,我试图为特定日期的特定任务编写作业进度。例如:我能够设置任务的总体进度,但不能设置资源在给定日期执行的实际工作。我们可以在任务使用情况视图上使用Project Pro执行此操作,但我们需要根据另一个系统生成的文件自动执行某些操作,这就是我在此解决方案中工作的原因但我不能找到任何允许我保存日期的实际工作值的对象。我正在使用CSOM库和Project Online。

这个问题让我抓狂!任何帮助将非常感激。提前谢谢!

修改

如果我不够清楚,我基本上需要从BY DAY的资源分配中获取和设置数据,因为我们可以通过Project PRO上的TASK USAGE屏幕查看和设置,但我需要这样做使用CSOM和Project Online。 以下是我所说的观点: Project Pro Task Usage view

1 个答案:

答案 0 :(得分:0)

最后,我们设法找到出路...... 这是我们如何做到的:

    private void SaveAssignmentData(Guid id, DateTime start, DateTime finish, Config config)
    {  

        //start = DateTime.Today.AddHours(8);
        //finish = start.AddHours(10); //from 8am to 6pm

        var ctx = new Connection().ProjectOnline(config.SpOnlineSite, config.SpOnlineUsuario, config.SpOnlineSenha); //simple method to get the current context

        var resources = ctx.EnterpriseResources;
        ctx.Load(resources);
        ctx.ExecuteQuery();
        var resource = ctx.EnterpriseResources.FirstOrDefault(i => i.Email == "user@domain.com");
        if (resource == null) throw new Exception("Resource not found.");
        ctx.Load(resource, p => p.Assignments);
        ctx.ExecuteQuery();

        var timePhase = resource.Assignments.GetTimePhase(start, finish);
        ctx.Load(timePhase, p => p.Assignments);
        ctx.ExecuteQuery();

        var statusAssignment = timePhase.Assignments.FirstOrDefault(i => i.Id == id);
        if (statusAssignment != null)
        {
            statusAssignment.ActualWork = "6h";
            statusAssignment.SubmitStatusUpdates("through csom");
            ctx.ExecuteQuery();
        }
    }