企業のすべての従業員のタイムシートを作成するために、データベースからいくつかの値を読み取ることができる小さなコードを開発しています。
データベースのデータは、プロジェクト マネージャーがタスクの再割り当てなどのすべてのタスクの変更を定義する別のアプリから取得されます。
プロジェクト タスク定義の開始時に Project Manager から設定された同じ従業員でタスクが開始および終了する場合、コードはうまく機能します。
問題は、プロジェクト マネージャーが、何らかの理由でタスクを実行している従業員を変更する必要があると判断した場合です。次に、タイムシートにアプリを入力するために、新入社員のタイムシートにプロジェクト ラインがないという問題が発生しました。
私の質問は: - 新しい従業員のタイムシートに新しい行を含める方法はありますか?
前もって感謝します。
編集:
タイムシートの記入方法を追加したいと思います。
// I'm getting my period here --> Before I authenticate the user against Project Context
var myPeriod = projContext.TimeSheetPeriods.FirstOrDefault();
foreach (var l in myPeriod.TimeSheet.Lines)
{
for (int i = 0; i < TimesheetTaskId.Count; i++)
{
projContext.Load(projContext.Projects);
projContext.ExecuteQuery();
var proj = projContext.Projects.First(p => p.Id == Guid.Parse(projectid.ElementAt(i)));
projContext.ExecuteQuery();
if (l.Id == Guid.Parse(TimesheetTaskId.ElementAt(i)))
{
for (int x = 0; x < taskid.Count; x++)
{
draftProj = proj.CheckOut();
var plannedwork = l.Work.Where(w => w.Id == Guid.Parse(TimesheetTaskId.ElementAt(i))).FirstOrDefault();
TimeSheetWorkCreationInformation workCreation = new TimeSheetWorkCreationInformation
{
ActualWork = string.Format("{0}h", actualwork.ElementAt(x)), // Worked hours
Start = date.ElementAt(x),
End = date.ElementAt(x),
Comment = "From CSOM",
NonBillableOvertimeWork = "0",
NonBillableWork = "0",
OvertimeWork = "0",
PlannedWork = plannedwork == null ? "0h" : plannedwork.PlannedWork
};
l.Work.Add(workCreation);
myPeriod.TimeSheet.Update();
}
}
draftProj.CheckIn(true);
}
}
ご覧のとおり、foreach 文の中で、オブジェクト タイプ 'TimeSheetWorkCreationInformation' を作成します。これにより、作業ラインがある場合にタイムシートを埋めることができます。
再割り当てを行うと、新しいリソースのタイムシートには新しい作業明細がありません。
私の質問をもう一度思い出してください: - 新しい行を新しい従業員のタイムシートに含める方法はありますか?
ありがとう