Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }