예제 #1
0
        public Dictionary <string, string> GetTeachers(string department)
        {
            // путь к сохраненным результатам запроса.
            string savedData = "SavedData/teachers" + department + ".json";
            // коллекция объектов на основе JSON-ответа. Для дальнейшей работы ведь нужно не все, что есть в ответе от сервера.
            string json     = GetResponse(savedData, CistRequests.GetTeachers(department));
            var    teachers = JsonConverter.ParseResponse <JsonObjectCISTResponseTeacher[]>(json, "department", "teachers");

            var dictionary = teachers.Select(t => new { id = t.id, short_name = t.short_name }).ToDictionary(x => x.id, x => x.short_name);

            return(dictionary);
        }
예제 #2
0
        public Dictionary <string, string> GetDepartments(string facultyId)
        {
            // путь к сохраненным результатам запроса.
            string savedData = "SavedData/departments" + facultyId + ".json";
            // коллекция объектов на основе JSON-ответа. Для работы нужно не все.
            string json        = GetResponse(savedData, CistRequests.GetDepartments(facultyId));
            var    departments = JsonConverter.ParseResponse <JsonObjectCISTResponseDepartment[]>(json, "faculty", "departments");

            // словарь, созданный на основе коллекции объектов.
            var dictionary = departments.Select(d => new { id = d.id.ToString(), short_name = d.short_name }).ToDictionary(x => x.id, x => x.short_name);

            return(dictionary);
        }
예제 #3
0
        public Timetable GetTimetable(string teacherId, DateTime begin, DateTime end)
        {
            string json    = "";
            string utBegin = begin.ToUnixTimestamp().ToString();
            string utEnd   = end.ToUnixTimestamp().ToString();

            string savedData = "SavedData/timetable" + teacherId + utBegin + utEnd + ".json";

            json = GetResponse(savedData, CistRequests.GetTimeSheetRequestString(teacherId, utBegin, utEnd));

            // перевести на использование исключений.
            if (JsonIsError(json))
            {
                return(new Timetable(new Lesson[0], new SubjectDescription[0]));
            }

            var obj = Newtonsoft.Json.Linq.JObject.Parse(json);

            JsonObjectCISTResponseTSEvent[]   objEvents   = JsonConverter.GetEventsFromObject(obj);
            JsonObjectCISTResponseTSGroup[]   objGroups   = JsonConverter.GetGroupsFromObject(obj);
            JsonObjectCISTResponseTSSubject[] objSubjects = JsonConverter.GetSubjectsFromObject(obj);
            JsonObjectCISTResponseTSType[]    objTypes    = JsonConverter.GetTypesFromObject(obj);

            // получаем словарь всех групп
            Dictionary <int, string> groups = objGroups.ToDictionary(x => x.id, x => x.name);

            // получаем все возможные типы занятий.
            TimetableEventTypes[]    eventTypesAll         = objTypes.Select(type => new TimetableEventTypes(type.id, type.id_base, type.full_name)).ToArray();
            Dictionary <int, string> eventTypesBase        = eventTypesAll.Where(type => type.Id == type.IdBase).ToDictionary(x => x.Id, x => x.FullName);
            Dictionary <int, int>    eventTypesToBaseTypes = eventTypesAll.ToDictionary(x => x.Id, x => x.IdBase);

            // общие перечень предметов с их описанием, включающим список видов работ по этим дисциплинам.
            SubjectDescription[] subjectsDescription = objSubjects.Select(subj => new SubjectDescription(subj.title, subj.brief,
                                                                                                         subj.hours.Select(h => h.type).Distinct().Select(i => eventTypesBase[eventTypesToBaseTypes[i]]).ToArray <string>())).ToArray();

            Lesson[] timetableEvents = objEvents.Select(e => new Lesson(objSubjects.First(s => s.id == e.subject_id).title,
                                                                        eventTypesBase[eventTypesToBaseTypes[e.type]],
                                                                        ((long)e.start_time).FromUnixTimestamp(),
                                                                        ((long)e.end_time).FromUnixTimestamp(), e.number_pair,
                                                                        String.Concat(e.groups.Select(g => groups[g] + ", ").ToArray()))).ToArray();

            return(new Timetable(timetableEvents, subjectsDescription));
        }