private void SinglePersonData()
        {
            var extraColumns = new Dictionary <string, string>
            {
                { "Project", "Project" }
            };
            CriteriaOperator filter = new BinaryOperator("OwnerId", AuthorizationManager.CurrentUserId, BinaryOperatorType.Equal);

            filter &= new BinaryOperator("StartDate", DateTime.Today, BinaryOperatorType.LessOrEqual);
            filter &= new BinaryOperator(new OperandProperty("ActualWorkHours"), new OperandProperty("Effort"), BinaryOperatorType.Greater);
            if (ObjectId != Guid.Empty)
            {
                filter &= new BinaryOperator("TaskId", ObjectId, BinaryOperatorType.Equal);
            }
            var         ownerProjectTasks = _objectSpace.GetObjects("ProjectTask", filter, extraColumns) as IList;
            List <Guid> exsitsTaskIdList  = new List <Guid>();

            if (ownerProjectTasks != null && ownerProjectTasks.AsQueryable().Count() > 0)
            {
                foreach (var task in ownerProjectTasks)
                {
                    TaskTimeHistory item        = new TaskTimeHistory();
                    var             projectTask = ConvertData.Convert <Katrin.Domain.Impl.ProjectTask>(task);
                    exsitsTaskIdList.Add(projectTask.TaskId);
                    item.TaskId          = projectTask.TaskId;
                    item.Name            = projectTask.Name;
                    item.ActualWorkHours = projectTask.ActualWorkHours ?? 0;
                    item.RecordOn        = DateTime.Today;
                    item.StartDate       = projectTask.StartDate;
                    item.EndDate         = projectTask.EndDate;
                    item.RemainderTime   = (projectTask.ActualWorkHours ?? 0) - (projectTask.Effort ?? 0);
                    var exsitsItems = _projectTaskList.Where(c => c.TaskId == item.TaskId).ToList();
                    foreach (var eitem in exsitsItems)
                    {
                        eitem.RemainderTime = item.RemainderTime;
                    }

                    item.TaskTimeHistoryId = Guid.Empty;
                    item.RecordPerson      = TaskOperator.GetUserName(AuthorizationManager.CurrentUserId);
                    if (projectTask.Project != null)
                    {
                        item.ProjectName = projectTask.Project.Name;
                    }
                    if (_projectTaskList.Any(c => c.Effort == 0 && c.TaskTimeHistoryId == Guid.Empty &&
                                             c.ActualInput == 0 && c.TaskId == item.TaskId))
                    {
                        continue;
                    }
                    _projectTaskList.Insert(0, item);
                }
            }
            var notExsitsList = _projectTaskList.Where(c => !exsitsTaskIdList.Contains(c.TaskId)).ToList();

            foreach (var notItem in notExsitsList)
            {
                notItem.RemainderTime = 0;
            }
        }
示例#2
0
        private void SetHistory(TaskTimeHistory task)
        {
            var taskTimeHistory = (Katrin.Domain.Impl.TaskTimeHistory)_objectSpace.GetOrNew("TaskTimeHistory", task.TaskTimeHistoryId, null);

            task.TaskTimeHistoryId      = taskTimeHistory.TaskTimeHistoryId;
            taskTimeHistory.TaskId      = task.TaskId;
            taskTimeHistory.ActualInput = task.ActualInput;
            taskTimeHistory.Effort      = task.Effort;
            taskTimeHistory.Overtime    = task.Overtime;
            taskTimeHistory.Description = task.Description;
            taskTimeHistory.RecordOn    = task.RecordOn;
        }
示例#3
0
        private void OnDeleteData(object sender, EventArgs <int> e)
        {
            if (_projectTaskList.Count <= e.Data)
            {
                return;
            }
            TaskTimeHistory task = _projectTaskList[e.Data];

            if (task == null)
            {
                return;
            }
            if (task.TaskTimeHistoryId != Guid.Empty)
            {
                _deleteTaskList.Add(task);
            }
            _projectTaskList.Remove(task);
            _taskEffortView.Bind(_projectTaskList);
        }
        private bool UpdateTask(TaskTimeHistory task)
        {
            var projectTask = new Katrin.Domain.Impl.ProjectTask();

            if (taskList.Select(c => c.TaskId).Contains(task.TaskId))
            {
                projectTask = taskList.Where(c => c.TaskId == task.TaskId).First();
            }
            else
            {
                projectTask = (Katrin.Domain.Impl.ProjectTask)_objectSpace.GetOrNew("ProjectTask", task.TaskId, null);
                taskList.Add(projectTask);
            }
            projectTask.ActualInput = Convert.ToDouble(projectTask.ActualInput ?? 0) + task.ActualInput;
            projectTask.Effort      = Convert.ToDouble(projectTask.Effort ?? 0) + task.Effort;
            if (task.TaskTimeHistoryId != Guid.Empty)
            {
                projectTask.Effort -= task.SourceEffort;
            }
            task.SourceEffort    = task.Effort;
            projectTask.Overtime = Convert.ToDouble(projectTask.Overtime ?? 0) + task.Overtime;
            if (task.TaskTimeHistoryId == Guid.Empty)
            {
                projectTask.Description = projectTask.Description ?? " " + task.Description;
            }

            TaskOperator.UpdateTaskStatus(projectTask);

            if (projectTask.Effort > projectTask.ActualWorkHours)
            {
                _newEffortView.ValidateResult = false;
                XtraMessageBox.Show(StringParser.Parse("OverEffortMessage"),
                                    StringParser.Parse("Katrin"),
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Information,
                                    MessageBoxDefaultButton.Button1);
                return(false);
            }
            return(true);
        }
示例#5
0
        protected override void OnViewSet()
        {
            if (!(_detailView is ITaskEffortDetailView))
            {
                return;
            }
            _taskEffortView = (ITaskEffortDetailView)_detailView;
            _taskEffortView.OnCreateData += OnCreateData;
            _taskEffortView.OnDeleteData += OnDeleteData;
            _editTaskTimeHistory          = new TaskTimeHistory();
            _editTaskTimeHistory.RecordOn = DateTime.Today;
            InitData();
            _taskEffortView.Bind(new List <TaskTimeHistory>()
            {
                _editTaskTimeHistory
            });
            _taskEffortView.ObjectChanged += View_ObjectChanged;
            HasChanges = false;
            var message = new UpdateRibbonItemMessage(this.WorkSpaceID, this.ObjectName);

            EventAggregationManager.SendMessage(message);
        }
示例#6
0
        private bool UpdateTask(Katrin.Domain.Impl.ProjectTask taskEntity, TaskTimeHistory task)
        {
            if (taskEntity == null)
            {
                return(true);
            }
            taskEntity.ActualInput = Convert.ToDouble(taskEntity.ActualInput ?? 0) + task.ActualInput;
            taskEntity.Effort      = Convert.ToDouble(taskEntity.Effort ?? 0) + task.Effort;
            taskEntity.Overtime    = Convert.ToDouble(taskEntity.Overtime ?? 0) + task.Overtime;

            TaskOperator.UpdateTaskStatus(taskEntity);

            if (taskEntity.Effort > taskEntity.ActualWorkHours)
            {
                _taskEffortView.ValidateResult = false;
                XtraMessageBox.Show(StringParser.Parse("OverEffortMessage"),
                                    StringParser.Parse("Katrin"),
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Information,
                                    MessageBoxDefaultButton.Button1);
                return(false);
            }
            return(true);
        }