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); }
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); }
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)); }