示例#1
0
        public ActionResult EditGroupTest(int groupInfoId, int?id)
        {
            var groupTest = new GroupTest();

            groupTest.TestPassRule = new TestPassRule();
            var modules        = new List <TestModule>();
            var modulePercents = new Dictionary <int, int>();

            if (id.HasValue)
            {
                GroupTestService.LoadWith(x => x.Test, x => x.TestPassRule);
                groupTest      = GroupTestService.GetByPK(id.Value);
                modulePercents = EntityUtils.GetModulePercents(groupTest.TestPassRule);
                modules        = TestModuleService.GetForTest(groupTest.TestId).ToList();
            }
            else
            {
                var groupId = GetGroupIdForInfo(groupInfoId);
                var group   = GroupService.GetByPK(groupId);
                groupTest.GroupInfoId = groupInfoId;
                groupTest.DateBegin   = group.DateBeg ?? DateTime.Now;
                groupTest.DateEnd     = group.DateEnd ?? DateTime.Now;
            }
            var model = new GroupTestEditVM {
                GroupTest      = groupTest,
                Modules        = modules,
                ModulePercents = modulePercents,
            };

            return(BaseView(new PagePart(new GroupTestEditView().Init(model, Url))));
        }
示例#2
0
        public ActionResult Result(int userTestId)
        {
            UserTestService
            .LoadWith(c => c.Load(x => x.Test, x => x.TestPassRule));
            var userTest = UserTestService.GetByPK(userTestId);

            if (userTest == null)
            {
                return(null);
            }
            var isEnglishTest = TestRecomendations.IsEnglishTest(userTest.TestId);
            var courseTCs     = RecomendCourseTCs(userTest);

            var courseTC = userTest.Test.CourseTCSplitList.FirstOrDefault();
            var isTrack  = !courseTC.IsEmpty() && CourseService.IsTrack(courseTC);


            var courses    = CourseService.GetCourseLinkList(courseTCs).ToList();
            var modules    = TestModuleService.GetForTest(userTest.TestId).ToList();
            var courseName = DictionaryUtils.GetValueNotDefaultKey(
                CourseService.GetAllActiveCourseNames(), userTest.Course_TC);
            var model = new TestResultVM {
                UserTest        = userTest,
                RecCourses      = courses,
                IsOwned         = User != null && User.UserID == userTest.UserId,
                IsPrivatePerson = User != null && !User.IsCompany,
                Modules         = modules,
                IsTrack         = isTrack,
                Stats           = EntityUtils.GetStats(userTest),
                IsEnglish       = isEnglishTest,
                CourseName      = courseName
            };

            return(BaseView(new PagePart(PartialViewNames.Result, model)));
        }
示例#3
0
        public ActionResult GetModulesAuto(int testId, string term)
        {
            term = term ?? string.Empty;
            var list = TestModuleService.GetAll(x => x.TestId == testId && x.Name.Contains(term))
                       .Select(x => Select2VM.Item(x.Id, x.Name));

            return(Json(new Select2VM(list), JsonRequestBehavior.AllowGet));
        }
示例#4
0
        public ActionResult DeleteModule(int?id)
        {
            TestModuleService.EnableTracking();
            var module = TestModuleService.GetByPK(id.Value);

            EditTestPermission(module.TestId);
            TestModuleService.DeleteAndSubmit(module);
            return(Json("ok"));
        }
示例#5
0
        public ActionResult GetModules(int testId, AjaxGridRequest model)
        {
            var list = TestModuleService
                       .GetAll(x => x.TestId == testId).Select(x => new { x.Id, x.Name }).ToPagedList(model.Page - 1, model.Rows);

            return(JsonGet(new GridData(list.PageCount,
                                        model.Page,
                                        list.Count,
                                        list)));
        }
示例#6
0
        public ActionResult EditTest(int?id)
        {
            var        test            = new Test();
            AjaxGridVM modulesModel    = null;
            AjaxGridVM moduleSetsModel = null;
            AjaxGridVM questionsModel  = null;
            var        modules         = new List <TestModule>();
            var        modulePercents  = new Dictionary <int, int>();

            if (id.HasValue)
            {
                TestService.LoadWith(x => x.TestPassRule);
                test = TestService.GetByPK(id);
                EditTestPermission(test.Id);
                modulesModel = new AjaxGridVM {
                    GetListUrl = Url.Action <TestEditController>(c => c.GetModules(id.Value, null)),
                    EditUrl    = Url.Action <TestEditController>(c => c.EditModule(id.Value, null)),
                    DeleteUrl  = Url.Action <TestEditController>(c => c.DeleteModule(null)),
                    Caption    = "Модули"
                };
                AddColumns <TestModule>(modulesModel, x => x.Name);
                moduleSetsModel = new AjaxGridVM {
                    GetListUrl = Url.Action <TestEditController>(c => c.GetModuleSets(id.Value, null)),
                    EditUrl    = Url.Action <TestEditController>(c => c.EditModuleSet(id.Value, null)),
                    Caption    = "План тестирования"
                };
                AddColumns <TestModuleSet>(moduleSetsModel, x => x.Number);
                AddColumns <TestModuleSet>(moduleSetsModel, x => x.Description);
                questionsModel = new AjaxGridVM {
                    GetListUrl = Url.Action <TestEditController>(c => c.GetQuestions(id.Value, null)),
                    EditUrl    = Url.Action <TestEditController>(c => c.EditQuestion(id.Value, null)),
                    DeleteUrl  = Url.Action <TestEditController>(c => c.DeleteQuestion(null)),
                    Caption    = "Вопросы"
                };
                AddColumns <TestQuestion>(questionsModel, x => x.Description);
                modulePercents = EntityUtils.GetModulePercents(test.TestPassRule);
                modules        = TestModuleService.GetAll(x => x.TestId == id.Value).ToList();
            }
            test.TestPassRule = test.TestPassRule ?? new TestPassRule();

            var testEditVM = new TestEditVM {
                Test       = test,
                CourseName = CourseService.AllCourseLinks()
                             .GetValueOrDefault(test.CourseTCList).GetOrDefault(x => x.WebName),
                Modules        = modules,
                ModulePercents = modulePercents
            };

            return(BaseView(
                       new PagePart(new TestEditView().Init(testEditVM, Url)),
                       modulesModel == null ? null : new PagePart(PartialViewNames.AjaxList, modulesModel),
                       questionsModel == null ? null : new PagePart(PartialViewNames.AjaxList, questionsModel),
                       moduleSetsModel == null || test.CompanyId.HasValue ? null : new PagePart(PartialViewNames.AjaxList, moduleSetsModel)
                       ));
        }
示例#7
0
        public ActionResult ViewTest(int?id)
        {
            var test = TestService.GetFullTest(id.Value);

            ViewTestPermission(test);
            var model = new TestReadOnlyVM {
                Test    = test,
                Modules = TestModuleService.GetForTest(id.Value).ToList(),
                Checker = EmployeeService.AllEmployees().GetValueOrDefault(test.Checker_TC)
            };

            return(BaseViewWithModel(new TestReadOnlyView(), model));
        }
示例#8
0
        public ActionResult EditModule(int testId, int?id)
        {
            var module = new TestModule();

            if (id.HasValue)
            {
                EditTestPermission(testId);
                module = TestModuleService.GetByPK(id.Value);
            }
            else
            {
                module.TestId = testId;
            }
            return(BaseView(
                       new PagePart(new ModuleEditView().Init(module, Url).Get().ToString())));
        }
示例#9
0
        public ActionResult EditTest(TestEditVM model)
        {
            SetUpdateDateAndLastChanger(model.Test);

            if (!LinqToSqlValidator.Validate(ModelState, model.Test))
            {
                return(ErrorJson());
            }
            TestService.EnableTracking();
            if (model.Test.Id == 0)
            {
                model.Test.Status    = TestStatus.Edit;
                model.Test.Author_TC = User.Employee_TC ?? Employees.Specweb;
                model.Test.CompanyId = User.CompanyID;
                EntityUtils.SetModulePercents(model.Test.TestPassRule, model.ModulePercents);
                TestService.InsertAndSubmit(model.Test);
                TestModuleService.EnableTracking();
                TestModuleService.CreateModulesFromCourse(model.Test);
                return(UrlJson(Url.Action <TestEditController>(c => c.EditTest(model.Test.Id))));
            }
            TestService.LoadWith(x => x.TestPassRule);
            var test        = TestService.GetByPK(model.Test.Id);
            var isNewCourse = test.CourseTCList != model.Test.CourseTCList;

            EditTestPermission(test.Id);
            test.Update(model.Test,
                        x => x.Description,
                        x => x.Name,
                        x => x.CourseTCList
                        );
            var newTestPassRule = model.Test.TestPassRule;

            test.TestPassRule.UpdateBy(newTestPassRule);
            EntityUtils.SetModulePercents(test.TestPassRule, model.ModulePercents);
            TestService.SubmitChanges();
            if (isNewCourse)
            {
                TestModuleService.EnableTracking();
                TestModuleService.CreateModulesFromCourse(model.Test);
            }
            return(Json("ok"));
        }
示例#10
0
 public ActionResult EditModule(TestModule model)
 {
     if (!LinqToSqlValidator.Validate(ModelState, model))
     {
         return(ErrorJson());
     }
     EditTestPermission(model.TestId);
     TestModuleService.EnableTracking();
     if (model.Id == 0)
     {
         TestModuleService.InsertAndSubmit(model);
         return(UrlJson(Url.TestEdit().Urls.EditModule(model.TestId, model.Id)));
     }
     else
     {
         var module = TestModuleService.GetByPK(model.Id);
         module.Update(model, x => x.Name);
         TestModuleService.SubmitChanges();
     }
     return(Json("ok"));
 }
示例#11
0
        public ActionResult EditModuleSet(int testId, int?id)
        {
            EditTestPermission(testId);
            var model          = new ModuleSetVM();
            var set            = new TestModuleSet();
            var modulePercents = new Dictionary <int, int>();

            set.TestPassRule = new TestPassRule();
            if (id.HasValue)
            {
                TestModuleSetService.LoadWith(x => x.TestPassRule);
                set            = TestModuleSetService.GetByPK(id.Value);
                modulePercents = EntityUtils.GetModulePercents(set.TestPassRule);
            }
            else
            {
                set.TestId = testId;
                set.Number = (short)(1 + MaxModuleSetNumber(testId));
            }
            model.ModulePercents = modulePercents;
            model.ModuleSet      = set;
            model.Modules        = TestModuleService.GetForTest(testId).ToList();
            return(BaseViewWithModel(new ModuleSetEditView(), model));
        }