-
Notifications
You must be signed in to change notification settings - Fork 217
/
Copy pathPO_ImportTasks.ps1
93 lines (82 loc) · 2.47 KB
/
PO_ImportTasks.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
using module LIB_OperationSet
using module LIB_Project
using module LIB_Task
cd $PSScriptRoot
Clear-Host
#environment parameters
$tenant = "axsolutionsarchitecture.com"
$environment = "https://operations-saprojopstest.crm.dynamics.com"
#data file
$projectFile = "ProjectTasks.xlsx"
#Show RestAPI calls
$showRestAPI = $true
#project parameters
$projectName = "MAW_TestPS01"
$companyName = "USPM"
$customerName = "MW Test Customer 2"
$calendarName = "8 hr PST template"
$projectManager = "SA Solutions Architect"
$startDate = "2022-11-23 17:00"
[Project] $project = [Project]::new($projectName,$tenant,$environment)
$project.request.Debug = $showRestAPI
if ($project.id -eq '')
{
Write-Host 'Create project' $projectName
$project.customerName = $customerName
$project.calendar = $calendarName
$project.company = $companyName
$project.projectManager = $projectManager
$project.startDate = $startDate
$project.CreateProject()
}
else
{
Write-Host 'Add to existing project' $projectName
}
Write-Host 'Read file' $projectFile
[TaskList] $taskList = [TaskList]::new($PSSCriptRoot + ".\" + $projectFile )
Write-Host 'Create team members'
foreach ($task in $taskList.tasks)
{
if ($task.resource -ne "")
{
[string]$teamMemberId = $project.GetTeamMemberId($task.resource)
if ($teamMemberId -eq "")
{
$task.teamMemberId = $project.CreateTeamMember($task.resource)
}
else
{
$task.teamMemberId = $teamMemberId
}
}
}
Write-Host 'Create tasks'
[OperationSet] $operationSet = [OperationSet]::new($projectName,$project.id,$tenant,$environment)
$operationSet.request.Debug = $showRestAPI
for ([int] $i = 0; $i -lt $taskList.tasks.Count; $i++)
{
$taskEntity = $taskList.CreateTaskEntity($i,$project.id,$project.GetDefaultBucket())
$operationSet.Create($taskEntity)
}
foreach ($task in $taskList.tasks)
{
if ($task.resource -ne "")
{
$resourceEntity = $task.CreateResourceAssignment($project.id)
$operationSet.Create($resourceEntity)
}
}
$operationSet.Execute()
write-Host 'Create dependencies'
[OperationSet] $operationSet = [OperationSet]::new($projectName,$project.id,$tenant,$environment)
$operationSet.request.Debug = $showRestAPI
for ([int] $i = 0; $i -lt $taskList.tasks.Count; $i++)
{
if ($taskList.tasks[$i].dependency -gt -1)
{
$dependencyEntity = $taskList.CreateDependencyEntity($i,$project.id)
$operationSet.Create($dependencyEntity)
}
}
$operationSet.Execute()