public void SaveSprint(Sprint sprint) { using (var context = new ScrumFactoryEntities(this.connectionString)) { Sprint oldSprint = GetSprint(sprint.SprintUId); // if is a new item insert it if (oldSprint == null) { context.Sprints.AddObject(sprint); // updates the item } else { context.AttachTo("Sprints", oldSprint); context.ApplyCurrentValues <Sprint>("Sprints", sprint); } context.SaveChanges(); } }
public ICollection <ProjectEvent> GetUserProjectEvents(string memberUId) { List <ProjectEvent> events = new List <ProjectEvent>(); using (var context = new ScrumFactoryEntities(this.connectionString)) { System.DateTime limitDate = System.DateTime.Today.AddDays(4); ICollection <Project> projects = context.Projects.Include("Sprints").Where(p => (p.Status == (short)ProjectStatus.PROJECT_STARTED || p.Status == (short)ProjectStatus.PROPOSAL_APPROVED) && p.ProjectType != (short)ProjectTypes.SUPPORT_PROJECT && p.Memberships.Any(ms => ms.MemberUId == memberUId && ms.IsActive == true) && p.Sprints.Any(s => (s.StartDate < limitDate && s.StartDate >= System.DateTime.Today) || // sprints que vão começar (s.EndDate < limitDate && s.EndDate >= System.DateTime.Today))) // sprints que vão acabar .ToList(); foreach (Project p in projects) { ProjectEvent e = new ProjectEvent() { ProjectUId = p.ProjectUId, ProjectName = p.ProjectName, ProjectNumber = p.ProjectNumber, EventType = (short)ProjectEventTypes.SPRINT_END }; Sprint sprintThatWillStart = p.Sprints.OrderBy(s => s.SprintNumber).FirstOrDefault(s => s.StartDate.Date < limitDate && s.StartDate.Date >= System.DateTime.Today); Sprint sprintThatWillEnd = p.Sprints.OrderBy(s => s.SprintNumber).FirstOrDefault(s => s.EndDate.Date < limitDate && s.EndDate.Date >= System.DateTime.Today); if (sprintThatWillEnd != null) { if (sprintThatWillEnd == p.LastSprint) { e.EventType = (short)ProjectEventTypes.PROJECT_END; } e.When = sprintThatWillEnd.EndDate; e.SprintNumber = sprintThatWillEnd.SprintNumber; } else { if (sprintThatWillStart != null) { e.When = sprintThatWillStart.StartDate; e.SprintNumber = sprintThatWillStart.SprintNumber; if (e.SprintNumber == 1) { e.EventType = (short)ProjectEventTypes.PROJECT_START; } else { e.EventType = (short)ProjectEventTypes.SPRINT_START; } } } events.Add(e); } // late projects try { var today = System.DateTime.Today; ICollection <Project> lateProjects = context.Projects.Include("Sprints").Where(p => (p.Status == (short)ProjectStatus.PROJECT_STARTED || p.Status == (short)ProjectStatus.PROPOSAL_APPROVED) && p.ProjectType != (short)ProjectTypes.SUPPORT_PROJECT && p.IsSuspended == false && p.Memberships.Any(ms => ms.MemberUId == memberUId && ms.IsActive == true && ms.Role.PermissionSet == (short)PermissionSets.SCRUM_MASTER) && p.Sprints.Max(s => s.EndDate) < today).ToList(); foreach (var p in lateProjects) { var e2 = new ProjectEvent() { ProjectUId = p.ProjectUId, ProjectName = p.ProjectName, ProjectNumber = p.ProjectNumber, EventType = (short)ProjectEventTypes.PROJECT_LATE }; e2.When = p.LastSprint.EndDate.Date; events.Add(e2); } } catch (System.Exception) { } } return(events); }