Beispiel #1
0
        public static Task ToDtoObject(this Trex.Server.Core.Model.Task task, bool includeParent, bool includeSubTasks, bool includeTimeEntries)
        {
            var dtoTask = new Task();

            dtoTask.Guid        = task.Guid;
            dtoTask.Id          = task.Id;
            dtoTask.Name        = task.Name;
            dtoTask.Description = task.Description;
            //if (task.ParentTask != null && includeParent)
            //    dtoTask.ParentTask = task.ParentTask.ToDtoObject(false, false, false);
            if (task.ParentTask != null)
            {
                dtoTask.ParentTaskId = task.ParentTask.Id;
            }
            if (includeParent)
            {
                dtoTask.Project = task.Project.ToDtoObject(true, false, false);
            }

            dtoTask.ProjectId = task.Project.Id;
            if (includeSubTasks)
            {
                dtoTask.SubTasks = task.SubTasks.ToDtoObjects(includeParent, true, includeTimeEntries);
            }
            if (includeTimeEntries)
            {
                dtoTask.TimeEntries = task.TimeEntries.ToDtoObjects(includeParent);
            }
            dtoTask.TimeEstimated     = task.TimeEstimated;
            dtoTask.TimeLeft          = task.TimeLeft;
            dtoTask.BestCaseEstimate  = task.BestCaseEstimate;
            dtoTask.WorstCaseEstimate = task.WorstCaseEstimate;
            dtoTask.RealisticEstimate = task.RealisticEstimate;
            dtoTask.Closed            = task.Closed;
            dtoTask.CreateDate        = task.CreateDate;
            dtoTask.CreatedBy         = task.CreatedBy.ToDtoObject(false);

            return(dtoTask);
        }
        public Task SaveTask(Task task)
        {
            try
            {
                var taskRepository    = ObjectFactory.GetInstance <ITaskRepository>();
                var taskFactory       = ObjectFactory.GetInstance <ITaskFactory>();
                var userRepository    = ObjectFactory.GetInstance <IUserRepository>();
                var projectRepository = ObjectFactory.GetInstance <IProjectRepository>();
                var user    = userRepository.GetByUserID(task.CreatedBy.UserId);
                var project = projectRepository.GetByID(task.ProjectId);

                Trex.Server.Core.Model.Task parentTask = null;

                if (task.ParentTaskId.HasValue)
                {
                    parentTask = taskRepository.GetById(task.ParentTaskId.Value);
                }

                if (!taskRepository.ExistsByGuid(task.Guid))
                {
                    var newTask = taskFactory.Create(task.Guid,
                                                     task.CreateDate,
                                                     task.ChangeDate,
                                                     task.Name,
                                                     task.Description,
                                                     user,
                                                     project,
                                                     null,
                                                     parentTask,
                                                     task.WorstCaseEstimate,
                                                     task.BestCaseEstimate,
                                                     task.RealisticEstimate,
                                                     task.TimeEstimated,
                                                     task.TimeLeft
                                                     );

                    taskRepository.Update(newTask);
                    task.Id   = newTask.Id;
                    task.Guid = newTask.Guid;
                }
                else
                {
                    var originalTask = taskRepository.GetByGuid(task.Guid);

                    originalTask.Name              = task.Name;
                    originalTask.Description       = task.Description;
                    originalTask.ParentTask        = parentTask;
                    originalTask.Project           = project;
                    originalTask.RealisticEstimate = task.RealisticEstimate;
                    originalTask.BestCaseEstimate  = task.BestCaseEstimate;
                    originalTask.WorstCaseEstimate = task.WorstCaseEstimate;
                    originalTask.TimeEstimated     = task.TimeEstimated;
                    originalTask.TimeLeft          = task.TimeLeft;
                    originalTask.Closed            = task.Closed;

                    taskRepository.Update(originalTask);
                }
                return(task);
            }
            catch (Exception ex)
            {
                OnError(ex);
                throw;
            }
        }