public CustomTaskStatus Create(CustomTaskStatus status) { if (!ProjectSecurity.CurrentUserAdministrator) { ProjectSecurity.CreateSecurityException(); } var statuses = DaoFactory.StatusDao.Get().Where(r => r.StatusType == status.StatusType).OrderBy(r => r.Order); var lastStatus = statuses.LastOrDefault(); if (lastStatus != null) { status.Order = lastStatus.Order + 1; } else { status.Order = 1; } if (!status.Available.HasValue) { status.Available = statuses.All(r => r.Available == null || r.Available.Value); } return(DaoFactory.StatusDao.Create(status)); }
public override CustomTaskStatus Create(CustomTaskStatus status) { var result = base.Create(status); ResetCache(); return(result); }
public TaskWrapperFull UpdateTask(int taskid, TaskStatus status, int statusId = 0) { var task = EngineFactory.TaskEngine.GetByID(taskid).NotFoundIfNull(); var customStatus = EngineFactory.StatusEngine.GetWithDefaults().FirstOrDefault(r => r.Id == statusId) ?? CustomTaskStatus.GetDefaults().First(r => r.StatusType == status); EngineFactory.TaskEngine.ChangeStatus(task, customStatus); MessageService.Send(Request, MessageAction.TaskUpdatedStatus, MessageTarget.Create(task.ID), task.Project.Title, task.Title, LocalizedEnumConverter.ConvertToString(task.Status)); return(GetTask(taskid)); }
public List <CustomTaskStatus> GetWithDefaults() { var result = Get(); if (!result.Any(r => r.StatusType == TaskStatus.Open && r.IsDefault)) { result.Add(CustomTaskStatus.GetDefault(TaskStatus.Open)); } if (!result.Any(r => r.StatusType == TaskStatus.Closed && r.IsDefault)) { result.Add(CustomTaskStatus.GetDefault(TaskStatus.Closed)); } return(result); }
public void Delete(int id) { if (!ProjectSecurity.CurrentUserAdministrator) { ProjectSecurity.CreateSecurityException(); } var defaultTask = CustomTaskStatus.GetDefaults().FirstOrDefault(r => r.Id == id); if (defaultTask != null) { return; } DaoFactory.StatusDao.Delete(id); }
public virtual void Update(CustomTaskStatus status) { var insert = Update(StatusTable) .Set("title", status.Title) .Set("description", status.Description) .Set("image", status.Image) .Set("imageType", status.ImageType) .Set("color", status.Color) .Set("`order`", status.Order) .Set("statusType", status.StatusType) .Set("available", status.Available) .Where("id", status.Id); Db.ExecuteNonQuery(insert); }
public void Update(CustomTaskStatus status) { if (!ProjectSecurity.CurrentUserAdministrator) { ProjectSecurity.CreateSecurityException(); } var statuses = DaoFactory.StatusDao.Get().Where(r => r.StatusType == status.StatusType).OrderBy(r => r.Order); if (!status.Available.HasValue) { status.Available = statuses.All(r => r.Available == null || r.Available.Value); } DaoFactory.StatusDao.Update(status); }
public virtual CustomTaskStatus Create(CustomTaskStatus status) { var insert = Insert(StatusTable, false) .InColumnValue("id", 0) .InColumnValue("title", status.Title) .InColumnValue("description", status.Description) .InColumnValue("statusType", status.StatusType) .InColumnValue("image", status.Image) .InColumnValue("imageType", status.ImageType) .InColumnValue("color", status.Color) .InColumnValue("`order`", status.Order) .InColumnValue("isDefault", status.IsDefault) .InColumnValue("available", status.Available) .Identity(1, 0, true); status.Id = Db.ExecuteScalar <int>(insert); return(status); }
public CustomTaskStatus UpdateStatus(CustomTaskStatus newStatus) { if (newStatus.IsDefault && !EngineFactory.StatusEngine.Get().Any(r => r.IsDefault && r.StatusType == newStatus.StatusType)) { return(CreateStatus(newStatus)); } var status = EngineFactory.StatusEngine.Get().FirstOrDefault(r => r.Id == newStatus.Id).NotFoundIfNull(); status.Title = Update.IfNotEmptyAndNotEquals(status.Title, newStatus.Title); status.Description = Update.IfNotEmptyAndNotEquals(status.Description, newStatus.Description); status.Color = Update.IfNotEmptyAndNotEquals(status.Color, newStatus.Color); status.Image = Update.IfNotEmptyAndNotEquals(status.Image, newStatus.Image); status.ImageType = Update.IfNotEmptyAndNotEquals(status.ImageType, newStatus.ImageType); status.Order = Update.IfNotEmptyAndNotEquals(status.Order, newStatus.Order); status.StatusType = Update.IfNotEmptyAndNotEquals(status.StatusType, newStatus.StatusType); status.Available = Update.IfNotEmptyAndNotEquals(status.Available, newStatus.Available); EngineFactory.StatusEngine.Update(status); return(status); }
protected override IEnumerable <KeyValuePair <string, object> > GetClientVariables(HttpContext context) { return(new List <KeyValuePair <string, object> >(10) { RegisterResourceSet("ProjectsJSResource", ProjectsJSResource.ResourceManager), RegisterResourceSet("ProjectsFilterResource", ProjectsFilterResource.ResourceManager), RegisterResourceSet("ImportResource", ImportResource.ResourceManager), RegisterResourceSet("TasksResource", TaskResource.ResourceManager), RegisterResourceSet("CommonResource", ProjectsCommonResource.ResourceManager), RegisterResourceSet("TimeTrackingResource", TimeTrackingResource.ResourceManager), RegisterResourceSet("MessageResource", MessageResource.ResourceManager), RegisterResourceSet("ProjectResource", ProjectResource.ResourceManager), RegisterResourceSet("MilestoneResource", MilestoneResource.ResourceManager), RegisterResourceSet("ProjectTemplatesResource", ProjectTemplatesResource.ResourceManager), RegisterResourceSet("ProjectsFileResource", ProjectsFileResource.ResourceManager), RegisterResourceSet("ReportResource", ReportResource.ResourceManager), RegisterObject( new { ViewByDepartments = CustomNamingPeople.Substitute <ReportResource>("ViewByDepartments").HtmlEncode(), ViewByUsers = CustomNamingPeople.Substitute <ReportResource>("ViewByUsers").HtmlEncode(), AllDepartments = CustomNamingPeople.Substitute <ProjectsCommonResource>("AllDepartments").HtmlEncode(), AllUsers = CustomNamingPeople.Substitute <ProjectsCommonResource>("AllUsers").HtmlEncode(), PaymentStatus = new { NotChargeable = ResourceEnumConverter.ConvertToString(PaymentStatus.NotChargeable), NotBilled = ResourceEnumConverter.ConvertToString(PaymentStatus.NotBilled), Billed = ResourceEnumConverter.ConvertToString(PaymentStatus.Billed) }, GrammaticalResource.DayGenitiveSingular, GrammaticalResource.MonthNominative, GrammaticalResource.MonthGenitiveSingular, GrammaticalResource.MonthGenitivePlural, ProjectStatus = new[] { new { id = ProjectStatus.Open, title = ProjectsJSResource.StatusOpenProject }, new { id = ProjectStatus.Paused, title = ProjectsJSResource.StatusSuspendProject }, new { id = ProjectStatus.Closed, title = ProjectsJSResource.StatusClosedProject } }, StartModules = new[] { StartModule.TaskModule, StartModule.ProjectsModule, StartModule.DiscussionModule, StartModule.TimeTrackingModule }.Select(r => new { r.Page, r.StartModuleType, Title = r.Title() }), Statuses = CustomTaskStatus.GetDefaults().Select(r => new { id = r.Id, image = r.Image, imageType = r.ImageType, title = r.Title, description = r.Description, color = r.Color, statusType = r.StatusType, isDefault = r.IsDefault, available = r.Available, canChangeAvailable = r.CanChangeAvailable }) }) }); }
public CustomTask(Guid uid, CustomTaskStatus status, DateTime timeStamp) { Uid = uid; Status = status; TimeStamp = timeStamp; }
public Task ChangeStatus(Task task, CustomTaskStatus newStatus) { ProjectSecurity.DemandEdit(task); if (task == null) { throw new ArgumentNullException("task"); } if (task.Project == null) { throw new Exception("Project can't be null."); } if (task.Project.Status == ProjectStatus.Closed) { throw new Exception(EngineResource.ProjectClosedError); } if (task.Status == newStatus.StatusType && task.CustomTaskStatus == newStatus.Id) { return(task); } var status = StatusEngine.Get().FirstOrDefault(r => r.Id == newStatus.Id); var cannotChange = status != null && status.Available.HasValue && !status.Available.Value && task.CreateBy != SecurityContext.CurrentAccount.ID && task.Project.Responsible != SecurityContext.CurrentAccount.ID && !ProjectSecurity.CurrentUserAdministrator; if (cannotChange) { ProjectSecurity.CreateSecurityException(); } var senders = GetSubscribers(task); if (newStatus.StatusType == TaskStatus.Closed && !DisableNotifications && senders.Count != 0) { NotifyClient.Instance.SendAboutTaskClosing(senders, task); } if (newStatus.StatusType == TaskStatus.Open && !DisableNotifications && senders.Count != 0) { NotifyClient.Instance.SendAboutTaskResumed(senders, task); } task.Status = newStatus.StatusType; task.CustomTaskStatus = newStatus.Id < 0 ? null : (int?)newStatus.Id; task.LastModifiedBy = SecurityContext.CurrentAccount.ID; task.LastModifiedOn = TenantUtil.DateTimeNow(); task.StatusChangedOn = TenantUtil.DateTimeNow(); //subtask if (newStatus.StatusType == TaskStatus.Closed) { if (!task.Responsibles.Any()) { task.Responsibles.Add(SecurityContext.CurrentAccount.ID); } DaoFactory.SubtaskDao.CloseAllSubtasks(task); foreach (var subTask in task.SubTasks) { subTask.Status = TaskStatus.Closed; } } return(DaoFactory.TaskDao.Update(task)); }
public TaskWrapperFull UpdateProjectTask( int taskid, string description, ApiDateTime deadline, ApiDateTime startDate, TaskPriority?priority, string title, int milestoneid, IEnumerable <Guid> responsibles, int?projectID, bool notify, TaskStatus?status, int?progress) { var taskEngine = EngineFactory.TaskEngine; var task = taskEngine.GetByID(taskid).NotFoundIfNull(); if (string.IsNullOrEmpty(title)) { throw new ArgumentException(@"title can't be empty", "title"); } if (!EngineFactory.MilestoneEngine.IsExists(milestoneid) && milestoneid > 0) { throw new ItemNotFoundException("Milestone not found"); } task.Responsibles = new List <Guid>(responsibles.Distinct()); task.Deadline = Update.IfNotEquals(task.Deadline, deadline); task.Description = Update.IfNotEquals(task.Description, description); if (priority.HasValue) { task.Priority = Update.IfNotEquals(task.Priority, priority.Value); } task.Title = Update.IfNotEmptyAndNotEquals(task.Title, title); task.Milestone = Update.IfNotEquals(task.Milestone, milestoneid); task.StartDate = Update.IfNotEquals(task.StartDate, startDate); if (projectID.HasValue) { var project = EngineFactory.ProjectEngine.GetByID((int)projectID).NotFoundIfNull(); task.Project = project; } if (progress.HasValue) { task.Progress = progress.Value; } taskEngine.SaveOrUpdate(task, null, notify); if (status.HasValue) { taskEngine.ChangeStatus(task, CustomTaskStatus.GetDefaults().First(r => r.StatusType == status.Value)); } MessageService.Send(Request, MessageAction.TaskUpdated, MessageTarget.Create(task.ID), task.Project.Title, task.Title); return(GetTask(taskid)); }
private async Task UpdateTaskStatus(CustomTask task, CustomTaskStatus status) { task.SetStatus(status); await _repository.SaveTask(task); }
public void SetStatus(CustomTaskStatus status) { Status = status; TimeStamp = DateTime.Now; }
public CustomTaskStatus CreateStatus(CustomTaskStatus status) { return(EngineFactory.StatusEngine.Create(status)); }
public override void Update(CustomTaskStatus status) { base.Update(status); ResetCache(); }
public TaskWrapperFull UpdateProjectTask( int taskid, string description, ApiDateTime deadline, ApiDateTime startDate, TaskPriority?priority, string title, int milestoneid, IEnumerable <Guid> responsibles, int?projectID, bool notify, TaskStatus?status, int?progress) { var taskEngine = EngineFactory.TaskEngine; var task = taskEngine.GetByID(taskid).NotFoundIfNull(); if (string.IsNullOrEmpty(title)) { throw new ArgumentException(@"title can't be empty", "title"); } if (!EngineFactory.MilestoneEngine.IsExists(milestoneid) && milestoneid > 0) { throw new ItemNotFoundException("Milestone not found"); } var distinctResponsibles = new List <Guid>(responsibles.Distinct()); var hasChanges = !(task.Responsibles.Count == distinctResponsibles.Count && task.Responsibles.All(distinctResponsibles.Contains)); task.Responsibles = distinctResponsibles; task.Deadline = Update.IfNotEquals(TenantUtil.DateTimeToUtc(task.Deadline), deadline, ref hasChanges); task.Description = Update.IfNotEquals(task.Description, description, ref hasChanges); if (priority.HasValue) { task.Priority = Update.IfNotEquals(task.Priority, priority.Value, ref hasChanges); } task.Title = Update.IfNotEmptyAndNotEquals(task.Title, title, ref hasChanges); task.Milestone = Update.IfNotEquals(task.Milestone, milestoneid, ref hasChanges); task.StartDate = Update.IfNotEquals(TenantUtil.DateTimeToUtc(task.StartDate), startDate, ref hasChanges); if (projectID.HasValue) { if (task.Project.ID != projectID.Value) { var project = EngineFactory.ProjectEngine.GetByID(projectID.Value).NotFoundIfNull(); task.Project = project; hasChanges = true; } } if (progress.HasValue) { task.Progress = Update.IfNotEquals(task.Progress, progress.Value, ref hasChanges); } if (hasChanges) { taskEngine.SaveOrUpdate(task, null, notify); } if (status.HasValue) { var newStatus = CustomTaskStatus.GetDefaults().First(r => r.StatusType == status.Value); if (task.Status != newStatus.StatusType || task.CustomTaskStatus != newStatus.Id) { hasChanges = true; taskEngine.ChangeStatus(task, newStatus); } } if (hasChanges) { MessageService.Send(Request, MessageAction.TaskUpdated, MessageTarget.Create(task.ID), task.Project.Title, task.Title); } return(GetTask(taskid)); }