public void DeleteProjectRole(string roleUId)
 {
     using (var context = new ScrumFactoryEntities(this.connectionString)) {
         Role oldRole = GetProjectRole(roleUId, true);
         context.AttachTo("Roles", oldRole);
         context.DeleteObject(oldRole);
         context.SaveChanges();
     }
 }
 public void DeleteSprint(string sprintUId)
 {
     using (var context = new ScrumFactoryEntities(this.connectionString)) {
         Sprint oldSprint = GetSprint(sprintUId);
         context.AttachTo("Sprints", oldSprint);
         context.DeleteObject(oldSprint);
         context.SaveChanges();
     }
 }
 public void DeleteSprint(string sprintUId)
 {
     using (var context = new ScrumFactoryEntities(this.connectionString)) {
         Sprint oldSprint = GetSprint(sprintUId);
         context.AttachTo("Sprints", oldSprint);
         context.DeleteObject(oldSprint);
         context.SaveChanges();
     }
 }
 public void DeleteProjectRole(string roleUId)
 {
     using (var context = new ScrumFactoryEntities(this.connectionString)) {
         Role oldRole = GetProjectRole(roleUId, true);
         context.AttachTo("Roles", oldRole);
         context.DeleteObject(oldRole);
         context.SaveChanges();
     }
 }
        public void DeleteBacklogItem(string backlogItemUId)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                var item = context.BacklogItems.Include("PlannedHours").SingleOrDefault(b => b.BacklogItemUId == backlogItemUId);

                if (item != null) {
                    context.DeleteObject(item);
                    context.SaveChanges();
                }
            }
        }
        public void UpdateProject(ScrumFactory.Project project)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                var projectOld = GetProject(project.ProjectUId);
                context.AttachTo("Projects", projectOld);
                context.ApplyCurrentValues <Project>("Projects", project);

                if (projectOld.Memberships == null)
                {
                    projectOld.Memberships = new List <ProjectMembership>();
                }

                if (project.Memberships == null)
                {
                    project.Memberships = new List <ProjectMembership>();
                }

                var insertedMemberships = project.Memberships.Where(m => !projectOld.Memberships.Any(o => (o.MemberUId == m.MemberUId && o.RoleUId == m.RoleUId))).ToList();
                var updatedMemberships  = project.Memberships.Where(m => projectOld.Memberships.Any(o => (o.MemberUId == m.MemberUId && o.RoleUId == m.RoleUId))).ToList();
                var deletedMemberships  = projectOld.Memberships.Where(m => !project.Memberships.Any(o => (o.MemberUId == m.MemberUId && o.RoleUId == m.RoleUId))).ToList();

                foreach (ProjectMembership m in insertedMemberships)
                {
                    context.AddObject("ProjectMemberships", m);
                }
                foreach (ProjectMembership m in updatedMemberships)
                {
                    context.ApplyCurrentValues <ProjectMembership>("ProjectMemberships", m);
                }
                foreach (ProjectMembership m in deletedMemberships)
                {
                    context.DeleteObject(m);
                }


                context.SaveChanges();
            }
        }
        private void SaveBacklogItem(ScrumFactoryEntities context, BacklogItem item, bool saveHours)
        {
            // dont want to add the item group again, so if the group is already at the database
                // remove it from the item
                BacklogItemGroup group = context.BacklogItemGroups.SingleOrDefault(g => g.GroupUId == item.GroupUId);
                if (group != null)
                    item.Group = null;

                BacklogItem oldItem = GetBacklogItem(context, item.BacklogItemUId);

                // if is a new item insert it
                if (oldItem == null) {
                    int? lastNumber = context.BacklogItems.Where(b => b.ProjectUId == item.ProjectUId).Max(b => (int?)b.BacklogItemNumber);
                    if (lastNumber == null)
                        lastNumber = 0;
                    item.BacklogItemNumber = (int)lastNumber + 1;
                    context.BacklogItems.AddObject(item);
                }
                else {

                    // updates the item
                    context.AttachTo("BacklogItems", oldItem);
                    context.ApplyCurrentValues<BacklogItem>("BacklogItems", item);

                    if (saveHours) {

                        // detect the changes
                        var insertedHours = item.PlannedHours;
                        if (oldItem.PlannedHours != null)
                            insertedHours = item.PlannedHours.Where(p => !oldItem.PlannedHours.Any(o => (o.BacklogItemUId == p.BacklogItemUId && o.RoleUId == p.RoleUId && o.PlanningNumber == p.PlanningNumber))).ToList();

                        // ATTENTION HERE: DID NOT INCLUDE THE o.PlanningNumber == p.PlanningNumber BECAUSE I DONT WANT TO DELETE OLD PLANNINGS
                        var deletedHours = new List<PlannedHour>();
                        if (oldItem.PlannedHours != null)
                            deletedHours = oldItem.PlannedHours.Where(o => !item.PlannedHours.Any(p => o.BacklogItemUId == p.BacklogItemUId && o.RoleUId == p.RoleUId)).ToList();

                        var updatedHours = new List<PlannedHour>();
                        if (oldItem.PlannedHours != null)
                            updatedHours = item.PlannedHours.Where(p => oldItem.PlannedHours.Any(o => o.BacklogItemUId == p.BacklogItemUId && o.RoleUId == p.RoleUId && o.PlanningNumber == p.PlanningNumber)).ToList();

                        // insert, update and delete
                        foreach (PlannedHour p in updatedHours)
                            context.ApplyCurrentValues<PlannedHour>("PlannedHours", p);
                        foreach (PlannedHour p in insertedHours)
                            context.AddObject("PlannedHours", p);
                        foreach (PlannedHour p in deletedHours)
                            context.DeleteObject(p);

                    }

                }
        }
        public void UpdateProject(ScrumFactory.Project project)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {

                var projectOld = GetProject(project.ProjectUId);
                context.AttachTo("Projects", projectOld);
                context.ApplyCurrentValues<Project>("Projects", project);

                if (projectOld.Memberships == null)
                    projectOld.Memberships = new List<ProjectMembership>();

                if (project.Memberships == null)
                    project.Memberships = new List<ProjectMembership>();

                var insertedMemberships = project.Memberships.Where(m => !projectOld.Memberships.Any(o => (o.MemberUId == m.MemberUId && o.RoleUId == m.RoleUId))).ToList();
                var updatedMemberships = project.Memberships.Where(m => projectOld.Memberships.Any(o => (o.MemberUId == m.MemberUId && o.RoleUId == m.RoleUId))).ToList();
                var deletedMemberships = projectOld.Memberships.Where(m => !project.Memberships.Any(o => (o.MemberUId == m.MemberUId && o.RoleUId == m.RoleUId))).ToList();

                foreach (ProjectMembership m in insertedMemberships)
                    context.AddObject("ProjectMemberships", m);
                foreach (ProjectMembership m in updatedMemberships)
                    context.ApplyCurrentValues<ProjectMembership>("ProjectMemberships", m);
                foreach (ProjectMembership m in deletedMemberships)
                    context.DeleteObject(m);

                context.SaveChanges();
            }
        }
Esempio n. 9
0
        private void SaveBacklogItem(ScrumFactoryEntities context, BacklogItem item, bool saveHours)
        {
            // dont want to add the item group again, so if the group is already at the database
            // remove it from the item
            BacklogItemGroup group = context.BacklogItemGroups.SingleOrDefault(g => g.GroupUId == item.GroupUId);

            if (group != null)
            {
                item.Group = null;
            }

            BacklogItem oldItem = GetBacklogItem(context, item.BacklogItemUId);

            // if is a new item insert it
            if (oldItem == null)
            {
                int?lastNumber = context.BacklogItems.Where(b => b.ProjectUId == item.ProjectUId).Max(b => (int?)b.BacklogItemNumber);
                if (lastNumber == null)
                {
                    lastNumber = 0;
                }
                item.BacklogItemNumber = (int)lastNumber + 1;

                if (item.BusinessPriority == 0)
                {
                    int?lastPriority = context.BacklogItems.Where(b => b.ProjectUId == item.ProjectUId).Max(b => (int?)b.BusinessPriority);
                    if (lastPriority == null)
                    {
                        lastPriority = 1;
                    }
                    else
                    {
                        lastPriority = lastPriority + 10;
                    }
                    item.BusinessPriority = lastPriority.Value;
                }

                context.BacklogItems.AddObject(item);
            }
            else
            {
                // updates the item
                context.AttachTo("BacklogItems", oldItem);
                context.ApplyCurrentValues <BacklogItem>("BacklogItems", item);

                if (saveHours)
                {
                    // detect the changes
                    var insertedHours = item.PlannedHours;
                    if (oldItem.PlannedHours != null)
                    {
                        insertedHours = item.PlannedHours.Where(p => !oldItem.PlannedHours.Any(o => (o.BacklogItemUId == p.BacklogItemUId && o.RoleUId == p.RoleUId && o.PlanningNumber == p.PlanningNumber))).ToList();
                    }

                    // ATTENTION HERE: DID NOT INCLUDE THE o.PlanningNumber == p.PlanningNumber BECAUSE I DONT WANT TO DELETE OLD PLANNINGS
                    var deletedHours = new List <PlannedHour>();
                    if (oldItem.PlannedHours != null)
                    {
                        deletedHours = oldItem.PlannedHours.Where(o => !item.PlannedHours.Any(p => o.BacklogItemUId == p.BacklogItemUId && o.RoleUId == p.RoleUId)).ToList();
                    }

                    var updatedHours = new List <PlannedHour>();
                    if (oldItem.PlannedHours != null)
                    {
                        updatedHours = item.PlannedHours.Where(p => oldItem.PlannedHours.Any(o => o.BacklogItemUId == p.BacklogItemUId && o.RoleUId == p.RoleUId && o.PlanningNumber == p.PlanningNumber)).ToList();
                    }

                    // insert, update and delete
                    foreach (PlannedHour p in updatedHours)
                    {
                        context.ApplyCurrentValues <PlannedHour>("PlannedHours", p);
                    }
                    foreach (PlannedHour p in insertedHours)
                    {
                        context.AddObject("PlannedHours", p);
                    }
                    foreach (PlannedHour p in deletedHours)
                    {
                        context.DeleteObject(p);
                    }
                }
            }
        }