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);
        }
Beispiel #11
0
 public List<Milestone> GetMilestones(MilestoneStatus status)
 {
     return GetMilestones().FindAll(mil => mil.Status == status);
 }
Beispiel #12
0
        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));
        }
Beispiel #13
0
        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));
        }
Beispiel #14
0
 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)));
 }