コード例 #1
0
        public IActionResult Post([FromBody] FeatureAPI item)
        {
            if (item == null)
            {
                return(BadRequest());
            }

            Feature Feature = FeatureAPI.To(item);

            try
            {
                Feature = new FeatureBF(DB).Create(Feature);

                return(CreatedAtRoute(
                           "FeatureRoute",
                           new
                {
                    controller = "Feature",
                    id = Feature.ID
                },
                           FeatureAPI.From(Feature)));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex));
            }
        }
コード例 #2
0
        private async void SaveButton_Click(object sender, RoutedEventArgs e)
        {
            feature = await Feature.Save(feature);

            if (this.Frame.CanGoBack)
            {
                this.Frame.GoBack();
            }
        }
コード例 #3
0
        private void ButtonAddFeature_Click(object sender, RoutedEventArgs e)
        {
            FeatureAPI feature = new FeatureAPI {
                status = RequirementStatus.Proposed, isNew = true
            };

            ((Frame)Parent).Navigate(
                typeof(Features.FeatureEdit),
                feature,
                new Windows.UI.Xaml.Media.Animation.DrillInNavigationTransitionInfo());
        }
コード例 #4
0
        public IActionResult Get(long id)
        {
            Feature item = new FeatureBF(DB).Get(id);

            if (item == null)
            {
                return(NotFound());
            }
            else
            {
                return(new ObjectResult(FeatureAPI.From(item)));
            }
        }
コード例 #5
0
        private async void featureList_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e)
        {
            ListView listView = sender as ListView;

            if (null == listView)
            {
                return;
            }

            long       featureId = (listView.SelectedItem as FeaturesAPI).id;
            FeatureAPI feature   = await Feature.Get(featureId);

            ((Frame)Parent).Navigate(
                typeof(Features.FeatureEdit),
                feature,
                new Windows.UI.Xaml.Media.Animation.DrillInNavigationTransitionInfo());
        }
コード例 #6
0
 protected override void OnNavigatedTo(NavigationEventArgs e)
 {
     if (e.Parameter != null)
     {
         feature = e.Parameter as FeatureAPI;
         long ID;
         long.TryParse(feature.id, out ID);
         if (ID > 0)
         {
             TextFeatureID.IsReadOnly = true;
         }
     }
     else
     {
         feature = new FeatureAPI();
     }
 }
コード例 #7
0
        public void FeatureTest3()
        {
            using (JobLoggerDbContext db = new JobLoggerDbContext())
            {
                long codeBranchId = db.CodeBranches.First().ID;

                FeatureAPI feature = GlobalCommon.NewFeature(7, "Feature Number 7");
                feature.Requirements.Add(GlobalCommon.NewRequirement(11, "Requirement Number 11"));
                feature.Requirements.Add(GlobalCommon.NewRequirement(12, "Requirement Number 12"));
                feature.Requirements[0].Tasks.Add(GlobalCommon.NewTask(17, "Task Number 17"));
                feature.Requirements[0].Tasks.Add(GlobalCommon.NewTask(18, "Task Number 18"));
                feature.Requirements[1].Tasks.Add(GlobalCommon.NewTask(19, "Task Number 19"));
                feature.Requirements[1].Tasks.Add(GlobalCommon.NewTask(20, "Task Number 20"));
                feature.Requirements[1].Tasks.Add(GlobalCommon.NewTask(21, "Task Number 21"));
                feature.Requirements[0].Comments.Add(new RequirementCommentAPI {
                    Comment = "Comment 1 for Requirement 11"
                });
                feature.Requirements[0].Comments.Add(new RequirementCommentAPI {
                    Comment = "Comment 2 for Requirement 11"
                });
                feature.Requirements[1].Comments.Add(new RequirementCommentAPI {
                    Comment = "Comment 1 for Requirement 12"
                });
                feature.Requirements[0].Tasks[0].Comments.Add(new TaskCommentAPI {
                    Comment = "Comment 1 for Task 11"
                });
                feature.Requirements[0].Tasks[0].Comments.Add(new TaskCommentAPI {
                    Comment = "Comment 2 for Task 11"
                });
                feature.Requirements[0].Tasks[0].Logs.Add(GlobalCommon.NewTaskLog(DateTime.Parse("4 Jul 2019 09:00")));
                feature.Requirements[0].Tasks[1].Logs.Add(GlobalCommon.NewTaskLog(DateTime.Parse("4 Jul 2019 11:00")));
                feature.Requirements[0].Tasks[0].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 1 for TaskLog 1 for Task 17"
                });
                feature.Requirements[0].Tasks[1].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 1 for TaskLog 1 for Task 18"
                });
                feature.Requirements[0].Tasks[0].Logs[0].CheckIns.Add(
                    GlobalCommon.NewCheckIn(3, DateTime.Parse("4 Jul 2019 10:45"), codeBranchId, feature.Requirements[0].Tasks[0].ID));

                feature = FeatureAPI.From(new FeatureBF(db).Create(FeatureAPI.To(feature)));

                FeatureAPI fetched = FeatureAPI.From(new FeatureBF(db).Get(7));
                CheckObjectCount(fetched, 2, 3, 5, 2, 2, 2, 1, 1);
            }
        }
コード例 #8
0
        public IActionResult Put(long id, [FromBody] FeatureAPI item)
        {
            if (item == null)
            {
                return(BadRequest());
            }

            try
            {
                Feature updateItem = new FeatureBF(DB).Update(FeatureAPI.To(item));

                return(new ObjectResult(FeatureAPI.From(updateItem)));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex));
            }
        }
コード例 #9
0
        public void FeatureTest1()
        {
            using (JobLoggerDbContext db = new JobLoggerDbContext())
            {
                FeatureAPI feature = GlobalCommon.NewFeature(5, "Feature Number 5");
                feature.Requirements.Add(GlobalCommon.NewRequirement(7, "Requirement Number 7"));
                feature.Requirements[0].Comments.Add(new RequirementCommentAPI {
                    Comment = "Comment Number 1"
                });
                feature.Requirements[0].Comments.Add(new RequirementCommentAPI {
                    Comment = "Comment Number 2"
                });
                feature.Requirements[0].Tasks.Add(GlobalCommon.NewTask(11, "Task Number 11"));
                feature.Requirements[0].Tasks[0].Comments.Add(new TaskCommentAPI {
                    Comment = "Comment Number 1"
                });
                feature.Requirements[0].Tasks[0].Comments.Add(new TaskCommentAPI {
                    Comment = "Comment Number 2"
                });
                feature.Requirements[0].Tasks[0].Logs.Add(GlobalCommon.NewTaskLog(DateTime.Parse("1 Jan 2019 09:00")));
                feature.Requirements[0].Tasks[0].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "TaskLog Comment Number 1"
                });
                feature.Requirements[0].Tasks[0].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "TaskLog Comment Number 2"
                });
                feature.Requirements.Add(GlobalCommon.NewRequirement(8, "Requirement Number 8"));

                Assert.IsTrue(feature.IsNew);
                Assert.IsTrue(feature.Requirements[0].IsNew);
                Assert.IsTrue(feature.Requirements[1].IsNew);
                Assert.IsTrue(feature.Requirements[0].Tasks[0].IsNew);

                feature = FeatureAPI.From(new FeatureBF(db).Create(FeatureAPI.To(feature)));
                Assert.IsFalse(feature.IsNew);
                Assert.IsFalse(feature.Requirements[0].IsNew);
                Assert.IsFalse(feature.Requirements[1].IsNew);
                Assert.IsFalse(feature.Requirements[0].Tasks[0].IsNew);

                FeatureAPI fetchedFeature = FeatureAPI.From(new FeatureBF(db).Get(5));

                CompareFeatureToFetchedFeature(feature, fetchedFeature);
            }
        }
コード例 #10
0
        public void FeatureTest2()
        {
            FeatureAPI feature = GlobalCommon.NewFeature(6, "Feature Number 6");

            using (JobLoggerDbContext db = new JobLoggerDbContext())
            {
                feature = FeatureAPI.From(new FeatureBF(db).Create(FeatureAPI.To(feature)));
                Assert.IsFalse(feature.IsNew);

                feature.Requirements.Add(GlobalCommon.NewRequirement(9, "Requirement Number 9"));
                feature.Requirements[0].Comments.Add(new RequirementCommentAPI {
                    Comment = "Comment 1 for Requirement 9"
                });
                feature.Requirements[0].Comments.Add(new RequirementCommentAPI {
                    Comment = "Comment 2 for Requirement 9"
                });
                feature.Requirements[0].Tasks.Add(GlobalCommon.NewTask(12, "Task Number 12"));
                feature.Requirements[0].Tasks[0].Comments.Add(new TaskCommentAPI {
                    Comment = "Comment 1 for Task 12"
                });
                feature.Requirements[0].Tasks[0].Comments.Add(new TaskCommentAPI {
                    Comment = "Comment 2 for Task 12"
                });
                feature.Requirements[0].Tasks[0].Logs.Add(GlobalCommon.NewTaskLog(DateTime.Parse("1 Jan 2019 09:00")));
                feature.Requirements[0].Tasks[0].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 1 for Time Log 1 for Task 12"
                });
                feature.Requirements[0].Tasks[0].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 2 for Time Log 1 for Task 12"
                });
                feature.Requirements[0].Tasks[0].Logs.Add(GlobalCommon.NewTaskLog(DateTime.Parse("1 Jan 2019 11:30")));
                feature.Requirements[0].Tasks[0].Logs[1].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 1 for Time Log 2 for Task 12"
                });
                feature.Requirements[0].Tasks[0].Logs[1].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 2 for Time Log 2 for Task 12"
                });
                feature.Requirements[0].Tasks.Add(GlobalCommon.NewTask(13, "Task Number 13"));
                feature.Requirements[0].Tasks[1].Comments.Add(new TaskCommentAPI {
                    Comment = "Comment 1 for Task 13"
                });
                feature.Requirements[0].Tasks[1].Logs.Add(GlobalCommon.NewTaskLog(DateTime.Parse("1 Jan 2019 14:00")));
                feature.Requirements[0].Tasks[1].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 1 for Time Log for Task 13"
                });
                feature.Requirements[0].Tasks[1].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 2 for Time Log for Task 13"
                });
                feature.Requirements[0].Tasks.Add(GlobalCommon.NewTask(14, "Task Number 14"));
                feature.Requirements[0].Tasks[2].Comments.Add(new TaskCommentAPI {
                    Comment = "Comment 1 for Task 14"
                });
                feature.Requirements[0].Tasks[2].Logs.Add(GlobalCommon.NewTaskLog(DateTime.Parse("2 Jan 2019 09:00")));
                feature.Requirements[0].Tasks[2].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 1 for Time Log for Task 14"
                });
                feature.Requirements[0].Tasks[2].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 2 for Time Log for Task 14"
                });
                feature.Requirements[0].Tasks[2].Logs.Add(GlobalCommon.NewTaskLog(DateTime.Parse("2 Jan 2019 11:00")));
                feature.Requirements[0].Tasks[2].Logs[1].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 1 for Time Log 2 for Task 14"
                });
                feature.Requirements[0].Tasks[2].Logs[1].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 2 for Time Log 2 for Task 14"
                });

                feature = FeatureAPI.From(new FeatureBF(db).Update(FeatureAPI.To(feature)));
                CheckObjectCount(feature, 1, 2, 3, 4, 5, 10, 0, 0);
                Assert.IsFalse(feature.Requirements[0].IsNew);

                feature.Requirements.Add(GlobalCommon.NewRequirement(10, "equirement Number 10"));
                feature.Requirements[1].Comments.Add(new RequirementCommentAPI {
                    Comment = "Comment for Requirement Number 10"
                });
                feature.Requirements[1].Tasks.Add(GlobalCommon.NewTask(15, "Task Number 15"));
                feature.Requirements[1].Tasks[0].Comments.Add(new TaskCommentAPI {
                    Comment = "Task Comment for Task 15"
                });
                feature.Requirements[1].Tasks[0].Logs.Add(GlobalCommon.NewTaskLog(DateTime.Parse("3 Jan 2019 09:00")));
                feature.Requirements[1].Tasks[0].Logs[0].Comments.Add(new TaskLogCommentAPI {
                    Comment = "Comment 1 for Task 1 for Task Number 15"
                });

                feature = FeatureAPI.From(new FeatureBF(db).Update(FeatureAPI.To(feature)));

                FeatureAPI fetchedFeature = FeatureAPI.From(new FeatureBF(db).Get(6));
                CheckObjectCount(feature, 2, 3, 4, 5, 6, 11, 0, 0);

                feature.Requirements[0].Comments.Add(new RequirementCommentAPI {
                    Comment = "Comment 3 for Requirement 9"
                });
                feature.Requirements[0].Title = "Updated Requirement Number 9";
                feature.Requirements[0].Comments[0].Comment = "Updated Comment for Requirement Number 9";
                feature = FeatureAPI.From(new FeatureBF(db).Update(FeatureAPI.To(feature)));

                fetchedFeature = FeatureAPI.From(new FeatureBF(db).Get(6));
                CheckObjectCount(feature, 2, 4, 4, 5, 6, 11, 0, 0);
                Assert.AreEqual("Comment 3 for Requirement 9", fetchedFeature.Requirements[0].Comments[2].Comment);
                Assert.AreEqual("Updated Requirement Number 9", fetchedFeature.Requirements[0].Title);
                Assert.AreEqual("Updated Comment for Requirement Number 9", fetchedFeature.Requirements[0].Comments[0].Comment);

                feature.Requirements[1].Tasks.Add(new TaskAPI
                {
                    ID       = 16,
                    Title    = "Bug Number 16",
                    IsActive = true,
                    TaskType = TaskType.Bug,
                    IsNew    = true
                });

                feature = FeatureAPI.From(new FeatureBF(db).Update(FeatureAPI.To(feature)));

                fetchedFeature = FeatureAPI.From(new FeatureBF(db).Get(6));
                CheckObjectCount(feature, 2, 4, 5, 5, 6, 11, 0, 0);
                CheckObjectCount(fetchedFeature, 2, 4, 5, 5, 6, 11, 0, 0);

                feature.Requirements[1].Tasks[1].Comments = new List <TaskCommentAPI>
                {
                    new TaskCommentAPI {
                        Comment = "Comment 1 for Bug 16"
                    },
                    new TaskCommentAPI {
                        Comment = "Comment 2 for Bug 16"
                    }
                };


                feature.Requirements[1].Tasks[1].Logs = new List <TaskLogAPI>
                {
                    new TaskLogAPI
                    {
                        LogDate     = DateTime.Parse("2 Jan 2019"),
                        StartTime   = TimeSpan.Parse("09:00"),
                        EndTime     = TimeSpan.Parse("12:00"),
                        Description = "Task log 1 for Bug 16",
                        Comments    = new List <TaskLogCommentAPI>
                        {
                            new TaskLogCommentAPI {
                                Comment = "Comment for Log 1 of Bug 16"
                            }
                        }
                    },
                    new TaskLogAPI
                    {
                        LogDate     = DateTime.Parse("2 Jan 2019"),
                        StartTime   = TimeSpan.Parse("13:00"),
                        EndTime     = TimeSpan.Parse("15:00"),
                        Description = "Task log 2 for Bug 16",
                        Comments    = new List <TaskLogCommentAPI>
                        {
                            new TaskLogCommentAPI {
                                Comment = "Comment for Log 2 of Bug 16"
                            }
                        },
                        CheckIns = new List <CheckInAPI>
                        {
                            new CheckInAPI
                            {
                                ID           = 2,
                                CheckInTime  = DateTime.Parse("2 Jan 2019 14:34"),
                                CodeBranchID = db.CodeBranches.Where(c => c.Name == "Code Branch 1").Single().ID,
                                Comment      = "CheckIn Number 2",
                                IsNew        = true,
                                TaskCheckIns = new List <TaskCheckInAPI>
                                {
                                    new TaskCheckInAPI {
                                        TaskID = feature.Requirements[1].Tasks[1].ID
                                    }
                                }
                            }
                        }
                    }
                };

                feature = FeatureAPI.From(new FeatureBF(db).Update(FeatureAPI.To(feature)));

                fetchedFeature = FeatureAPI.From(new FeatureBF(db).Get(6));
                CheckObjectCount(feature, 2, 4, 5, 7, 8, 13, 1, 1);
                CheckObjectCount(fetchedFeature, 2, 4, 5, 7, 8, 13, 1, 1);
            }
        }
コード例 #11
0
        private void CompareFeatureToFetchedFeature(FeatureAPI feature, FeatureAPI fetchedFeature)
        {
            Assert.AreEqual(feature.Title, fetchedFeature.Title);
            Assert.AreEqual(feature.Status, fetchedFeature.Status);
            Assert.AreEqual(2, fetchedFeature.Requirements.Count);
            for (int i = 0; i < 2; i++)     //  Requirements
            {
                int j = feature.Requirements[i]?.Comments?.Count ?? 0;
                if (j > 0)
                {
                    Assert.AreEqual(j, fetchedFeature.Requirements[i].Comments.Count);
                    for (int k = 0; k < j; k++)     //  RequirementComments
                    {
                        Assert.AreEqual(feature.Requirements[i].Comments[k].Comment,
                                        fetchedFeature.Requirements[i].Comments[k].Comment);
                    }
                }
                j = feature.Requirements[i]?.Tasks?.Count ?? 0;
                if (j > 0)
                {
                    Assert.AreEqual(j, fetchedFeature.Requirements[i].Tasks.Count);
                    for (int k = 0; k < j; k++)     //  Tasks
                    {
                        Assert.AreEqual(feature.Requirements[i].Tasks[k].IsActive,
                                        fetchedFeature.Requirements[i].Tasks[k].IsActive);
                        Assert.AreEqual(feature.Requirements[i].Tasks[k].TaskType,
                                        fetchedFeature.Requirements[i].Tasks[k].TaskType);
                        Assert.AreEqual(feature.Requirements[i].Tasks[k].Title,
                                        fetchedFeature.Requirements[i].Tasks[k].Title);

                        int l = feature.Requirements[i]?.Tasks[k]?.Comments?.Count ?? 0;
                        if (l > 0)
                        {
                            for (int m = 0; m < l; m++)     //  TaskComments
                            {
                                Assert.AreEqual(feature.Requirements[i].Tasks[k].Comments[m].Comment,
                                                fetchedFeature.Requirements[i].Tasks[k].Comments[m].Comment);
                            }
                        }

                        l = feature.Requirements[i]?.Tasks[k]?.Logs?.Count ?? 0;
                        if (l > 0)
                        {
                            for (int m = 0; m < l; m++)     //  TaskLogs
                            {
                                Assert.AreEqual(feature.Requirements[i].Tasks[k].Logs[m].Description,
                                                fetchedFeature.Requirements[i].Tasks[k].Logs[m].Description);
                                Assert.AreEqual(feature.Requirements[i].Tasks[k].Logs[m].EndTime,
                                                fetchedFeature.Requirements[i].Tasks[k].Logs[m].EndTime);
                                Assert.AreEqual(feature.Requirements[i].Tasks[k].Logs[m].LogDate,
                                                fetchedFeature.Requirements[i].Tasks[k].Logs[m].LogDate);
                                Assert.AreEqual(feature.Requirements[i].Tasks[k].Logs[m].StartTime,
                                                fetchedFeature.Requirements[i].Tasks[k].Logs[m].StartTime);

                                int n = feature.Requirements[i].Tasks[k].Logs[m]?.Comments?.Count ?? 0;
                                if (n > 0)
                                {
                                    for (int o = 0; o < n; o++)     //  TaskLogComments
                                    {
                                        Assert.AreEqual(feature.Requirements[i].Tasks[k].Logs[m].Comments[o].Comment,
                                                        fetchedFeature.Requirements[i].Tasks[k].Logs[m].Comments[o].Comment);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
コード例 #12
0
        private void CheckObjectCount(
            FeatureAPI feature,
            int requirementCount,
            int requirementCommentCount,
            int taskCount,
            int taskCommentCount,
            int taskLogCount,
            int taskLogCommentCount,
            int taskLogCheckInCount,
            int taskCheckinCount)
        {
            if (feature.Requirements != null)
            {
                foreach (var requirement in feature.Requirements)
                {
                    requirementCount--;
                    if (requirement.Comments != null)
                    {
                        foreach (var reqComment in requirement.Comments)
                        {
                            requirementCommentCount--;
                        }
                    }
                    if (requirement.Tasks != null)
                    {
                        foreach (var task in requirement.Tasks)
                        {
                            taskCount--;
                            if (task.Comments != null)
                            {
                                foreach (var taskComment in task.Comments)
                                {
                                    taskCommentCount--;
                                }
                            }
                            if (task.Logs != null)
                            {
                                foreach (var log in task.Logs)
                                {
                                    taskLogCount--;
                                    if (log.Comments != null)
                                    {
                                        foreach (var logComment in log.Comments)
                                        {
                                            taskLogCommentCount--;
                                        }
                                    }
                                    if (log.CheckIns != null)
                                    {
                                        foreach (var checkIn in log.CheckIns)
                                        {
                                            taskLogCheckInCount--;
                                        }
                                    }
                                }
                            }
                            if (task.CheckIns != null)
                            {
                                foreach (var taskCheckIn in task.CheckIns)
                                {
                                    taskCheckinCount--;
                                }
                            }
                        }
                    }
                }
            }

            Assert.AreEqual(0, requirementCount, "<1> Requirement count is incorrect");
            Assert.AreEqual(0, requirementCommentCount, "<2> Requriement comment count is incorrect");
            Assert.AreEqual(0, taskCount, "<3> Task count is incorrect");
            Assert.AreEqual(0, taskCommentCount, "<4> Task comment count is incorrect");
            Assert.AreEqual(0, taskLogCount, "<5> Task log count is incorrect");
            Assert.AreEqual(0, taskLogCommentCount, "<6> Log comment count is incorrect");
            Assert.AreEqual(0, taskLogCheckInCount, "<7> Check In count is incorrect");
            Assert.AreEqual(0, taskCheckinCount, "<8> Checkin count is incorrect");
        }