예제 #1
0
        public BTask GetBTask(SubjectTheme theme, int num)
        {
            string fileName = subject.ToString() + "/" + theme.Num.ToString() + @"/b/" + num.ToString() + "/" + "task.txt";
            var    assets   = MRApplication.GetAssetManager();

            try
            {
                using (StreamReader reader = new  StreamReader(assets.Open(fileName))) {
                    string content = reader.ReadToEnd();

                    var        json     = JsonObject.Parse(content);
                    JsonObject jsonTask = json ["task"] as JsonObject;

                    var bTask = new BTask(num, theme, subject);
                    SetCommonTaskParams(jsonTask, bTask);


                    List <AVariant> variants = new List <AVariant> ();
                    bTask.Variant = jsonTask ["variant"];
                    return(bTask);
                }
            }
            catch (Exception e) {
                return(null);
            }
        }
예제 #2
0
        private string CreateTaskName(Task task, SubjectTheme theme)
        {
            string taskType = "b";

            if (task is ATask)
            {
                taskType = "a";
            }
            return(subject.ToString() + "/" + theme.Num + "/" + taskType + "/" + task.TaskNum);
        }
예제 #3
0
        private int GetTasksStatistic(SubjectTheme theme)
        {
            int answered = subjectRetriever.AnsweredTasksForTheme(theme);
            int overall  = subjectRetriever.OverallTasksForTheme(theme);

            if (overall == 0)
            {
                return(0);
            }
            return((int)(((float)answered) / overall * 100));
        }
        private int GetTaskStatistic(SubjectRetriever retriever, SubjectTheme theme, Task task)
        {
            var taskData = retriever.GetTaskDBData(task, theme);
            int answered = taskData.RightAttempts;
            int overall  = taskData.OverallAttempts;

            if (overall == 0)
            {
                return(0);
            }
            return((int)(((float)answered) / overall * 100));
        }
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            SetContentView(Resource.Layout.ChooseTrainingTasksLayout);

            Enum.TryParse <SubjectsEnumeration> (Intent.GetStringExtra("TestType"), out subjectType);
            themeNum          = Intent.GetIntExtra("ThemeNum", 1).ToString();
            subjectStringName = SubjectHelper.GetSubjectName(subjectType, this);
            theme             = (new ThemesRetriever(subjectType)).GetThemes.FirstOrDefault(x => x.Num == themeNum);

            taskButtonsLayout = FindViewById <LinearLayout> (Resource.Id.TasksLinearLayout);
            (FindViewById <TextView> (Resource.Id.ThemeName)).Text = theme.Name;
        }
예제 #6
0
        private void RetrieveSubjectTheme(string fileName)
        {
            themes = new List <SubjectTheme> ();
            AssetManager assets = MRApplication.GetAssetManager();

            using (StreamReader reader = new  StreamReader(assets.Open(fileName))) {
                string content = reader.ReadToEnd();

                var json = JsonObject.Parse(content);

                JsonArray themesJson = json ["Themes"] as JsonArray;
                foreach (JsonObject theme in themesJson)
                {
                    SubjectTheme newTheme = new SubjectTheme(theme ["Num"], theme ["Name"], theme ["InetLink"], theme ["LocalLink"]);
                    themes.Add(newTheme);
                }
            }
        }
예제 #7
0
        protected void SetParameters()
        {
            Enum.TryParse <SubjectsEnumeration> (Intent.GetStringExtra("TestType"), out subjectType);
            themeNum          = Intent.GetStringExtra("ThemeNum");
            currentTaskToShow = Intent.GetIntExtra("TaskNum", 0);
            subjectStringName = SubjectHelper.GetSubjectName(subjectType, this);
            subjectRetriever  = new SubjectRetriever(subjectType, ApplicationContext);
            theme             = subjectRetriever.GetThemeByNum(themeNum);
            tasks             = subjectRetriever.GetTasks(themeNum);

            taskImages = new Drawable[tasks.Count];

            isAnswered      = new List <bool> (tasks.Count);
            isRightAnswered = new List <bool> (tasks.Count);
            isShowAnswer    = new List <bool> (tasks.Count);
            for (int i = 0; i < tasks.Count; i++)
            {
                isAnswered.Add(false);
                isRightAnswered.Add(false);
                isShowAnswer.Add(false);
            }
        }
예제 #8
0
        public ATask GetATask(SubjectTheme theme, int num)
        {
            string fileName = subject.ToString() + "/" + theme.Num.ToString() + @"/a/" + num.ToString() + "/" + "task.txt";
            var    assets   = MRApplication.GetAssetManager();

            try
            {
                using (StreamReader reader = new  StreamReader(assets.Open(fileName))) {
                    string content = reader.ReadToEnd();

                    var        json     = JsonObject.Parse(content);
                    JsonObject jsonTask = json ["task"] as JsonObject;

                    var aTask = new ATask(num, theme, subject);
                    SetCommonTaskParams(jsonTask, aTask);

                    List <AVariant> variants     = new List <AVariant> ();
                    JsonArray       variantsJSON = jsonTask ["vs"] as JsonArray;
                    foreach (var variant in variantsJSON)
                    {
                        string   text       = variant ["txt"];
                        string   png        = variant ["png"];
                        bool     isRight    = Boolean.Parse(variant ["right"]);
                        AVariant newVariant = new AVariant()
                        {
                            ImageLink = png, IsRight = isRight, Text = text
                        };
                        variants.Add(newVariant);
                    }

                    aTask.Variants = variants;
                    return(aTask);
                }
            }
            catch (Exception e) {
                return(null);
            }
        }
예제 #9
0
        public int AnsweredTasksForTheme(SubjectTheme theme)
        {
            int answeredCount = 0;

            foreach (var task in GetTasks(theme.Num))
            {
                var        taskName = CreateTaskName(task, theme);
                TaskDBData dbTask   = DB.GetEntry(taskName);
                if (dbTask == null)
                {
                    DB.InsertEntry(new TaskDBData()
                    {
                        Name = taskName, OverallAttempts = 0, RightAttempts = 0
                    });
                    continue;
                }
                if (dbTask.RightAttempts > 0)
                {
                    answeredCount++;
                }
            }
            return(answeredCount);
        }
예제 #10
0
        public List <Type> GetTasksInfo(string themeNum)
        {
            SubjectTheme theme     = GetThemeByNum(themeNum);
            int          taskNum   = 1;
            var          tasksInfo = new List <Type> ();
            bool         taskExits = IsATaskExist(theme, taskNum);

            while (taskExits)
            {
                tasksInfo.Add(typeof(ATask));
                taskNum++;
                taskExits = IsATaskExist(theme, taskNum);
            }

            taskNum   = 1;
            taskExits = IsBTaskExist(theme, taskNum);
            while (taskExits)
            {
                tasksInfo.Add(typeof(BTask));
                taskNum++;
                taskExits = IsBTaskExist(theme, taskNum);
            }
            return(tasksInfo);
        }
예제 #11
0
        public TaskDBData GetTaskDBData(Task task, SubjectTheme theme)
        {
            string taskName = CreateTaskName(task, theme);

            return(DB.GetEntry(taskName));
        }
예제 #12
0
 public int OverallTasksForTheme(SubjectTheme theme)
 {
     return(GetATasksCount(theme.Num) + GetBTasksCount(theme.Num));
 }
예제 #13
0
        public bool IsBTaskExist(SubjectTheme theme, int num)
        {
            string fileName = subject.ToString() + "/" + theme.Num.ToString() + @"/b/" + num.ToString() + "/" + "task.txt";

            return(IsTaskExist(fileName));
        }