/// <summary> /// Create a new BacklogItem object. /// </summary> /// <param name="id">Initial value of the Id property.</param> /// <param name="projectId">Initial value of the ProjectId property.</param> /// <param name="description">Initial value of the Description property.</param> /// <param name="weight">Initial value of the Weight property.</param> /// <param name="spent">Initial value of the Spent property.</param> public static BacklogItem CreateBacklogItem(global::System.String id, global::System.String projectId, global::System.String description, global::System.Double weight, global::System.Double spent) { BacklogItem backlogItem = new BacklogItem(); backlogItem.Id = id; backlogItem.ProjectId = projectId; backlogItem.Description = description; backlogItem.Weight = weight; backlogItem.Spent = spent; return(backlogItem); }
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); } } }
private void SaveBacklogItem(BacklogItem item, bool saveHours) { using (var context = new ScrumFactoryEntities(this.connectionString)) { SaveBacklogItem(context, item, saveHours); context.SaveChanges(); } }
/// <summary> /// Saves a backlog item, but ignores it hours. /// </summary> /// <param name="item">The item to be saved</param> public void SaveBacklogItemIgnoreHours(BacklogItem item) { // I dont want to use a transaction to get a safe next backlog item number // because the SERIALIZABLE isolaton level will lock the whole table. // Better than that, i would rather try to update severel times until i got a valid number. TryAgainSave(() => { SaveBacklogItem(item, false); }); }
/// <summary> /// Deprecated Method for adding a new object to the BacklogItems EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. /// </summary> public void AddToBacklogItems(BacklogItem backlogItem) { base.AddObject("BacklogItems", backlogItem); }
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); } } } }
/// <summary> /// Create a new BacklogItem object. /// </summary> /// <param name="id">Initial value of the Id property.</param> /// <param name="projectId">Initial value of the ProjectId property.</param> /// <param name="description">Initial value of the Description property.</param> /// <param name="weight">Initial value of the Weight property.</param> /// <param name="spent">Initial value of the Spent property.</param> public static BacklogItem CreateBacklogItem(global::System.String id, global::System.String projectId, global::System.String description, global::System.Double weight, global::System.Double spent) { BacklogItem backlogItem = new BacklogItem(); backlogItem.Id = id; backlogItem.ProjectId = projectId; backlogItem.Description = description; backlogItem.Weight = weight; backlogItem.Spent = spent; return backlogItem; }