public List<Milestone> GetByStatus(int projectId, MilestoneStatus milestoneStatus) { var milestones = milestoneDao.GetByStatus(projectId, milestoneStatus).Where(CanRead).ToList(); milestones.Sort((x, y) => { if (x.Status != y.Status) return x.Status.CompareTo(y.Status); if (x.Status == MilestoneStatus.Open) return x.DeadLine.CompareTo(y.DeadLine); return y.DeadLine.CompareTo(x.DeadLine); }); return milestones; }
public IEnumerable<MilestoneWrapper> GetMilestonesByFilter( int projectid, int tag, MilestoneStatus? status, ApiDateTime deadlineStart, ApiDateTime deadlineStop, Guid? taskResponsible, int lastId, bool myProjects, Guid milestoneResponsible) { var milestoneEngine = EngineFactory.GetMilestoneEngine(); var filter = new TaskFilter { UserId = milestoneResponsible, ParticipantId = taskResponsible, TagId = tag, FromDate = deadlineStart, ToDate = deadlineStop, SortBy = _context.SortBy, SortOrder = !_context.SortDescending, SearchText = _context.FilterValue, Offset = _context.StartIndex, Max = _context.Count, LastId = lastId, MyProjects = myProjects }; if (projectid != 0) { filter.ProjectIds.Add(projectid); } if (status != null) { filter.MilestoneStatuses.Add((MilestoneStatus)status); } _context.SetDataPaginated(); _context.SetDataFiltered(); _context.SetDataSorted(); _context.TotalCount = milestoneEngine.GetByFilterCount(filter); return milestoneEngine.GetByFilter(filter).NotFoundIfNull().Select(r => new MilestoneWrapper(r)).ToSmartList(); }
public Milestone ChangeStatus(Milestone milestone, MilestoneStatus newStatus) { ProjectSecurity.DemandEdit(milestone); if (milestone == null) throw new ArgumentNullException("milestone"); if (milestone.Project == null) throw new Exception("Project can be null."); if (milestone.Status == newStatus) return milestone; if (milestone.ActiveTaskCount != 0 && newStatus == MilestoneStatus.Closed) throw new Exception("Can not close a milestone with open tasks"); milestone.Status = newStatus; milestone.LastModifiedBy = SecurityContext.CurrentAccount.ID; milestone.LastModifiedOn = TenantUtil.DateTimeNow(); milestone.StatusChangedOn = TenantUtil.DateTimeNow(); var senders = new HashSet<Guid> { milestone.Project.Responsible, milestone.CreateBy, milestone.Responsible }; if (newStatus == MilestoneStatus.Closed && !_engineFactory.DisableNotifications && senders.Count != 0) { NotifyClient.Instance.SendAboutMilestoneClosing(senders, milestone); } if (newStatus == MilestoneStatus.Open && !_engineFactory.DisableNotifications && senders.Count != 0) { NotifyClient.Instance.SendAboutMilestoneResumed(senders, milestone); } return _milestoneDao.Save(milestone); }
public MilestoneWrapper UpdateMilestone(int id, MilestoneStatus status) { var milestoneEngine = EngineFactory.GetMilestoneEngine(); var milestone = milestoneEngine.GetByID(id).NotFoundIfNull(); milestoneEngine.ChangeStatus(milestone, status); return new MilestoneWrapper(milestone); }
public MilestoneWrapper UpdateMilestone(int id, string title, ApiDateTime deadline, bool isKey, MilestoneStatus status, bool isNotify, string description, int projectID, Guid responsible, bool notifyResponsible) { if (title == null) throw new ArgumentNullException("title"); if (deadline == DateTime.MinValue) throw new ArgumentNullException("deadline"); var milestoneEngine = EngineFactory.GetMilestoneEngine(); var milestone = milestoneEngine.GetByID(id).NotFoundIfNull(); ProjectSecurity.DemandEdit(milestone); milestone.Description = Update.IfNotEquals(milestone.Description, description); milestone.Title = Update.IfNotEmptyAndNotEquals(milestone.Title, title); milestone.DeadLine = Update.IfNotEmptyAndNotEquals(milestone.DeadLine, deadline); milestone.IsKey = isKey; milestone.IsNotify = isNotify; milestone.Responsible = Update.IfNotEmptyAndNotEquals(milestone.Responsible, responsible); if (projectID != 0) { var project = EngineFactory.GetProjectEngine().GetByID(projectID).NotFoundIfNull(); milestone.Project = project; } milestoneEngine.SaveOrUpdate(milestone, notifyResponsible); return new MilestoneWrapper(milestone); }
public IEnumerable<MilestoneWrapper> GetProjectMilestones(int id, MilestoneStatus status) { var project = EngineFactory.GetProjectEngine().GetByID(id).NotFoundIfNull(); if (!ProjectSecurity.CanReadMilestones(project)) throw ProjectSecurity.CreateSecurityException(); var milestones = EngineFactory.GetMilestoneEngine().GetByStatus(id, status); return milestones.Select(x => new MilestoneWrapper(x)).ToSmartList(); }
public List<Milestone> GetByStatus(int projectId, MilestoneStatus milestoneStatus) { using (var db = new DbManager(DatabaseId)) { return db.ExecuteList(CreateQuery().Where("t.project_id", projectId).Where("t.status", milestoneStatus)) .ConvertAll(ToMilestone); } }
public MilestoneWrapper UpdateMilestone(int id, MilestoneStatus status) { var milestoneEngine = EngineFactory.GetMilestoneEngine(); var milestone = milestoneEngine.GetByID(id).NotFoundIfNull(); milestone = milestoneEngine.ChangeStatus(milestone, status); MessageService.Send(_context, MessageAction.MilestoneUpdatedStatus, milestone.Project.Title, milestone.Title, LocalizedEnumConverter.ConvertToString(milestone.Status)); return new MilestoneWrapper(milestone); }
public MilestoneWrapper UpdateMilestone(int id, string title, ApiDateTime deadline, bool? isKey, MilestoneStatus status, bool? isNotify, string description, int projectID, Guid responsible, bool notifyResponsible) { var milestoneEngine = EngineFactory.GetMilestoneEngine(); var milestone = milestoneEngine.GetByID(id).NotFoundIfNull(); ProjectSecurity.DemandEdit(milestone); milestone.Description = Update.IfNotEmptyAndNotEquals(milestone.Description, description); milestone.Title = Update.IfNotEmptyAndNotEquals(milestone.Title, title); milestone.DeadLine = Update.IfNotEmptyAndNotEquals(milestone.DeadLine, deadline); milestone.Responsible = Update.IfNotEmptyAndNotEquals(milestone.Responsible, responsible); if (isKey.HasValue) milestone.IsKey = isKey.Value; if (isNotify.HasValue) milestone.IsNotify = isNotify.Value; if (projectID != 0) { var project = EngineFactory.GetProjectEngine().GetByID(projectID).NotFoundIfNull(); milestone.Project = project; } milestone = milestoneEngine.SaveOrUpdate(milestone, notifyResponsible); MessageService.Send(Request, MessageAction.MilestoneUpdated, milestone.Project.Title, milestone.Title); return new MilestoneWrapper(milestone); }
public Milestone ChangeStatus(Milestone milestone, MilestoneStatus newStatus) { ProjectSecurity.DemandEdit(milestone); if (milestone == null) throw new ArgumentNullException("milestone"); if (milestone.Project == null) throw new Exception("Project can be null."); if (milestone.Status == newStatus) return milestone; switch (newStatus) { case MilestoneStatus.Closed: TimeLinePublisher.Milestone(milestone, EngineResource.ActionText_Closed, UserActivityConstants.ActivityActionType, UserActivityConstants.ImportantActivity); break; case MilestoneStatus.Open: TimeLinePublisher.Milestone(milestone, EngineResource.ActionText_Reopen, UserActivityConstants.ActivityActionType, UserActivityConstants.NormalActivity); break; } milestone.Status = newStatus; milestone.LastModifiedBy = SecurityContext.CurrentAccount.ID; milestone.LastModifiedOn = TenantUtil.DateTimeNow(); milestone.StatusChangedOn = TenantUtil.DateTimeNow(); var senders = new HashSet<Guid> { milestone.Project.Responsible, milestone.CreateBy, milestone.Responsible }; senders.Remove(SecurityContext.CurrentAccount.ID); var recipientsProvider = NotifySource.Instance.GetRecipientsProvider(); var recipients = senders.Select(r => recipientsProvider.GetRecipient(r.ToString())).Where(r => r != null).ToList(); if (newStatus == MilestoneStatus.Closed && !_engineFactory.DisableNotifications && recipients.Count != 0) { NotifyClient.Instance.SendAboutMilestoneClosing(recipients, milestone); } return milestoneDao.Save(milestone); }
public List<Milestone> GetMilestones(MilestoneStatus status) { return GetMilestones().FindAll(mil => mil.Status == status); }
public MilestoneWrapper UpdateMilestone(int id, string title, ApiDateTime deadline, bool?isKey, MilestoneStatus status, bool?isNotify, string description, int projectID, Guid responsible, bool notifyResponsible) { var milestoneEngine = EngineFactory.MilestoneEngine; var milestone = milestoneEngine.GetByID(id).NotFoundIfNull(); ProjectSecurity.DemandEdit(milestone); milestone.Description = Update.IfNotEmptyAndNotEquals(milestone.Description, description); milestone.Title = Update.IfNotEmptyAndNotEquals(milestone.Title, title); milestone.DeadLine = Update.IfNotEmptyAndNotEquals(milestone.DeadLine, deadline); milestone.Responsible = Update.IfNotEmptyAndNotEquals(milestone.Responsible, responsible); if (isKey.HasValue) { milestone.IsKey = isKey.Value; } if (isNotify.HasValue) { milestone.IsNotify = isNotify.Value; } if (projectID != 0) { var project = EngineFactory.ProjectEngine.GetByID(projectID).NotFoundIfNull(); milestone.Project = project; } milestoneEngine.SaveOrUpdate(milestone, notifyResponsible); MessageService.Send(Request, MessageAction.MilestoneUpdated, MessageTarget.Create(milestone.ID), milestone.Project.Title, milestone.Title); return(new MilestoneWrapper(milestone)); }
public MilestoneWrapper UpdateMilestone(int id, string title, ApiDateTime deadline, bool isKey, MilestoneStatus status, bool isNotify, string description, int projectID, Guid responsible, bool notifyResponsible) { if (title == null) { throw new ArgumentNullException("title"); } if (deadline == DateTime.MinValue) { throw new ArgumentNullException("deadline"); } var milestoneEngine = EngineFactory.GetMilestoneEngine(); var milestone = milestoneEngine.GetByID(id).NotFoundIfNull(); ProjectSecurity.DemandEdit(milestone); milestone.Description = Update.IfNotEquals(milestone.Description, description); milestone.Title = Update.IfNotEmptyAndNotEquals(milestone.Title, title); milestone.DeadLine = Update.IfNotEmptyAndNotEquals(milestone.DeadLine, deadline); milestone.IsKey = isKey; milestone.IsNotify = isNotify; milestone.Responsible = Update.IfNotEmptyAndNotEquals(milestone.Responsible, responsible); if (projectID != 0) { var project = EngineFactory.GetProjectEngine().GetByID(projectID).NotFoundIfNull(); milestone.Project = project; } milestone = milestoneEngine.SaveOrUpdate(milestone, notifyResponsible); MessageService.Send(_context, MessageAction.MilestoneUpdated, milestone.Project.Title, milestone.Title); return(new MilestoneWrapper(milestone)); }
public List <Milestone> GetByStatus(int projectId, MilestoneStatus milestoneStatus) { return(DbManager .ExecuteList(CreateQuery().Where("t.project_id", projectId).Where("t.status", milestoneStatus)) .ConvertAll(r => ToMilestone(r))); }