예제 #1
0
        public ActionResult DeleteAttachedTestCase(string id, string testCaseId)
        {
            TestGroupRepository testGroupRepo = new TestGroupRepository();
            TestCaseRepository  testCaseRepo  = new TestCaseRepository();

            TestGroup testGroup = testGroupRepo.GetById(Guid.Parse(id));

            if (testGroup.TestCases != null && testGroup.TestCases.Count > 0)
            {
                foreach (var tempTestCase in testGroup.TestCases)
                {
                    if (tempTestCase.Id == Guid.Parse(testCaseId))
                    {
                        testGroup.TestCases.Remove(tempTestCase);
                        break;
                    }
                }

                testGroup.SkillDificulty = testGroup.CountSkillDificulty();
                testGroup.TimeDificulty  = testGroup.CountTimeDificulty();
                testGroupRepo.Update(testGroup);

                TestCase testCase = testCaseRepo.GetById(Guid.Parse(testCaseId));

                testCase.IsInGroup = false;
                testCaseRepo.Update(testCase);
            }

            return(RedirectToAction("EditTestGroup", "TestGroups", new { id = testGroup.Id.ToString() }));
        }
예제 #2
0
        public ActionResult DeleteTestGroupAll(IList <TestGroup> rows)
        {
            IList <Guid> testCasesId = new List <Guid>();

            foreach (var row in rows)
            {
                var       testGroupRepo = new TestGroupRepository();
                TestGroup testGroup     = testGroupRepo.GetById(row.Id);
                foreach (var testCase in testGroup.TestCases)
                {
                    testCase.IsInGroup = false;
                    testCasesId.Add(testCase.Id);
                }

                testGroupRepo.Update(testGroup);
                testGroupRepo.Delete(testGroup);
            }

            TestCaseRepository testCaseRepo = new TestCaseRepository();

            foreach (var id in testCasesId)
            {
                TestCase testCase = testCaseRepo.GetById(id);

                if (testCase.Evidences != null && testCase.Evidences.Count > 0)
                {
                    var evidenceRepo = new EvidenceRepository();
                    foreach (var evidence in testCase.Evidences)
                    {
                        System.IO.File.Delete(Server.MapPath("~/Uploads/" + evidence.Name + evidence.Extension));
                        evidenceRepo.Delete(evidence);
                    }
                }

                if (testCase.Reviews != null && testCase.Reviews.Count > 0)
                {
                    var reviewsRepo = new ReviewRepository();
                    foreach (var review in testCase.Reviews)
                    {
                        reviewsRepo.Delete(review);
                    }
                }

                testCaseRepo.Delete(testCase);
            }

            TempData["success"] = "Test group/s and tests was deleted!";

            return(View("CompanyTestGroups"));
        }
예제 #3
0
        public ActionResult DeleteTestGroup(IList <TestGroup> rows)
        {
            foreach (var row in rows)
            {
                var       testGroupRepo = new TestGroupRepository();
                TestGroup testGroup     = testGroupRepo.GetById(row.Id);
                foreach (var testCase in testGroup.TestCases)
                {
                    testCase.IsInGroup = false;
                }

                testGroupRepo.Update(testGroup);
                testGroupRepo.Delete(testGroup);
            }

            TempData["success"] = "Test group/s was deleted!";

            return(View("CompanyTestGroups"));
        }
예제 #4
0
        public ActionResult UpdateTestGroup(TestGroup testGroup, string data)
        {
            TestGroupRepository testGroupRepo = new TestGroupRepository();

            TestGroup oldTestGroup = testGroupRepo.GetById(testGroup.Id);

            if (string.IsNullOrEmpty(data) && oldTestGroup.TestCases.Count <= 0)
            {
                TempData["error"] = "At least one test case must be selected!";
                return(View("EditTestGroup", testGroup));
            }

            ModelState.Remove(nameof(TestGroup.TestCases));
            ModelState.Remove(nameof(TestGroup.Created));
            ModelState.Remove(nameof(TestGroup.Creator));
            ModelState.Remove(nameof(TestGroup.Rating));
            ModelState.Remove(nameof(TestGroup.TimeDificulty));
            ModelState.Remove(nameof(TestGroup.SkillDificulty));
            if (ModelState.IsValid)
            {
                var testCasesId = data.Split(',');
                TestCaseRepository testCaseRepo = new TestCaseRepository();

                IList <TestCase> testCases = new List <TestCase>();

                if (!testCasesId[0].IsNullOrEmpty())
                {
                    foreach (var testCaseId in testCasesId)
                    {
                        TestCase tempTestCase = testCaseRepo.GetByIdForCompanyNotInGroup(testGroup.Creator, Guid.Parse(testCaseId));
                        tempTestCase.IsInGroup = true;
                        oldTestGroup.TestCases.Add(tempTestCase);
                        testCases.Add(tempTestCase);
                    }
                }

                DateTime latestAvailability = oldTestGroup.TestCases.OrderByDescending(x => x.AvailableTo).First().AvailableTo;
                if (testGroup.AvailableTo < latestAvailability)
                {
                    testGroup.TestCases        = oldTestGroup.TestCases;
                    testGroup.RewardMultiplier = oldTestGroup.RewardMultiplier;

                    TempData["error"] = $"Available To must be equal or greater than availability of latest test case ({latestAvailability.ToShortDateString()})!";
                    return(View("EditTestGroup", testGroup));
                }

                oldTestGroup.SkillDificulty = oldTestGroup.CountSkillDificulty();
                oldTestGroup.TimeDificulty  = oldTestGroup.CountTimeDificulty();

                oldTestGroup.RewardMultiplier = (testGroup.RewardMultiplier + 100) / 100;

                oldTestGroup.Name        = testGroup.Name;
                oldTestGroup.AvailableTo = testGroup.AvailableTo;

                foreach (var testCase in testCases)
                {
                    testCaseRepo.Update(testCase);
                }

                testGroupRepo.Update(oldTestGroup);

                TempData["success"] = "Test group was edited";
            }
            else
            {
                return(View("CreateTestGroup"));
            }

            return(RedirectToAction("CompanyTestGroups"));
        }