public async Task ExportProjectplanToWorkplan(long projectplanId, long workplanId) { var oldToNewId = new Dictionary <long, long> (); var projectplanTasks = _projectplanTaskRepository.GetAll().Where(p => p.ProjectplanId == projectplanId).ToList(); var workplanTasks = new List <WorkplanTask> (); // Sort so that we get parents first projectplanTasks.Sort(new PlanTaskComparator <ProjectplanTask> ()); foreach (var _pTask in projectplanTasks) { WorkplanTask newWorkplanTask = CopyProjectplanTaskToWorkplanTask(_pTask, new WorkplanTask(), oldToNewId); newWorkplanTask.TaskNumber = await _numberSequenceManager.GetLatestSequenceNumberForType(NumberSequenceType.Task); newWorkplanTask.WorkplanId = workplanId; var id = await _workplanTaskRepository.InsertAndGetIdAsync(newWorkplanTask); oldToNewId.Add(_pTask.Id, id); workplanTasks.Add(newWorkplanTask); } /** * We have to traverse projectplanTasks once again to create * WorkplanTaskAssignedUserMappin and WorkplanTaskPredecessorMapping. * We are traversing again because we wanted oldToNewId dictionary to have * mapping from oldId to newId of all the tasks. */ var allProjectIds = projectplanTasks.Select(p => p.Id); foreach (var projectId in allProjectIds) { var assignedUserMappings = _projectplanTaskAssignedUserMappingRepository.GetAll().Where(m => m.ProjectplanTaskId == projectId).ToList(); var predecessorMappings = _projectplanTaskPredecessorMappingRepository.GetAll().Where(m => m.ProjectplanTaskId == projectId).ToList(); foreach (var userMapping in assignedUserMappings) { if (userMapping.UserId.HasValue) { await CopyAssignedUserMapping(userMapping, oldToNewId); } } foreach (var predMapping in predecessorMappings) { await CopyPredecessorMapping(predMapping, oldToNewId); } } }
private WorkplanTask CopyToNewWorkplan(ListplanTask fromListplanTask, Dictionary <long, long> oldToNewId) { var newWorkplanTask = new WorkplanTask(); newWorkplanTask.Id = ListplanToWorkplanMerger.Id++; newWorkplanTask.Title = fromListplanTask.Title; newWorkplanTask.Order = fromListplanTask.Order; newWorkplanTask.TaskId = fromListplanTask.TaskId; newWorkplanTask.IsExpanded = fromListplanTask.IsExpanded; newWorkplanTask.IsMilestone = fromListplanTask.IsMilestone; newWorkplanTask.Indentation = fromListplanTask.Indentation; newWorkplanTask.PlannedHours = fromListplanTask.PlannedHours; newWorkplanTask.IsHeaderTask = fromListplanTask.IsHeaderTask; newWorkplanTask.ResourceTypeId = fromListplanTask.ResourceTypeId; newWorkplanTask.ParentId = fromListplanTask.ParentId.HasValue ? oldToNewId[(long)fromListplanTask.ParentId] : fromListplanTask.ParentId; return(newWorkplanTask); }
private WorkplanTask CopyProjectplanTaskToWorkplanTask(ProjectplanTask projectplanTask, WorkplanTask workplanTask, Dictionary <long, long> oldToNewId) { workplanTask.Title = projectplanTask.Title; workplanTask.StartDate = projectplanTask.StartDate; workplanTask.FinishDate = projectplanTask.FinishDate; workplanTask.PlannedHours = projectplanTask.PlannedHours; workplanTask.ActualStartDate = projectplanTask.ActualStartDate; workplanTask.ActualFinishDate = projectplanTask.ActualFinishDate; workplanTask.ActualHours = projectplanTask.ActualHours; workplanTask.Cost = projectplanTask.Cost; workplanTask.ResourceTypeId = projectplanTask.ResourceTypeId; workplanTask.IsExpanded = projectplanTask.IsExpanded; workplanTask.IsMilestone = projectplanTask.IsMilestone; workplanTask.IsHeaderTask = projectplanTask.IsHeaderTask; workplanTask.Indentation = projectplanTask.Indentation; workplanTask.Order = projectplanTask.Order; workplanTask.ParentId = projectplanTask.ParentId.HasValue ? oldToNewId[(long)projectplanTask.ParentId] : projectplanTask.ParentId; workplanTask.TaskId = projectplanTask.TaskId; return(workplanTask); }