コード例 #1
0
        public void SavePokerCard(PokerCard card)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString))
            {
                PokerCard oldCard = context.PokerCards.Where(c => c.MemberUId == card.MemberUId && c.BacklogItemUId == card.BacklogItemUId).SingleOrDefault();
                if (oldCard == null)
                {
                    card.VoteDate = System.DateTime.Now;
                    context.PokerCards.AddObject(card);
                }
                else
                {
                    if (!card.Value.HasValue)
                    {
                        context.PokerCards.DeleteObject(oldCard);
                        var now    = System.DateTime.Now.AddHours(-2);
                        var strNow = now.Year + "-" + now.Month + "-" + now.Day + " " + now.Hour + ":" + now.Minute + ":" + now.Second;
                        context.ExecuteStoreCommand("DELETE FROM factory.PokerCard WHERE VoteDate < '" + strNow + "'");
                    }
                    else
                    {
                        card.VoteDate = System.DateTime.Now;
                        context.ApplyCurrentValues <PokerCard>("PokerCard", card);
                    }
                }

                context.SaveChanges();
            }
        }
コード例 #2
0
 private void SaveBacklogItem(BacklogItem item, bool saveHours)
 {
     using (var context = new ScrumFactoryEntities(this.connectionString)) {
         SaveBacklogItem(context, item, saveHours);
         context.SaveChanges();
     }
 }
コード例 #3
0
        public void CreateHourCosts(Project project, Project similarProject)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {

                // get similar costs
                RoleHourCost[] similarCosts = null;
                if(similarProject!=null)
                    similarCosts = GetHourCosts(similarProject.ProjectUId);

                // fore each role at this project
                foreach (Role r in project.Roles) {

                    // checks if there is a role with the same shortname at the similar project, and if so, uses its costs
                    Role similarRole = null;
                    string roleName = r.RoleShortName.ToLower();
                    if(similarProject!=null)
                       similarRole = similarProject.Roles.FirstOrDefault(sr => sr.RoleShortName.ToLower() == roleName);

                    RoleHourCost similarHourCost = null;
                    if(similarRole!=null && similarCosts!=null)
                        similarHourCost = similarCosts.FirstOrDefault(c => c.RoleUId == similarRole.RoleUId);
                    if(similarHourCost==null)
                        similarHourCost = new RoleHourCost() { Price = 0, Cost = 0 };

                    // only if role is new
                    RoleHourCost oldCost = context.RoleHourCosts.SingleOrDefault(h => h.RoleUId == r.RoleUId);
                    if (oldCost == null) {
                        RoleHourCost cost = new RoleHourCost() { RoleUId = r.RoleUId, ProjectUId = project.ProjectUId, Cost = similarHourCost.Cost, Price = similarHourCost.Price };
                        context.RoleHourCosts.AddObject(cost);
                    }

                }
                context.SaveChanges();
            }
        }
コード例 #4
0
        public void SaveMemberAvatar(MemberAvatar avatar)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                MemberProfile oldMember = GetMember(avatar.MemberUId);

                MemberAvatar oldAvatar = GetMemberAvatar(avatar.MemberUId);

                if (oldMember == null)
                {
                    throw new System.Exception("member not found");
                }

                if (oldAvatar == null)
                {
                    context.MembersAvatar.AddObject(avatar);
                }
                else
                {
                    context.AttachTo("MembersAvatar", oldAvatar);
                    context.ApplyCurrentValues <MemberAvatar>("MembersAvatar", avatar);
                }

                context.SaveChanges();
            }
        }
コード例 #5
0
 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();
     }
 }
コード例 #6
0
 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();
     }
 }
コード例 #7
0
 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();
     }
 }
コード例 #8
0
 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();
     }
 }
コード例 #9
0
 public void RemoveArtifact(string artifactUId)
 {
     using (var context = new ScrumFactoryEntities(this.connectionString)) {
         Artifact artifact = context.Artifacts.SingleOrDefault(a => a.ArtifactUId == artifactUId);
         if (artifact == null)
             return;
         context.Artifacts.DeleteObject(artifact);
         context.SaveChanges();
     };
 }
コード例 #10
0
 public void SaveHourCosts(RoleHourCost[] costs)
 {
     using (var context = new ScrumFactoryEntities(this.connectionString)) {
         foreach (RoleHourCost cost in costs)
         {
             SaveHourCost(cost, context);
         }
         context.SaveChanges();
     }
 }
コード例 #11
0
 public void DeleteProjectConstraint(string constraintUId)
 {
     using (var context = new ScrumFactoryEntities(connectionString)) {
         var constraint = context.ProjectConstraints.SingleOrDefault(c => c.ConstraintUId == constraintUId);
         if (constraint == null)
             return;
         context.ProjectConstraints.DeleteObject(constraint);
         context.SaveChanges();
     }
 }
コード例 #12
0
 public void DeleteProjectConstraint(string constraintUId)
 {
     using (var context = new ScrumFactoryEntities(connectionString)) {
         var constraint = context.ProjectConstraints.SingleOrDefault(c => c.ConstraintUId == constraintUId);
         if (constraint == null)
             return;
         context.ProjectConstraints.DeleteObject(constraint);
         context.SaveChanges();
     }
 }
コード例 #13
0
        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();
                }
            }
        }
コード例 #14
0
 public void RemoveMemberAvatar(string memberUId)
 {
     using (var context = new ScrumFactoryEntities(this.connectionString)) {
         MemberAvatar avatar = context.MembersAvatar.SingleOrDefault(a => a.MemberUId == memberUId);
         if (avatar != null)
         {
             context.MembersAvatar.DeleteObject(avatar);
             context.SaveChanges();
         }
     }
 }
コード例 #15
0
 public void UpdateBacklogItemArtifactCount(string backlogItemUId, int count)
 {
     using (var context = new ScrumFactoryEntities(this.connectionString)) {
         var item = context.BacklogItems.SingleOrDefault(i => i.BacklogItemUId == backlogItemUId);
         if (item == null)
         {
             return;
         }
         item.ArtifactCount = count;
         context.SaveChanges();
     }
 }
コード例 #16
0
 public void UpdateTaskArtifactCount(string taskUId, int count)
 {
     using (var context = new ScrumFactoryEntities(this.connectionString)) {
         var task = context.Tasks.SingleOrDefault(t => t.TaskUId == taskUId);
         if (task == null)
         {
             return;
         }
         task.ArtifactCount = count;
         context.SaveChanges();
     }
 }
コード例 #17
0
 public void RemoveArtifact(string artifactUId)
 {
     using (var context = new ScrumFactoryEntities(this.connectionString)) {
         Artifact artifact = context.Artifacts.SingleOrDefault(a => a.ArtifactUId == artifactUId);
         if (artifact == null)
         {
             return;
         }
         context.Artifacts.DeleteObject(artifact);
         context.SaveChanges();
     };
 }
コード例 #18
0
 public void SaveProjectConstraint(ProjectConstraint constraint)
 {
     using (var context = new ScrumFactoryEntities(connectionString)) {
         var old = context.ProjectConstraints.SingleOrDefault(c => c.ConstraintUId == constraint.ConstraintUId);
         if (old != null) {
             context.AttachTo("ProjectConstraints", old);
             context.ApplyCurrentValues<ProjectConstraint>("ProjectConstraints", constraint);
         }
         else
             context.ProjectConstraints.AddObject(constraint);
         context.SaveChanges();
     }
 }
コード例 #19
0
 public void SaveProjectConstraint(ProjectConstraint constraint)
 {
     using (var context = new ScrumFactoryEntities(connectionString)) {
         var old = context.ProjectConstraints.SingleOrDefault(c => c.ConstraintUId == constraint.ConstraintUId);
         if (old != null) {
             context.AttachTo("ProjectConstraints", old);
             context.ApplyCurrentValues<ProjectConstraint>("ProjectConstraints", constraint);
         }
         else
             context.ProjectConstraints.AddObject(constraint);
         context.SaveChanges();
     }
 }
コード例 #20
0
        public void CreateHourCosts(Project project, Project similarProject)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                // get similar costs
                RoleHourCost[] similarCosts = null;
                if (similarProject != null)
                {
                    similarCosts = GetHourCosts(similarProject.ProjectUId);
                }

                // fore each role at this project
                foreach (Role r in project.Roles)
                {
                    // checks if there is a role with the same shortname at the similar project, and if so, uses its costs
                    Role   similarRole = null;
                    string roleName    = r.RoleShortName.ToLower();
                    if (similarProject != null)
                    {
                        similarRole = similarProject.Roles.FirstOrDefault(sr => sr.RoleShortName.ToLower() == roleName);
                    }

                    RoleHourCost similarHourCost = null;
                    if (similarRole != null && similarCosts != null)
                    {
                        similarHourCost = similarCosts.FirstOrDefault(c => c.RoleUId == similarRole.RoleUId);
                    }
                    if (similarHourCost == null)
                    {
                        similarHourCost = new RoleHourCost()
                        {
                            Price = 0, Cost = 0
                        }
                    }
                    ;

                    // only if role is new
                    RoleHourCost oldCost = context.RoleHourCosts.SingleOrDefault(h => h.RoleUId == r.RoleUId);
                    if (oldCost == null)
                    {
                        RoleHourCost cost = new RoleHourCost()
                        {
                            RoleUId = r.RoleUId, ProjectUId = project.ProjectUId, Cost = similarHourCost.Cost, Price = similarHourCost.Price
                        };
                        context.RoleHourCosts.AddObject(cost);
                    }
                }
                context.SaveChanges();
            }
        }
コード例 #21
0
        public bool DeleteBacklogItemGroup(string groupUId)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {

                var inUse = context.BacklogItems.Any(i => i.GroupUId == groupUId);
                if (inUse)
                    return false;

                var group = context.BacklogItemGroups.SingleOrDefault(g => g.GroupUId == groupUId);
                context.BacklogItemGroups.DeleteObject(group);
                context.SaveChanges();

                return true;
            }
        }
コード例 #22
0
        public void DeleteItemSize(string itemSizeUId)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                ItemSize size = context.ItemSizes.Include("SizeIdealHours").SingleOrDefault(z => z.ItemSizeUId == itemSizeUId);
                if (size == null)
                    return;
                //if (size.SizeIdealHours != null) {
                //    foreach (SizeIdealHour h in size.SizeIdealHours)
                //        context.SizeIdealHours.DeleteObject(h);
                //}
                context.ItemSizes.DeleteObject(size);

                context.SaveChanges();
            }
        }
コード例 #23
0
        public void DeleteTaskTag(string tagUId)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {

                // first un-mark tasks
                var tasks = context.Tasks.Where(t => t.TagUId == tagUId);
                foreach (Task task in tasks)
                    task.TagUId = null;

                // now deletes the tag
                var oldTag = context.TaskTags.SingleOrDefault(t => t.TagUId == tagUId);
                context.TaskTags.DeleteObject(oldTag);

                context.SaveChanges();
            }
        }
コード例 #24
0
        public void UpdateBacklogItemGroup(BacklogItemGroup group)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                BacklogItemGroup oldGroup = context.BacklogItemGroups.Where(g => g.GroupUId == group.GroupUId).SingleOrDefault();
                if (oldGroup == null)
                {
                    context.AddObject("BacklogItemGroups", group);
                }
                else
                {
                    context.ApplyCurrentValues <BacklogItemGroup>("BacklogItemGroups", group);
                }

                context.SaveChanges();
            }
        }
コード例 #25
0
        public bool DeleteBacklogItemGroup(string groupUId)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                var inUse = context.BacklogItems.Any(i => i.GroupUId == groupUId);
                if (inUse)
                {
                    return(false);
                }

                var group = context.BacklogItemGroups.SingleOrDefault(g => g.GroupUId == groupUId);
                context.BacklogItemGroups.DeleteObject(group);
                context.SaveChanges();

                return(true);
            }
        }
コード例 #26
0
 public void SaveProjectMembership(ProjectMembership membership)
 {
     using (var context = new ScrumFactoryEntities(this.connectionString)) {
         ProjectMembership existMembership = context.ProjectMemberships.SingleOrDefault(m => m.MemberUId == membership.MemberUId && m.ProjectUId == membership.ProjectUId && m.RoleUId == membership.RoleUId);
         if (existMembership == null)
         {
             context.ProjectMemberships.AddObject(membership);
         }
         else
         {
             context.AttachTo("ProjectMemberships", existMembership);
             context.ApplyCurrentValues <ProjectMembership>("ProjectMemberships", membership);
         }
         context.SaveChanges();
     }
 }
コード例 #27
0
        public void SaveItemSize(ItemSize size)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                ItemSize oldSize = GetItemSize(size.ItemSizeUId);

                if (oldSize == null)
                {
                    context.ItemSizes.AddObject(size);
                }
                else
                {
                    context.AttachTo("ItemSizes", oldSize);
                    context.ApplyCurrentValues <ItemSize>("ItemSizes", size);

                    if (oldSize.SizeIdealHours == null)
                    {
                        oldSize.SizeIdealHours = new List <SizeIdealHour>();
                    }

                    if (size.SizeIdealHours == null)
                    {
                        oldSize.SizeIdealHours = new List <SizeIdealHour>();
                    }

                    var deletedHours  = oldSize.SizeIdealHours.Where(o => !size.SizeIdealHours.Any(s => s.IdealHourUId == o.IdealHourUId));
                    var updatedHours  = size.SizeIdealHours.Where(s => oldSize.SizeIdealHours.Any(o => o.IdealHourUId == s.IdealHourUId));
                    var insertedHours = size.SizeIdealHours.Where(s => !oldSize.SizeIdealHours.Any(o => o.IdealHourUId == s.IdealHourUId));

                    foreach (SizeIdealHour h in deletedHours)
                    {
                        context.SizeIdealHours.DeleteObject(h);
                    }

                    foreach (SizeIdealHour h in updatedHours)
                    {
                        context.ApplyCurrentValues <SizeIdealHour>("SizeIdealHours", h);
                    }

                    foreach (SizeIdealHour h in insertedHours)
                    {
                        context.SizeIdealHours.AddObject(h);
                    }
                }

                context.SaveChanges();
            }
        }
コード例 #28
0
        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.BacklogItems.DeleteObject(item);
                    var a = context.SaveChanges();
                    System.Diagnostics.Debug.WriteLine("** item deleteed DATA " + backlogItemUId);
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine("** item " + backlogItemUId + " not found");
                }
            }
        }
コード例 #29
0
        public void SaveTaskTag(TaskTag tag)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                var oldTag = context.TaskTags.SingleOrDefault(t => t.TagUId == tag.TagUId);
                if (oldTag == null)
                {
                    context.TaskTags.AddObject(tag);
                }
                else
                {
                    context.AttachTo("TaskTags", oldTag);
                    context.ApplyCurrentValues <TaskTag>("TaskTags", tag);
                }

                context.SaveChanges();
            }
        }
コード例 #30
0
        public void DeleteTaskTag(string tagUId)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                // first un-mark tasks
                var tasks = context.Tasks.Where(t => t.TagUId == tagUId);
                foreach (Task task in tasks)
                {
                    task.TagUId = null;
                }

                // now deletes the tag
                var oldTag = context.TaskTags.SingleOrDefault(t => t.TagUId == tagUId);
                context.TaskTags.DeleteObject(oldTag);

                context.SaveChanges();
            }
        }
コード例 #31
0
        public void DeleteItemSize(string itemSizeUId)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                ItemSize size = context.ItemSizes.Include("SizeIdealHours").SingleOrDefault(z => z.ItemSizeUId == itemSizeUId);
                if (size == null)
                {
                    return;
                }
                //if (size.SizeIdealHours != null) {
                //    foreach (SizeIdealHour h in size.SizeIdealHours)
                //        context.SizeIdealHours.DeleteObject(h);
                //}
                context.ItemSizes.DeleteObject(size);

                context.SaveChanges();
            }
        }
コード例 #32
0
        public void SaveArtifact(Artifact artifact)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {

                Artifact oldArtifact = context.Artifacts.SingleOrDefault(a => a.ArtifactUId == artifact.ArtifactUId);

                if (oldArtifact == null)
                    context.Artifacts.AddObject(artifact);
                else {
                    context.AttachTo("Artifacts", oldArtifact);
                    context.ApplyCurrentValues<Artifact>("Artifacts", artifact);
                }

                context.SaveChanges();

            };
        }
コード例 #33
0
        public void SaveAuthorizationInfo(AuthorizationInfo info)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {

                AuthorizationInfo oldInfo = context.AuthorizationInfos.Where(a => a.MemberUId == info.MemberUId).FirstOrDefault();

                if (oldInfo == null)
                    context.AuthorizationInfos.AddObject(info);
                else {
                    context.AttachTo("AuthorizationInfos", oldInfo);
                    oldInfo.Token = info.Token;
                    oldInfo.IssueDate = info.IssueDate;
                }

                context.SaveChanges();

            };
        }
コード例 #34
0
        public void SaveMember(MemberProfile newMember)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                MemberProfile oldMember = GetMember(newMember.MemberUId);

                if (oldMember == null)
                {
                    context.MembersProfile.AddObject(newMember);
                }
                else
                {
                    context.AttachTo("MemberProfiles", oldMember);
                    context.ApplyCurrentValues <MemberProfile>("MemberProfiles", newMember);
                }

                context.SaveChanges();
            }
        }
コード例 #35
0
        public void SaveArtifact(Artifact artifact)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                Artifact oldArtifact = context.Artifacts.SingleOrDefault(a => a.ArtifactUId == artifact.ArtifactUId);

                if (oldArtifact == null)
                {
                    context.Artifacts.AddObject(artifact);
                }
                else
                {
                    context.AttachTo("Artifacts", oldArtifact);
                    context.ApplyCurrentValues <Artifact>("Artifacts", artifact);
                }

                context.SaveChanges();
            };
        }
コード例 #36
0
        public int InsertProject(ScrumFactory.Project project)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                context.Projects.AddObject(project);

                if (project.Memberships != null)
                {
                    foreach (ProjectMembership m in project.Memberships)
                    {
                        context.AddObject("ProjectMemberships", m);
                    }
                }

                context.SaveChanges();
            }

            return(project.ProjectNumber);
        }
コード例 #37
0
        public void SaveAuthorizationInfo(AuthorizationInfo info)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                AuthorizationInfo oldInfo = context.AuthorizationInfos.Where(a => a.MemberUId == info.MemberUId).FirstOrDefault();

                if (oldInfo == null)
                {
                    context.AuthorizationInfos.AddObject(info);
                }
                else
                {
                    context.AttachTo("AuthorizationInfos", oldInfo);
                    oldInfo.Token     = info.Token;
                    oldInfo.IssueDate = info.IssueDate;
                }

                context.SaveChanges();
            };
        }
コード例 #38
0
        public void SaveProjectRole(ScrumFactory.Role role)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                Role oldRole = GetProjectRole(role.RoleUId);



                if (oldRole == null)
                {
                    context.Roles.AddObject(role);
                }
                else
                {
                    context.AttachTo("Roles", oldRole);
                    context.ApplyCurrentValues <Role>("Roles", role);
                }
                context.SaveChanges();
            }
        }
コード例 #39
0
        public void SaveRisk(Risk risk)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                Risk oldRisk = GetRisk(risk.RiskUId);

                // if is a new item insert it
                if (oldRisk == null)
                {
                    context.Risks.AddObject(risk);

                    // updates the item
                }
                else
                {
                    context.AttachTo("Risks", oldRisk);
                    context.ApplyCurrentValues <Risk>("Risks", risk);
                }

                context.SaveChanges();
            }
        }
コード例 #40
0
        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();
            }
        }
コード例 #41
0
        public void SaveTask(Task task)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                Task oldTask = GetTask(task.TaskUId);

                if (oldTask == null)
                {
                    context.Tasks.AddObject(task);
                    if (task.TaskDetail != null)
                    {
                        context.TaskDetails.AddObject(task.TaskDetail);
                    }
                }
                else
                {
                    // apply current values, but preserve create at date
                    System.DateTime createAt = oldTask.CreatedAt;
                    string          owner    = oldTask.TaskOwnerUId;

                    context.AttachTo("Tasks", oldTask);
                    context.ApplyCurrentValues <Task>("Tasks", task);
                    oldTask.CreatedAt    = createAt;
                    oldTask.TaskOwnerUId = owner;

                    if (task.TaskDetail != null && oldTask.TaskDetail == null)
                    {
                        context.TaskDetails.AddObject(task.TaskDetail);
                    }
                    else
                    if (task.TaskDetail != null && oldTask.TaskDetail != null)
                    {
                        context.AttachTo("TaskDetails", oldTask.TaskDetail);
                        context.ApplyCurrentValues <TaskDetail>("TaskDetails", task.TaskDetail);
                    }
                }

                context.SaveChanges();
            }
        }
コード例 #42
0
        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();
            }
        }
コード例 #43
0
        public void SaveProposal(Proposal proposal)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {

                Proposal oldProposal = GetProjectProposal(proposal.ProjectUId, proposal.ProposalUId);

                using (TransactionScope scope = new TransactionScope()) {

                    // if its a new proposal
                    if (oldProposal == null) {

                        // proposals
                        context.Proposals.AddObject(proposal);

                        // items
                        foreach (ProposalItem pitem in proposal.Items)
                            context.ProposalItems.AddObject(pitem);

                        // clauses
                        if(proposal.Clauses!=null) {
                        foreach (ProposalClause clause in proposal.Clauses)
                            context.ProposalClauses.AddObject(clause);
                            }

                    }
                    // if is an old one
                    else {

                        context.AttachTo("Proposals", oldProposal);
                        context.ApplyCurrentValues<Proposal>("Proposals", proposal);

                        // if is approving a proposal, adds its XAML document
                        if (proposal.ProposalDocument != null)
                            context.ProposalDocuments.AddObject(proposal.ProposalDocument);

                        if (oldProposal.Items == null)
                            oldProposal.Items = new List<ProposalItem>();

                        if (proposal.Items == null)
                            proposal.Items = new List<ProposalItem>();

                        UpdateProposalItems(context, proposal, oldProposal);

                        UpdateProposalClauses(context, proposal, oldProposal);

                        UpdateProposalFixedCosts(context, proposal, oldProposal);

                    }

                    context.SaveChanges();

                    scope.Complete();
                }

            }
        }
コード例 #44
0
 public void SaveHourCosts(RoleHourCost[] costs)
 {
     using (var context = new ScrumFactoryEntities(this.connectionString)) {
         foreach (RoleHourCost cost in costs)
             SaveHourCost(cost, context);
         context.SaveChanges();
     }
 }
コード例 #45
0
        public void SaveMember(MemberProfile newMember)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                MemberProfile oldMember = GetMember(newMember.MemberUId);

                if (oldMember == null)
                    context.MembersProfile.AddObject(newMember);
                else {
                    context.AttachTo("MemberProfiles", oldMember);
                    context.ApplyCurrentValues<MemberProfile>("MemberProfiles", newMember);
                }

                context.SaveChanges();

            }
        }
コード例 #46
0
        public void SaveTask(Task task)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                Task oldTask = GetTask(task.TaskUId);

                if (oldTask == null) {
                    context.Tasks.AddObject(task);
                    if(task.TaskDetail!=null)
                        context.TaskDetails.AddObject(task.TaskDetail);
                } else {

                    // apply current values, but preserve create at date
                    System.DateTime createAt = oldTask.CreatedAt;
                    string owner = oldTask.TaskOwnerUId;

                    context.AttachTo("Tasks", oldTask);
                    context.ApplyCurrentValues<Task>("Tasks", task);
                    oldTask.CreatedAt = createAt;
                    oldTask.TaskOwnerUId = owner;

                    if (task.TaskDetail != null && oldTask.TaskDetail==null) {
                        context.TaskDetails.AddObject(task.TaskDetail);
                    }
                    else
                    if (task.TaskDetail != null && oldTask.TaskDetail != null) {
                        context.AttachTo("TaskDetails", oldTask.TaskDetail);
                        context.ApplyCurrentValues<TaskDetail>("TaskDetails", task.TaskDetail);
                    }
                }

                context.SaveChanges();

            }
        }
コード例 #47
0
        public int InsertProject(ScrumFactory.Project project)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                context.Projects.AddObject(project);

                if(project.Memberships!=null)
                    foreach (ProjectMembership m in project.Memberships)
                        context.AddObject("ProjectMemberships", m);

                context.SaveChanges();
            }

            return project.ProjectNumber;
        }
コード例 #48
0
 public void SaveProjectMembership(ProjectMembership membership)
 {
     using (var context = new ScrumFactoryEntities(this.connectionString)) {
         ProjectMembership existMembership = context.ProjectMemberships.SingleOrDefault(m => m.MemberUId == membership.MemberUId && m.ProjectUId == membership.ProjectUId && m.RoleUId == membership.RoleUId);
         if (existMembership == null) {
             context.ProjectMemberships.AddObject(membership);
         } else {
             context.AttachTo("ProjectMemberships", existMembership);
             context.ApplyCurrentValues<ProjectMembership>("ProjectMemberships", membership);
         }
         context.SaveChanges();
     }
 }
コード例 #49
0
        public void SaveProjectRole(ScrumFactory.Role role)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                Role oldRole = GetProjectRole(role.RoleUId);

                if (oldRole == null) {
                    context.Roles.AddObject(role);
                } else {
                    context.AttachTo("Roles", oldRole);
                    context.ApplyCurrentValues<Role>("Roles", role);
                }
                context.SaveChanges();
            }
        }
コード例 #50
0
        public void SaveRisk(Risk risk)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {

                Risk oldRisk = GetRisk(risk.RiskUId);

                // if is a new item insert it
                if (oldRisk == null) {
                    context.Risks.AddObject(risk);

                    // updates the item
                }
                else {
                    context.AttachTo("Risks", oldRisk);
                    context.ApplyCurrentValues<Risk>("Risks", risk);
                }

                context.SaveChanges();

            }
        }
コード例 #51
0
        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();
            }
        }
コード例 #52
0
        public void UpdateItemSizeOccurrenceContraint(string itemSizeUId, ItemOccurrenceContraints constraint)
        {
            // gets the item and set the constraint
            ItemSize newSize = GetItemSize(itemSizeUId);
            if (newSize == null)
                return;

            // now seacrh for the olditem with the same constraint and clean it
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                ItemSize oldSize = context.ItemSizes.SingleOrDefault(z => z.OccurrenceConstraint == (int)constraint);
                if (oldSize != null)
                    oldSize.OccurrenceConstraint = (int)ItemOccurrenceContraints.DEVELOPMENT_OCC;

                context.AttachTo("ItemSizes", newSize);
                newSize.OccurrenceConstraint = (int)constraint;

                context.SaveChanges();
            }
        }
コード例 #53
0
        public void UpdateBacklogItemGroup(BacklogItemGroup group)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                BacklogItemGroup oldGroup = context.BacklogItemGroups.Where(g => g.GroupUId == group.GroupUId).SingleOrDefault();
                if (oldGroup == null)
                    context.AddObject("BacklogItemGroups", group);
                else
                    context.ApplyCurrentValues<BacklogItemGroup>("BacklogItemGroups", group);

                context.SaveChanges();

            }
        }
コード例 #54
0
 public void UpdateBacklogItemArtifactCount(string backlogItemUId, int count)
 {
     using (var context = new ScrumFactoryEntities(this.connectionString)) {
         var item = context.BacklogItems.SingleOrDefault(i => i.BacklogItemUId == backlogItemUId);
         if (item == null)
             return;
         item.ArtifactCount = count;
         context.SaveChanges();
     }
 }
コード例 #55
0
        public void SaveTaskTag(TaskTag tag)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                var oldTag = context.TaskTags.SingleOrDefault(t => t.TagUId == tag.TagUId);
                if (oldTag == null) {
                    context.TaskTags.AddObject(tag);
                } else {
                    context.AttachTo("TaskTags", oldTag);
                    context.ApplyCurrentValues<TaskTag>("TaskTags", tag);
                }

                context.SaveChanges();
            }
        }
コード例 #56
0
        public void SaveMemberAvatar(MemberAvatar avatar)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                MemberProfile oldMember = GetMember(avatar.MemberUId);

                MemberAvatar oldAvatar = GetMemberAvatar(avatar.MemberUId);

                if (oldMember == null)
                    throw new System.Exception("member not found");

                if (oldAvatar == null) {
                    context.MembersAvatar.AddObject(avatar);
                } else {
                    context.AttachTo("MembersAvatar", oldAvatar);
                    context.ApplyCurrentValues<MemberAvatar>("MembersAvatar", avatar);
                }

                context.SaveChanges();

            }
        }
コード例 #57
0
 private void SaveBacklogItem(BacklogItem item, bool saveHours)
 {
     using (var context = new ScrumFactoryEntities(this.connectionString)) {
         SaveBacklogItem(context, item, saveHours);
         context.SaveChanges();
     }
 }
コード例 #58
0
        public void SaveItemSize(ItemSize size)
        {
            using (var context = new ScrumFactoryEntities(this.connectionString)) {
                ItemSize oldSize = GetItemSize(size.ItemSizeUId);

                if (oldSize == null) {
                    context.ItemSizes.AddObject(size);
                }
                else {
                    context.AttachTo("ItemSizes", oldSize);
                    context.ApplyCurrentValues<ItemSize>("ItemSizes", size);

                    if (oldSize.SizeIdealHours == null)
                        oldSize.SizeIdealHours = new List<SizeIdealHour>();

                    if(size.SizeIdealHours==null)
                        oldSize.SizeIdealHours = new List<SizeIdealHour>();

                    var deletedHours = oldSize.SizeIdealHours.Where(o => !size.SizeIdealHours.Any(s => s.IdealHourUId == o.IdealHourUId));
                    var updatedHours = size.SizeIdealHours.Where(s => oldSize.SizeIdealHours.Any(o => o.IdealHourUId == s.IdealHourUId));
                    var insertedHours = size.SizeIdealHours.Where(s => !oldSize.SizeIdealHours.Any(o => o.IdealHourUId == s.IdealHourUId));

                    foreach (SizeIdealHour h in deletedHours)
                        context.SizeIdealHours.DeleteObject(h);

                    foreach (SizeIdealHour h in updatedHours)
                        context.ApplyCurrentValues<SizeIdealHour>("SizeIdealHours", h);

                    foreach (SizeIdealHour h in insertedHours)
                        context.SizeIdealHours.AddObject(h);

                }

                context.SaveChanges();

            }
        }
コード例 #59
0
        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();

            }
        }
コード例 #60
0
 public void UpdateTaskArtifactCount(string taskUId, int count)
 {
     using (var context = new ScrumFactoryEntities(this.connectionString)) {
         var task = context.Tasks.SingleOrDefault(t => t.TaskUId == taskUId);
         if (task == null)
             return;
         task.ArtifactCount = count;
         context.SaveChanges();
     }
 }