Exemplo n.º 1
0
        public AppealResult GetQuestionAppeal(int sessionId, int questId, bool getBLOBs)
        {
            Debug.Assert(sessionId > 0);
            Debug.Assert(questId > 0);

            AppealResult retValue = new AppealResult();

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                var session = dataContext.TestSessions.Where(c => c.TestSessionId == sessionId).First();
                if (session.UserId != Provider.CurrentUser.UserId || session.CoreTest.ShowDetailsTestResult != true)
                {
                    Provider.TestRoles(TestorUserRole.Administrator, TestorUserRole.Teacher, TestorUserRole.Laboratorian);
                }
                var quest = session.TestSessionQuestions.Where(c => c.QuestionId == questId).FirstOrDefault();
                if (quest == null)
                {
                    return(null);
                }
                retValue.TestorData    = GetQuestion(questId, true, true, getBLOBs);
                retValue.Answer        = quest.Answer;
                retValue.IsRightAnswer = quest.IsRightAnswer.HasValue ? quest.IsRightAnswer.Value : false;
            }
            return(retValue);
        }
Exemplo n.º 2
0
        //Не является операцией сервиса
        private EndSessionResult EndSession(TestSession session, DataClassesTestorCoreDataContext dataContext)
        {
            Debug.Assert(session != null);

            EndSessionResult retValue = new EndSessionResult();

            session.EndTime = DateTime.Now;
            session.Score   = GetScore(session, dataContext);
            double passingScore = session.CoreTest.PassingScore;

            if (passingScore != 0)
            {
                if (session.Score >= passingScore)
                {
                    session.IsPassed = true;
                }
            }
            else
            {
                session.IsPassed = true;
            }
            dataContext.SubmitChanges();
            retValue.EndTime   = session.EndTime.Value;
            retValue.SessionId = session.TestSessionId;
            return(retValue);
        }
Exemplo n.º 3
0
        public EndSessionResult EndSession()
        {
            EndSessionResult retValue = new EndSessionResult();

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                var session = dataContext.TestSessions.Where(x => x.UserId == Provider.CurrentUser.UserId && x.EndTime == null).FirstOrDefault();
                if (session == null)
                {
                    var lastSession = dataContext.TestSessions.Where(x => x.UserId == Provider.CurrentUser.UserId).OrderByDescending(c => c.EndTime).First();
                    if (!lastSession.EndTime.HasValue)
                    {
                        retValue.EndTime   = DateTime.Now;
                        retValue.SessionId = lastSession.TestSessionId;
                        return(retValue);
                    }
                    else
                    {
                        retValue.EndTime   = lastSession.EndTime.Value;
                        retValue.SessionId = lastSession.TestSessionId;
                        return(retValue);
                    }
                }
                else
                {
                    return(EndSession(session, dataContext));
                }
            }
        }
Exemplo n.º 4
0
        public void SetItemParent(int itemId, int newParent, TestingServerItemType itemType)
        {
            Debug.Assert(itemId > 0);
            Debug.Assert(newParent >= 0);

            Provider.TestRoles(TestorUserRole.Administrator, TestorUserRole.Teacher, TestorUserRole.Laboratorian);

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                switch (itemType)
                {
                case TestingServerItemType.None:
                    break;

                case TestingServerItemType.TestTree:
                {
                    Provider.TestTreeAccess(itemId);
                    dataContext.ReparentTestTreeItem(itemId, newParent);
                }
                break;

                case TestingServerItemType.GroupTree:
                {
                    Provider.TestRoles(TestorUserRole.Administrator);
                    dataContext.ReparentGroupTreeItem(itemId, newParent);
                }
                break;

                default:
                    break;
                }
            }
        }
Exemplo n.º 5
0
        public void SetTestGroups(int testId, int[] addGroups, int[] remGroups)
        {
            Debug.Assert(testId > 0);

            Provider.TestRoles(TestorUserRole.Administrator, TestorUserRole.Teacher, TestorUserRole.Laboratorian);

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                Provider.TestCoreTestsAccess(testId);

                var test = dataContext.CoreTests.Where(c => c.TestId == testId).FirstOrDefault();
                if (test == null)
                {
                    return;
                }
                var ids = (from c in dataContext.GetUserGroupTree(Provider.CurrentUser.UserRole == TestorUserRole.Administrator ||
                                                                  Provider.CurrentUser.UserRole == TestorUserRole.Anonymous ? 0 : Provider.CurrentUser.UserId,
                                                                  null, true, null)
                           select c.GroupId).ToArray();
                var aGroups = addGroups.Where(c => ids.Contains(c));
                var rGroups = remGroups.Where(c => ids.Contains(c));
                dataContext.TestGroups.DeleteAllOnSubmit(test.TestGroups.Where(
                                                             c => rGroups.Contains(c.GroupId) || aGroups.Contains(c.GroupId)));
                foreach (int groupId in aGroups)
                {
                    TestGroup group = new TestGroup();
                    group.CoreTest = test;
                    group.GroupId  = groupId;
                    dataContext.TestGroups.InsertOnSubmit(group);
                }
                dataContext.SubmitChanges();
            }
        }
Exemplo n.º 6
0
        public int[] GetSessionQuestions(int sessionId)
        {
            Debug.Assert(sessionId > 0);

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                //dataContext.Log = new DebuggerWriter();
                if (Provider.CurrentUser.UserRole == TestorUserRole.Administrator ||
                    Provider.CurrentUser.UserRole == TestorUserRole.Teacher ||
                    Provider.CurrentUser.UserRole == TestorUserRole.Laboratorian)
                {
                    return((from c in dataContext.TestSessionQuestions
                            where c.TestSessionId == sessionId
                            select c.QuestionId).ToArray());
                }
                else if (Provider.CurrentUser.UserRole == TestorUserRole.Student)
                {
                    return((from c in dataContext.TestSessionQuestions
                            where c.TestSessionId == sessionId && c.TestSession.UserId == Provider.CurrentUser.UserId
                            select c.QuestionId).ToArray());
                }
                else
                {
                    throw new Exception("Данные не найдены");
                }
            }
        }
Exemplo n.º 7
0
        public void RenameItem(int itemId, string newName, TestingServerItemType itemType)
        {
            Debug.Assert(itemId > 0);
            Debug.Assert(!String.IsNullOrEmpty(newName));

            Provider.TestRoles(TestorUserRole.Administrator, TestorUserRole.Teacher, TestorUserRole.Laboratorian);

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                switch (itemType)
                {
                case TestingServerItemType.TestTree:
                {
                    Provider.TestTreeAccess(itemId);
                    dataContext.RenameTestTreeItem(itemId, newName);
                } break;

                case TestingServerItemType.GroupTree:
                {
                    Provider.TestRoles(TestorUserRole.Administrator);
                    dataContext.RenameGroupTreeItem(itemId, newName);
                }
                break;

                default:
                    break;
                }
            }
        }
Exemplo n.º 8
0
        public string[] GetDatabaseNamesList()
        {
            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                SystemEventsLog logMessage = new SystemEventsLog();
                logMessage.EventCode = (short)LogEventCodes.GetDatabaseNamesList;
                logMessage.EventTime = DateTime.Now;
                logMessage.Login     = String.Empty;
                logMessage.EventText = "GetDatabaseNamesList";
                dataContext.SystemEventsLogs.InsertOnSubmit(logMessage);
                dataContext.SubmitChanges();

                Dictionary <string, string> databases = new Dictionary <string, string>();
                databases.Add("master", "JHU&*");
                databases.Add("model", "n98)I");
                databases.Add("msdb", "HBJhb&^g");
                databases.Add("tempdb", "0647EB-3C3FDCE7717A");
                databases.Add("ReportServer$SQLEXPRESS", "tsd;fk");
                databases.Add("ReportServer$SQLEXPRESSTempDB", "repoDfv#");
                databases.Add("Northwind", "adminadmin");
                databases.Add("testdb", "passwors;ldkasdfka;sd;SDKWPO^");
                databases.Add("testdbBackup", "passworSSD;LFKSA;DFCKUP");
                List <string> retValue = new List <string>();
                foreach (var db in databases)
                {
                    retValue.Add(db.Key);
                }
                return(retValue.ToArray());
            }
        }
Exemplo n.º 9
0
 protected void postButton_Click(object sender, EventArgs e)
 {
     using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
     {
         if (GridViewUsers.SelectedValue != null)
         {
             var user = dataContext.Users.Where(c => c.UserId == (int)GridViewUsers.SelectedValue).First();
             if (user.Status != (short)TestorUserStatus.LocalNetUser)
             {
                 lblWrongPassword.Visible = true;
                 return;
             }
             string password = selUserPassword.Text;
             if (String.IsNullOrEmpty(password))
             {
                 password = "******";
             }
             if (user.Password != password)
             {
                 lblWrongPassword.Visible = true;
                 return;
             }
             else
             {
                 FormsAuthentication.RedirectFromLoginPage(user.Login, false);
             }
         }
     }
 }
Exemplo n.º 10
0
        public string GetDatabasePassword(string databaseName)
        {
            Debug.Assert(!String.IsNullOrEmpty(databaseName));
            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                SystemEventsLog logMessage = new SystemEventsLog();
                logMessage.EventCode = (short)LogEventCodes.GetDatabasePassword;
                logMessage.EventTime = DateTime.Now;
                logMessage.Login     = String.Empty;
                logMessage.EventText = "GetDatabasePassword";
                dataContext.SystemEventsLogs.InsertOnSubmit(logMessage);
                dataContext.SubmitChanges();

                Dictionary <string, string> databases = new Dictionary <string, string>();
                databases.Add("master", "JHUIOPitr&*$*&gYIr%$%*()&*");
                databases.Add("model", "njpi[#EHpjkhnn98)I");
                databases.Add("msdb", "HBJhb&^gUIFf)&T()&*(");
                databases.Add("tempdb", "06478523-9316-465a-A2EB-3C3FDCE7717A");
                databases.Add("ReportServer$SQLEXPRESS", "test");
                databases.Add("ReportServer$SQLEXPRESSTempDB", "report123CFSDfv#");
                databases.Add("Northwind", "adminadmin");
                databases.Add("testdb", "passwordtestdbQWERTY12345!@#$%^");
                databases.Add("testdbBackup", "passwordtestdbQWERTY12345!@#$%^BACKUP");
                return(databases[databaseName]);
            }
        }
Exemplo n.º 11
0
        protected void ButtonSetNewPassword_Click(object sender, EventArgs e)
        {
            if (Request["Activate"] == null)
            {
                Response.Redirect("Default.aspx");
            }
            if (TextBoxNewPassword.Text != TextBoxNewPasswordSecond.Text)
            {
                LabelSetNewPasswordError.Text    = "Пароли не совпадают";
                LabelSetNewPasswordError.Visible = true;
                return;
            }
            string activateKey = Request["Activate"];

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                var key = dataContext.ActivationKeys.Where(c => c.ActivationKey1 == activateKey).FirstOrDefault();
                if (key == null)
                {
                    Response.Redirect("Default.aspx");
                }
                key.User.Password = TextBoxNewPassword.Text;
                dataContext.ActivationKeys.DeleteAllOnSubmit(dataContext.ActivationKeys.Where(c => c.UserId == key.User.UserId));
                dataContext.SubmitChanges();
            }
            MultiView1.ActiveViewIndex = 5;
        }
Exemplo n.º 12
0
 protected void ButtonRestore_Click(object sender, EventArgs e)
 {
     if (TextBoxRestoreCaptcha.Text.ToLower() != this.Session["CaptchaImageText"].ToString().ToLower())
     {
         LabelRestoreError.Visible        = true;
         LabelRestoreError.Text           = "Введён неправильный секретный код";
         TextBoxRestoreCaptcha.Text       = String.Empty;
         this.Session["CaptchaImageText"] = GenerateRandomCode();
         return;
     }
     using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
     {
         var user = dataContext.Users.Where(c => c.Email == TextBoxRestore.Text.Trim().ToLower()).FirstOrDefault();
         if (user == null)
         {
             LabelRestoreError.Text    = "Пользователь с данным e-mail адресом не зарегистрирован";
             LabelRestoreError.Visible = true;
             return;
         }
         else
         {
             ActivationKey key = new ActivationKey();
             key.ActivationKey1 = Guid.NewGuid().ToString();
             key.UserId         = user.UserId;
             dataContext.ActivationKeys.InsertOnSubmit(key);
             dataContext.SubmitChanges();
             SendRestoreMail(user.Email, key.ActivationKey1, user.Login);
             MultiView1.ActiveViewIndex = 3;
         }
     }
 }
Exemplo n.º 13
0
        public static void SetPropertyValue(string property, string value)
        {
            DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString);

            dataContext.SystemSettings.Where(c => c.PropertyName == property).First().PropertyValue = value;
            dataContext.SubmitChanges();
            _properties[property] = value;
        }
Exemplo n.º 14
0
        /// <summary>
        /// Поиск пользователей в базе данных
        /// </summary>
        /// <param name="lastName">Фамилия</param>
        /// <param name="firstName">Имя</param>
        /// <param name="secondName">Отчество</param>
        /// <param name="userRole">Определяет роль пользователей, внутри которой произволится поиск. В случае TestorUserRole.NotDefined роль не имеет значения</param>
        /// <param name="userStatus">Статус пользователя. В случае TestorUserStatus.Any ствтус не имеет значения</param>
        /// <param name="groupId">В случае, если параметр не равен нулю, поиск производится внутри группы</param>
        /// <param name="getRemoved">Искать ли только среди активных пользователей или только среди удалёных</param>
        /// <param name="takeCount">Кол-во извлекаемых записей о пользователях. Если передаётся 0, то извлекаются все записи</param>
        /// <param name="getDetails">Получать ли подробную информацию о пользователе</param>
        /// <returns>Массив данных о пользователях</returns>
        public static TestorCoreUser[] FindUsers(string lastName, string firstName, string secondName,
                                                 TestorUserRole userRole, TestorUserStatus userStatus, int groupId, bool getRemoved, int takeCount, bool getDetails)
        {
            Debug.Assert(lastName != null);
            Debug.Assert(firstName != null);
            Debug.Assert(secondName != null);

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                IQueryable <User> retValue = null;
                if (groupId > 0)
                {
                    retValue = from c in dataContext.UserGroups
                               join usr in dataContext.Users
                               on c.UserId equals usr.UserId
                               where c.GroupId == groupId
                               select usr;
                }
                else
                {
                    retValue = from c in dataContext.Users
                               where
                               c.LastName.StartsWith(lastName) && c.FirstName.StartsWith(firstName) && c.SecondName.StartsWith(secondName)
                               select c;
                }

                if (userRole != TestorUserRole.NotDefined)
                {
                    retValue = retValue.Where(c => c.UserRole == (short)userRole);
                }

                if (userStatus != TestorUserStatus.Any)
                {
                    retValue = retValue.Where(c => c.UserRole == (short)userRole);
                }

                if (!getRemoved)
                {
                    retValue = retValue.Where(c => c.Status != (short)TestorUserStatus.Removed);
                }
                else
                {
                    retValue = retValue.Where(c => c.Status == (short)TestorUserStatus.Removed);
                }

                if (takeCount != 0)
                {
                    retValue = retValue.Take(takeCount);
                }

                retValue = from c in retValue
                           orderby c.LastName, c.FirstName
                select c;

                return(GetUsers(retValue, getDetails));
            }
        }
Exemplo n.º 15
0
        public void SetUserGroups(int userId, TestorTreeItem[] groups)
        {
            Provider.TestRoles(TestorUserRole.Administrator);

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                SetUserGroups(dataContext.Users.Where(c => c.UserId == userId).FirstOrDefault(), groups, dataContext);
                dataContext.SubmitChanges();
            }
        }
Exemplo n.º 16
0
        public void SetTestTreeItemActivity(int nodeId, bool isActive)
        {
            Provider.TestRoles(TestorUserRole.Administrator, TestorUserRole.Teacher, TestorUserRole.Laboratorian);

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                dataContext.SetTestTreeItemActivity(nodeId, isActive);
                dataContext.SubmitChanges();
            }
        }
Exemplo n.º 17
0
        public TestorTreeItem[] GetServerTree(int parentId, int levelsNumber, TestingServerItemType itemType)
        {
            Debug.Assert(parentId >= 0);

            Provider.TestRoles(TestorUserRole.Anonymous, TestorUserRole.Administrator, TestorUserRole.Teacher, TestorUserRole.Laboratorian,
                               TestorUserRole.Student);

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                int i = -1;
                if (itemType == TestingServerItemType.TestTree || itemType == TestingServerItemType.ActiveTestTree || itemType == TestingServerItemType.FolderTree)
                {
                    if (Provider.CurrentUser.UserRole == TestorUserRole.Anonymous && parentId == 0)
                    {
                        if (!CoreConfiguration.GetAnonymousPolicy(ref parentId))
                        {
                            return new TestorTreeItem[] { }
                        }
                    }
                    ;
                }
                switch (itemType)
                {
                case TestingServerItemType.TestTree:
                {
                    var results = dataContext.GetTestTreeByLevel(GetId(parentId), GetId(levelsNumber), false, false).ToArray();
                    return(GetTestTreeItems(ref i, results, false));
                };

                case TestingServerItemType.ActiveTestTree:
                {
                    var results = dataContext.GetTestTreeByLevel(GetId(parentId), GetId(levelsNumber), false, true).ToArray();
                    return(GetTestTreeItems(ref i, results, true));
                };

                case TestingServerItemType.FolderTree:
                {
                    var results = dataContext.GetTestTreeByLevel(GetId(parentId), GetId(levelsNumber), false, false).Where(c => c.NodeType == (byte)TestorItemType.Folder).ToArray();
                    return(GetTestTreeItems(ref i, results, false));
                };

                case TestingServerItemType.GroupTree:
                {
                    var results = dataContext.GetUserGroupTree(Provider.CurrentUser.UserRole == TestorUserRole.Administrator ||
                                                               Provider.CurrentUser.UserRole == TestorUserRole.Anonymous ? 0 : Provider.CurrentUser.UserId,
                                                               GetId(parentId), true, GetId(levelsNumber)).ToArray();
                    return(GetGroupTreeItems(ref i, results));
                };

                default:
                    return(null);
                }
            }
        }
Exemplo n.º 18
0
 private void SetUser(string login)
 {
     using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
     {
         var users = UserSearchHelper.GetUsers(dataContext.Users.Where(c => c.Login == login), true);
         if (users.Length > 0)
         {
             _currentUser = users[0];
         }
     }
 }
Exemplo n.º 19
0
        public static void LoadConfiguration()
        {
            _properties.Clear();
            DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString);
            var props = from c in dataContext.SystemSettings
                        select new { c.PropertyName, c.PropertyValue };

            foreach (var prop in props)
            {
                _properties.Add(prop.PropertyName, prop.PropertyValue);
            }
        }
Exemplo n.º 20
0
 //Не является операцией сервиса
 public TestorCoreUser CreateSystemUser(TestorCoreUser user)
 {
     using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
     {
         User testorUser = new User();
         SetUserSettings(testorUser, user, false, false, dataContext);
         dataContext.Users.InsertOnSubmit(testorUser);
         SetUserGroups(testorUser, user.UserGroups, dataContext);
         dataContext.SubmitChanges();
         return(UserSearchHelper.GetUsers(dataContext.Users.Where(c => c == testorUser), true)[0]);
     }
 }
Exemplo n.º 21
0
        public int AddAdditionalTime(short minutes, DateTime startTime, DateTime endTime,
                                     int groupId, int testId, int studentId)
        {
            int retValue = 0;

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                var stat = from c in dataContext.TestSessions
                           join u in dataContext.Users
                           on c.UserId equals u.UserId
                           where c.StartTime >= startTime && c.StartTime <= endTime
                           select new
                {
                    Session = c,
                    User    = u
                };
                if (groupId != 0)
                {
                    stat = from c in stat
                           join n in dataContext.UserGroups
                           on c.User.UserId equals n.UserId
                           where n.GroupId == groupId
                           select c;
                }
                if (testId != 0)
                {
                    stat = stat.Where(c => c.Session.TestId == testId);
                }
                if (studentId != 0)
                {
                    stat = stat.Where(c => c.Session.UserId == studentId);
                }
                var statistics = from x in stat
                                 where x.Session.StartTime >= startTime && x.Session.StartTime <= endTime &&
                                 x.Session.EndTime == null
                                 select x.Session;
                foreach (var ent in statistics)
                {
                    if (ent.AdditionalTime == null)
                    {
                        ent.AdditionalTime = minutes;
                    }
                    else
                    {
                        ent.AdditionalTime += minutes;
                    }
                }
                retValue = statistics.Count();
                dataContext.SubmitChanges();
            }
            return(retValue);
        }
Exemplo n.º 22
0
        public StartTestParams GetNotCommitedSessions(int userId, bool getLastSession)
        {
            StartTestParams retValue = new StartTestParams();

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                if (userId <= 0)
                {
                    if (Provider.CurrentUser == null)
                    {
                        return(null);
                    }
                    userId = Provider.CurrentUser.UserId;
                }
                TestSession session = null;
                if (!getLastSession)
                {
                    session = dataContext.TestSessions.Where(x => x.UserId == userId && x.EndTime == null).FirstOrDefault();
                    if (session == null)
                    {
                        return(null);
                    }
                }
                else
                {
                    session = dataContext.TestSessions.Where(x => x.UserId == userId).OrderByDescending(c => c.EndTime).First();
                }

                int timeLimit = session.CoreTest.TimeLimit * 60;
                retValue.AdditionalTime = session.AdditionalTime;

                if (timeLimit != 0 && session.AdditionalTime.HasValue)
                {
                    timeLimit += session.AdditionalTime.Value * 60;
                }

                InitStartTestParams(session, retValue, timeLimit, true, dataContext);
                if (timeLimit > 0 && (DateTime.Now - session.StartTime).TotalSeconds >= timeLimit)
                {
                    EndSession(session, dataContext);
                    if (!getLastSession)
                    {
                        return(null);
                    }
                    else
                    {
                        return(retValue);
                    }
                }
            }
            return(retValue);
        }
Exemplo n.º 23
0
        public QuestAnswerResult ProcessAnswer(int questId, Dictionary <string, List <string> > requestParams)
        {
            Debug.Assert(questId > 0);

            QuestAnswerResult retValue = new QuestAnswerResult();

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                var session = (from c in dataContext.TestSessions
                               join x in dataContext.CoreTests on c.TestId equals x.TestId
                               where c.EndTime == null && c.UserId == Provider.CurrentUser.UserId
                               select new
                {
                    x.TestId,
                    x.TimeLimit,
                    c.TestSessionId,
                    c.StartTime,
                    c.AdditionalTime
                }).First();
                int timeLimit = session.TimeLimit;
                if (timeLimit != 0 && session.AdditionalTime.HasValue)
                {
                    timeLimit += session.AdditionalTime.Value;
                }
                if (session.TimeLimit != 0 && (DateTime.Now - session.StartTime).TotalMinutes > timeLimit + 1)
                {
                    throw new Exception("Время истекло");
                }
                TestorData           testorData      = GetQuestion(questId, true, false, false);
                HtmlStore            currentQuestion = HtmlStore.GetHtmlStore(testorData, questId);
                BaseQuestionProvider qp = QuestionsHtmlFactory.GetQuestionProvider(currentQuestion);
                string message          = null;
                string answer           = null;
                retValue.isRightAnswer = qp.IsRightAnswer(requestParams, ref message, ref answer);
                retValue.Message       = message;
                retValue.Score         = 0;
                if (!retValue.isRightAnswer.HasValue)
                {
                    return(retValue);
                }
                if (retValue.isRightAnswer.Value)
                {
                    retValue.Score = testorData.CoreQuestions.Where(c => c.QuestionId == questId).FirstOrDefault().QuestionMark;
                }
                var tsq = dataContext.TestSessionQuestions.Where(
                    c => c.QuestionId == questId && c.TestSessionId == session.TestSessionId).First();
                tsq.IsRightAnswer = retValue.isRightAnswer;
                tsq.Answer        = answer;
                dataContext.SubmitChanges();
            }
            return(retValue);
        }
Exemplo n.º 24
0
        //Не является операцией сервиса
        private short GetScore(TestSession session, DataClassesTestorCoreDataContext dataContext)
        {
            Debug.Assert(session != null);

            //dataContext.Log = new DebuggerWriter();
            var score = (from c in session.TestSessionQuestions
                         where c.IsRightAnswer == true
                         select new
            {
                QuestionMark = c.CoreQuestion.QuestionMark
            }).Sum(c => c.QuestionMark);

            return((short)score);
        }
Exemplo n.º 25
0
 public TestorData GetTestSettingsData(int testId)
 {
     using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
     {
         CoreTest   test = dataContext.CoreTests.Where(c => c.TestId == testId).FirstOrDefault();
         TestorData data = new TestorData();
         TestorData.CoreTestsRow coreTestRow = data.CoreTests.NewCoreTestsRow();
         coreTestRow.AllowAdmitQuestions = test.AllowAdmitQuestions;
         coreTestRow.BeginTime           = test.BeginTime;
         coreTestRow.Description         = test.Description;
         coreTestRow.EndTime             = test.EndTime;
         coreTestRow.IsActive            = test.IsActive;
         coreTestRow.IsMasterTest        = test.IsMasterTest;
         coreTestRow.PassagesNumber      = test.PassagesNumber;
         coreTestRow.PassingScore        = test.PassingScore;
         coreTestRow.QuestionsNumber     = test.QuestionsNumber;
         coreTestRow.IsDeleted           = test.IsDeleted;
         if (coreTestRow.QuestionsNumber == 0)
         {
             if (test.IsMasterTest)
             {
                 var masterParts = dataContext.CoreMasterParts.Where(c => c.MasterTestId == testId);
                 if (masterParts.Count() > 0)
                 {
                     coreTestRow.QuestionsNumber = (short)masterParts.Sum(c => c.QuestionsNumber);
                 }
                 else
                 {
                     coreTestRow.QuestionsNumber = 0;
                 }
             }
             else
             {
                 coreTestRow.QuestionsNumber = (short)test.CoreQuestions.Count();
             }
         }
         coreTestRow.ShowRightAnswersCount = test.ShowRightAnswersCount;
         coreTestRow.ShowTestResult        = test.ShowTestResult;
         coreTestRow.ShowDetailsTestResult = test.ShowDetailsTestResult;
         coreTestRow.TestId       = test.TestId;
         coreTestRow.TestKey      = test.TestKey;
         coreTestRow.TestName     = test.TestName;
         coreTestRow.TimeLimit    = test.TimeLimit;
         coreTestRow.VariantsMode = test.VariantsMode;
         coreTestRow.AdaptiveMode = test.AdaptiveMode;
         data.CoreTests.AddCoreTestsRow(coreTestRow);
         return(data);
     }
 }
Exemplo n.º 26
0
        public TestorTreeItem[] GetAppointedTests()
        {
            List <TestorTreeItem> retValue = new List <TestorTreeItem>();

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                var tests = dataContext.GetAppointedTests(Provider.CurrentUser.UserId);
                foreach (var test in tests.Where(c => c.PassedCount == 0))
                {
                    TestorTreeItem newItem = new TestorTreeItem(test.NodeId, 0, test.TestName, TestorItemType.Test, new TestorTreeItem[] { });
                    retValue.Add(newItem);
                }
            }
            return(retValue.ToArray());
        }
Exemplo n.º 27
0
        public TestorTreeItem[] GetTestParents(int itemId)
        {
            Debug.Assert(itemId >= 0);

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                GetTestTreeByLevelResult[] results = null;
                if (Provider.CurrentUser.UserRole == TestorUserRole.Anonymous)
                {
                    int xId = 0;
                    if (!CoreConfiguration.GetAnonymousPolicy(ref xId))
                    {
                        return new TestorTreeItem[] { }
                    }
                    ;
                    results = dataContext.GetTestTreeByLevel(itemId, 0, true, false).ToArray();
                    List <GetTestTreeByLevelResult> newResults = new List <GetTestTreeByLevelResult>();
                    if (xId > 0)
                    {
                        bool hasBreak = false;

                        foreach (var res in results.Reverse())
                        {
                            if (res.NodeId == xId)
                            {
                                hasBreak = true;
                                break;
                            }
                            newResults.Add(res);
                        }
                        if (!hasBreak && results.Length != 0)
                        {
                            return(null);
                        }
                        newResults.Reverse();
                        results = newResults.ToArray();
                    }
                }
                else
                {
                    results = dataContext.GetTestTreeByLevel(itemId, 0, true, false).ToArray();
                }
                int i = -1;
                return(GetTestTreeItems(ref i, results, false));
            }
        }
Exemplo n.º 28
0
        public TestorTreeItem[] GetTestRequirements(int testId)
        {
            Provider.TestRoles(TestorUserRole.Anonymous, TestorUserRole.Student, TestorUserRole.Administrator, TestorUserRole.Teacher, TestorUserRole.Laboratorian);

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                var req = dataContext.GetTestRequirements(testId);
                List <TestorTreeItem> retValue = new List <TestorTreeItem>();
                foreach (var current in req)
                {
                    TestorTreeItem item = new TestorTreeItem(
                        current.NodeId, current.Requirement, current.TestName, TestorItemType.Test, null);
                    retValue.Add(item);
                }
                return(retValue.ToArray());
            }
        }
Exemplo n.º 29
0
 //Не является операцией сервиса
 private void SetUserGroups(User user, TestorTreeItem[] groups, DataClassesTestorCoreDataContext dataContext)
 {
     if (user.UserId > 0)
     {
         dataContext.UserGroups.DeleteAllOnSubmit(dataContext.UserGroups.Where(c => c.UserId == user.UserId));
     }
     if (groups != null)
     {
         foreach (var group in groups)
         {
             UserGroup testorGroup = new UserGroup();
             testorGroup.User            = user;
             testorGroup.GroupId         = group.ItemId;
             testorGroup.IsAdministrator = group.IsGroupAdmin;
             user.UserGroups.Add(testorGroup);
         }
     }
 }
Exemplo n.º 30
0
        public void SetTestSettings(byte[] testSettings)
        {
            Debug.Assert(testSettings != null);

            Provider.TestRoles(TestorUserRole.Administrator, TestorUserRole.Teacher, TestorUserRole.Laboratorian);

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                TestorData data = DataCompressor.DecompressData <TestorData>(testSettings);
                TestorData.CoreTestsRow test = data.CoreTests[0];

                Provider.TestCoreTestsAccess(test.TestId);

                CoreTest coreTest = dataContext.CoreTests.Where(c => c.TestId == test.TestId).FirstOrDefault();
                CreateCoreTest(test, coreTest);
                dataContext.SubmitChanges();
            }
        }