protected void Page_Load(object sender, EventArgs e)
        {
            _hintPopup.Options.IsPopup           = true;
            _hintPopupTaskRemove.Options.IsPopup = true;
            _newLinkError.Options.IsPopup        = true;

            SubtasksCount = Task.SubTasks.Count;

            CanEditTask        = ProjectSecurity.CanEdit(Task);
            CanCreateSubtask   = ProjectSecurity.CanCreateSubtask(Task);
            CanCreateTimeSpend = ProjectSecurity.CanCreateTimeSpend(Task);
            CanDeleteTask      = ProjectSecurity.CanDelete(Task);

            InitAttachments();
            InitCommentBlock(commentList, Task);

            var timeList = Page.EngineFactory.TimeTrackingEngine.GetByTask(Task.ID);

            TaskTimeSpend = timeList.Sum(timeSpend => timeSpend.Hours).ToString();
            TaskTimeSpend = TaskTimeSpend.Replace(',', '.');

            var taskCount = Page.EngineFactory.CommentEngine.Count(Task);

            CommentsCountTitle = taskCount != 0 ? string.Format("({0})", taskCount.ToString(CultureInfo.InvariantCulture)) : "";
        }
示例#2
0
        public static List <ProjectCommonModule> GetModules(Project project)
        {
            var modules = new List <ProjectCommonModule>
            {
                new MilestonesModule(project),
                new TasksModule(project),
                new ProjectTeamModule(project)
            };

            if (ProjectSecurity.CanReadFiles(project))
            {
                modules.Add(new DocumentsModule(project));
            }

            if (ProjectSecurity.CanReadMessages(project))
            {
                modules.Add(new MessagesModule(project));
            }

            if (ProjectSecurity.CanCreateTimeSpend(project))
            {
                modules.Add(new TimeTrackingModule(project));
            }


            var crmEnabled = WebItemManager.Instance[new Guid("6743007C-6F95-4d20-8C88-A8601CE5E76D")];

            if (crmEnabled != null && !crmEnabled.IsDisabled() && ProjectSecurity.CanReadContacts(project))
            {
                modules.Add(new ContactsModule(project));
            }

            return(modules.OrderBy(r => r.Context.DefaultSortOrder).ToList());
        }
示例#3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Utility.RegisterTypeForAjax(typeof(TaskDescriptionView), Page);

            _hintPopup.Options.IsPopup           = true;
            _hintPopupTaskRemove.Options.IsPopup = true;
            _newLinkError.Options.IsPopup        = true;

            IsMobile = MobileDetector.IsRequestMatchesMobile(Context);

            CanReadFiles       = ProjectSecurity.CanReadFiles(Task.Project);
            CanEditTask        = ProjectSecurity.CanEdit(Task);
            CanCreateSubtask   = ProjectSecurity.CanCreateSubtask(Task);
            CanCreateTimeSpend = ProjectSecurity.CanCreateTimeSpend(Task);
            CanDeleteTask      = ProjectSecurity.CanDelete(Task);
            SubtasksCount      = Task.SubTasks.Count;

            if (CanReadFiles)
            {
                InitAttachments();
            }

            InitCommentBlock();

            var timeList = Global.EngineFactory.GetTimeTrackingEngine().GetByTask(Task.ID);

            TaskTimeSpend = timeList.Sum(timeSpend => timeSpend.Hours).ToString();
            TaskTimeSpend = TaskTimeSpend.Replace(',', '.');
        }
示例#4
0
        public TaskWrapper(Task task)
        {
            Id          = task.ID;
            Title       = task.Title;
            Description = task.Description;
            Status      = (int)task.Status;

            if (Status > 2)
            {
                Status = 1;
            }

            if (task.Responsibles != null)
            {
                Responsibles = task.Responsibles.Select(EmployeeWraper.Get).OrderBy(r => r.DisplayName).ToList();
            }


            Deadline     = (task.Deadline == DateTime.MinValue ? null : new ApiDateTime(task.Deadline, TimeZoneInfo.Local));
            Priority     = task.Priority;
            ProjectOwner = new SimpleProjectWrapper(task.Project);
            MilestoneId  = task.Milestone;
            Created      = (ApiDateTime)task.CreateOn;
            CreatedBy    = EmployeeWraper.Get(task.CreateBy);
            Updated      = (ApiDateTime)task.LastModifiedOn;
            StartDate    = task.StartDate.Equals(DateTime.MinValue) ? null : (ApiDateTime)task.StartDate;

            if (task.CreateBy != task.LastModifiedBy)
            {
                UpdatedBy = EmployeeWraper.Get(task.LastModifiedBy);
            }

            if (task.SubTasks != null)
            {
                Subtasks = task.SubTasks.Select(x => new SubtaskWrapper(x, task)).ToList();
            }

            Progress = task.Progress;

            if (task.Milestone != 0 && task.MilestoneDesc != null)
            {
                Milestone = new SimpleMilestoneWrapper(task.MilestoneDesc);
            }

            if (task.Links.Any())
            {
                Links = task.Links.Select(r => new TaskLinkWrapper(r));
            }

            CanEdit            = ProjectSecurity.CanEdit(task);
            CanCreateSubtask   = ProjectSecurity.CanCreateSubtask(task);
            CanCreateTimeSpend = ProjectSecurity.CanCreateTimeSpend(task);
            CanDelete          = ProjectSecurity.CanDelete(task);
            CanReadFiles       = ProjectSecurity.CanReadFiles(task.Project);
        }
        public static bool CanCreateTime(bool checkConreteProject = false)
        {
            if (checkConreteProject && IsInConcreteProject)
            {
                var project   = GetCurrentProject();
                var taskCount = Global.EngineFactory.GetProjectEngine().GetTaskCount(project.ID, null);
                return(taskCount > 0 && ProjectSecurity.CanCreateTimeSpend(project));
            }

            return(CanCreate(ProjectSecurity.CanCreateTimeSpend, false) && Global.EngineFactory.GetTaskEngine().GetByFilterCount(new TaskFilter()) > 0);
        }
示例#6
0
        public static bool CanCreateTime(bool checkConreteProject = false)
        {
            if (checkConreteProject && IsInConcreteProject)
            {
                var project   = GetCurrentProject();
                var taskCount = Global.EngineFactory.GetProjectEngine().GetTaskCount(project.ID, null);
                return(project.Status != ProjectStatus.Closed && taskCount > 0 && ProjectSecurity.CanCreateTimeSpend(project));
            }

            return(CanCreate(ProjectSecurity.CanCreateTimeSpend, false));
        }
示例#7
0
        public bool CanCreateTime(bool checkConreteProject = false)
        {
            if (checkConreteProject && IsInConcreteProject)
            {
                var project   = GetCurrentProject();
                var taskCount = engineFactory.ProjectEngine.GetTaskCount(project.ID, null);
                return(taskCount > 0 && ProjectSecurity.CanCreateTimeSpend(project));
            }

            return(CanCreate(ProjectSecurity.CanCreateTimeSpend, false) && AllTasksCount > 0);
        }
示例#8
0
        public ProjectSecurityInfo(Project project)
        {
            CanCreateMilestone = ProjectSecurity.CanCreateMilestone(project);
            CanCreateMessage   = ProjectSecurity.CanCreateMessage(project);
            CanCreateTask      = ProjectSecurity.CanCreateTask(project);
            CanCreateTimeSpend = ProjectSecurity.CanCreateTimeSpend(project);

            CanEditTeam       = ProjectSecurity.CanEditTeam(project);
            CanReadFiles      = ProjectSecurity.CanReadFiles(project);
            CanReadMilestones = ProjectSecurity.CanReadMilestones(project);
            CanReadMessages   = ProjectSecurity.CanReadMessages(project);
            CanReadTasks      = ProjectSecurity.CanReadTasks(project);
            IsInTeam          = ProjectSecurity.IsInTeam(project, SecurityContext.CurrentAccount.ID, false);
            CanLinkContact    = ProjectSecurity.CanLinkContact(project);
            CanReadContacts   = ProjectSecurity.CanReadContacts(project);
        }
        public SimpleTaskWrapper(Task task)
        {
            ID          = task.ID;
            Title       = task.Title;
            Description = task.Description;
            Status      = (int)task.Status;

            if (task.Responsibles != null)
            {
                Responsibles = task.Responsibles;
            }

            Deadline     = (task.Deadline == DateTime.MinValue ? null : new ApiDateTime(task.Deadline, TimeZoneInfo.Local));
            Priority     = task.Priority;
            ProjectOwner = task.Project.ID;
            MilestoneId  = task.Milestone;
            Created      = (ApiDateTime)task.CreateOn;
            CreatedBy    = task.CreateBy;
            Updated      = (ApiDateTime)task.LastModifiedOn;
            StartDate    = task.StartDate.Equals(DateTime.MinValue) ? null : (ApiDateTime)task.StartDate;

            if (task.CreateBy != task.LastModifiedBy)
            {
                UpdatedBy = task.LastModifiedBy;
            }

            if (task.SubTasks != null)
            {
                SubtasksCount = task.SubTasks.Count(r => r.Status == TaskStatus.Open); // somehow don't work :(
            }

            Progress    = task.Progress;
            MilestoneId = task.Milestone;

            if (task.Links.Any())
            {
                Links = task.Links.Select(r => new TaskLinkWrapper(r));
            }

            CanEdit            = ProjectSecurity.CanEdit(task);
            CanCreateSubtask   = ProjectSecurity.CanCreateSubtask(task);
            CanCreateTimeSpend = ProjectSecurity.CanCreateTimeSpend(task);
            CanDelete          = ProjectSecurity.CanDelete(task);
        }
示例#10
0
        private void RenderContentForTimer()
        {
            var participantId = Guid.Empty;

            if (!WebItemSecurity.IsProductAdministrator(EngineFactory.ProductId, SecurityContext.CurrentAccount.ID))
            {
                participantId = Participant.ID;
            }

            UserProjects = EngineFactory.ProjectEngine.GetByFilter(new TaskFilter
            {
                ProjectStatuses = new List <ProjectStatus> {
                    ProjectStatus.Open
                },
                SortBy    = "title",
                SortOrder = true
            }).Where(r => r.TaskCountTotal > 0).ToList();

            if (UserProjects.Any() && (Project == null || !UserProjects.Contains(Project)))
            {
                Project = UserProjects.First();
            }

            var tasks = EngineFactory.TaskEngine.GetByProject(Project.ID, null, Participant.IsVisitor ? participantId : Guid.Empty).Where(r => ProjectSecurity.CanCreateTimeSpend(r)).ToList();

            OpenUserTasks   = tasks.Where(r => r.Status == TaskStatus.Open).OrderBy(r => r.Title);
            ClosedUserTasks = tasks.Where(r => r.Status == TaskStatus.Closed).OrderBy(r => r.Title);

            Users = EngineFactory.ProjectEngine.GetProjectTeamExcluded(Project.ID)
                    .OrderBy(r => DisplayUserSettings.GetFullUserName(r.UserInfo))
                    .Where(r => !r.UserInfo.IsVisitor())
                    .Where(r => !r.IsRemovedFromTeam || tasks.Any(t => t.Responsibles.Contains(r.ID)))
                    .ToList();

            if (!string.IsNullOrEmpty(Request.QueryString["taskId"]))
            {
                Target = int.Parse(Request.QueryString["taskId"]);
            }
        }
示例#11
0
 public bool CanCreateTime()
 {
     return(ProjectFat.GetTasks().Count(t => t.Status == TaskStatus.Open) > 0 && ProjectSecurity.CanCreateTimeSpend(ProjectFat.Project));
 }
示例#12
0
        protected override IEnumerable <KeyValuePair <string, object> > GetClientVariables(HttpContext context)
        {
            var filter = new TaskFilter
            {
                SortBy          = "title",
                SortOrder       = true,
                ProjectStatuses = new List <ProjectStatus> {
                    ProjectStatus.Open
                }
            };

            var projects = Global.EngineFactory.ProjectEngine.GetByFilter(filter)
                           .Select(pr => new
            {
                id          = pr.ID,
                title       = pr.Title,
                responsible = pr.Responsible,
                //created = (ApiDateTime) pr.CreateOn,
                security = new
                {
                    canCreateMilestone = ProjectSecurity.CanCreateMilestone(pr),
                    canCreateMessage   = ProjectSecurity.CanCreateMessage(pr),
                    canCreateTask      = ProjectSecurity.CanCreateTask(pr),
                    canCreateTimeSpend = ProjectSecurity.CanCreateTimeSpend(pr),
                    canEditTeam        = ProjectSecurity.CanEditTeam(pr),
                    canReadFiles       = ProjectSecurity.CanReadFiles(pr),
                    canReadMilestones  = ProjectSecurity.CanReadMilestones(pr),
                    canReadMessages    = ProjectSecurity.CanReadMessages(pr),
                    canReadTasks       = ProjectSecurity.CanReadTasks(pr),
                    isInTeam           = ProjectSecurity.IsInTeam(pr, SecurityContext.CurrentAccount.ID, false),
                    canLinkContact     = ProjectSecurity.CanLinkContact(pr)
                },
                isPrivate      = pr.Private,
                status         = pr.Status,
                taskCountTotal = pr.TaskCountTotal
            }).ToList();

            var tags = Global.EngineFactory.TagEngine.GetTags().Select(r => new { value = r.Key, title = r.Value.HtmlEncode() }).ToList();

            var result = new List <KeyValuePair <string, object> >(1)
            {
                RegisterObject(
                    new
                {
                    Global.EntryCountOnPage,
                    Global.VisiblePageCount,
                    Projects      = new { response = projects },
                    Tags          = new { response = tags },
                    ProjectsCount = Global.EngineFactory.ProjectEngine.GetByFilterCount(new TaskFilter())
                })
            };

            filter = new TaskFilter
            {
                SortBy            = "deadline",
                SortOrder         = false,
                MilestoneStatuses = new List <MilestoneStatus> {
                    MilestoneStatus.Open
                }
            };

            var milestones = Global.EngineFactory.MilestoneEngine.GetByFilter(filter)
                             .Select(m => new
            {
                id           = m.ID,
                title        = m.Title,
                deadline     = SetDate(m.DeadLine, TimeZoneInfo.Local),
                projectOwner = new { id = m.Project.ID },
                status       = (int)m.Status
            }).ToList();

            result.Add(RegisterObject(new { Milestones = new { response = milestones } }));

            return(result);
        }
示例#13
0
 public bool CanCreateTimeSpend()
 {
     return(Global.ModuleManager.IsVisible(ModuleType.TimeTracking) &&
            ProjectSecurity.CanCreateTimeSpend(Task.Project));
 }